Как изменить завершение истории bash, чтобы завершить то, что уже находится на линии?
Я нашел команду пару месяцев назад, которая сделала мою историю bash автоматически завершенной на том, что уже находится на линии при нажатии стрелки вверх:
$ vim fi
пресс ↑
$ vim file.py
Я хотел бы установить это на моем новом компьютере, потому что это экономит много времени при сохранении большой истории. Проблема в том, что я не могу за всю свою жизнь вспомнить, где это было упомянуто, и чтение бесконечных ссылок bash и учебников, к сожалению, не помогло любой.
кто-нибудь знает команду?
5 ответов:
наверное, что-то вроде
# ~/.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 проверяет наличие интерактивного режима)
обычно, вверх и вниз привязаны к функциям Readline
previous-history
иnext-history
соответственно. Я предпочитаю привязывать PgUp/PgDn к этим функциям, а не смещать нормальную работу вверх / вниз.# ~/.inputrc "\e[5~": history-search-backward "\e[6~": history-search-forwardпосле изменения
~/.inputrc
перезагрузите консоль или использовать Ctrl+X, Ctrl+R сказать его перечитывать~/.inputrc
.
кстати, если вы ищете соответствующую документацию:
Bash использует библиотека GNU Readline для командной строки и истории.
обновление .inputrc следующим образом:
"\C-[OA": history-search-backward "\C-[[A": history-search-backward "\C-[OB": history-search-forward "\C-[[B": history-search-forward
С ohmyzsh, используйте это в вашем .zshrc:
bindkey '^[OA' history-search-backward bindkey '^[OB' history-search-forward
перезагрузить,
source ~/.zshrc
или перезапуска терминала.Источник:https://superuser.com/a/418299/71680
если
set enable-keypad on
в своем~/.inputrc
как некоторые st (suckless простой терминал) пользователи могут знать, что клавиши со стрелками находятся в режиме клавиатуры. 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: специальные клавиши
возможно, Вам потребуется включить завершение bash.
Регистрация
/etc/profile
/etc/bash.bashrc
~/.bashrc
чтобы увидеть, если любой из вышеперечисленных исходные файлы
/etc/bash_completion
. то есть. /etc/bash_completionесли
/etc/bash___completion
не является источником любого из вышеперечисленных файлов вам нужно будет добавить его в один из них.если вы хотите, чтобы все пользователи bash на вашем компьютере имели завершение bash, source
/etc/bash_completion
от/etc/bash.bashrc
.если это только вы, кто хочет завершить Баш, источник
/etc/bash_completion
из своего~/.bashrc
.