Как изменить завершение истории bash, чтобы завершить то, что уже на линии?
Я нашел команду пару месяцев назад, которая сделала мою историю bash автозаполнения на том, что уже на линии, при нажатии стрелки вверх:
$ vim fi
Нажмите ↑
$ vim file.py
Я хотел бы настроить это на своем новом компьютере, потому что он сохраняет много времени, сохраняя большую историю. Проблема в том, что я не могу за всю жизнь помнить, где это было упомянуто, и чтение бесконечных bash ссылок и учебников, к сожалению, тоже не помогло.
Кто-нибудь знает команду?
Ответы
Ответ 1
Возможно, что-то вроде
# ~/.inputrc
"\e[A": history-search-backward
"\e[B": history-search-forward
или эквивалентно,
# ~/.bashrc
if [[ $- == *i* ]]
then
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'
fi
(оператор if проверяет интерактивный режим)
Обычно Up и Down привязаны к функциям Readline previous-history
и next-history
соответственно. Я предпочитаю привязывать PgUp/PgDn к этим функциям вместо замены нормальной работы Up/Down.
# ~/.inputrc
"\e[5~": history-search-backward
"\e[6~": history-search-forward
После того, как вы изменили ~/.inputrc
, перезапустите свою оболочку или используйте Ctrl + X, Ctrl + R, чтобы сообщить ей перечитать ~/.inputrc
.
Кстати, если вы ищете соответствующую документацию:
Bash использует Библиотека чтения GNU для командной строки оболочки и истории.
Ответ 2
Обновить .inputrc со следующим:
"\C-[OA": history-search-backward
"\C-[[A": history-search-backward
"\C-[OB": history-search-forward
"\C-[[B": history-search-forward
Ответ 3
С ohmyzsh используйте это в .zshrc:
bindkey '^[OA' history-search-backward
bindkey '^[OB' history-search-forward
Чтобы перезагрузить, source ~/.zshrc
или перезапустить терминал.
Источник: https://superuser.com/a/418299/71680
Ответ 4
Если set enable-keypad on
находится в вашем ~/.inputrc
как некоторая st (suckless simple terminal), пользователи могут знать, что клавиши со стрелками находятся в режиме клавиатуры. Ubuntu поставляется с этим полезным /usr/share/doc/bash/inputrc.arrows
:
# This file controls the behaviour of line input editing for
# programs that use the Gnu Readline library.
#
# Arrow keys in keypad mode
#
"\C-[OD" backward-char
"\C-[OC" forward-char
"\C-[OA" previous-history
"\C-[OB" next-history
#
# Arrow keys in ANSI mode
#
"\C-[[D" backward-char
"\C-[[C" forward-char
"\C-[[A" previous-history
"\C-[[B" next-history
#
# Arrow keys in 8 bit keypad mode
#
"\C-M-OD" backward-char
"\C-M-OC" forward-char
"\C-M-OA" previous-history
"\C-M-OB" next-history
#
# Arrow keys in 8 bit ANSI mode
#
"\C-M-[D" backward-char
"\C-M-[C" forward-char
"\C-M-[A" previous-history
"\C-M-[B" next-history
Итак, я не уверен, что вам понадобятся все, но это может не повредить вашему ~/.inputrc
:
# Arrow keys in keypad mode
"\C-[OA": history-search-backward
"\C-[OB": history-search-forward
"\C-[OC": forward-char
"\C-[OD": backward-char
# Arrow keys in ANSI mode
"\C-[[A": history-search-backward
"\C-[[B": history-search-forward
"\C-[[C": forward-char
"\C-[[D": backward-char
Это также по одной теме: Мои клавиши курсора не работают, а также этот xterm: специальные клавиши
Ответ 5
Возможно, вам потребуется завершить завершение bash.
Проверка
-
/etc/profile
-
/etc/bash.bashrc
-
~/.bashrc
чтобы увидеть, есть ли какой-либо из вышеперечисленных файлов source /etc/bash_completion
. то есть.
. /etc/bash_completion
Если /etc/bash___completion
не используется ни одним из вышеуказанных файлов, вам необходимо добавить его в один из них.
Если вы хотите, чтобы все bash пользователи на вашем компьютере имели завершение bash, источник /etc/bash_completion
из /etc/bash.bashrc
.
Если вам нужен только bash завершение, источник /etc/bash_completion
из вашего ~/.bashrc
.