Я использую vim
по существу все свои потребности в редактировании, поэтому я решил еще раз попробовать vi-mode для моей оболочки (в настоящее время ZSH w / oh-my-zsh в OS X), но я пытаюсь (и не могу) использовать Ctrl-R
постоянно. Какая эквивалентная привязка клавиш? И для дальнейшего использования, как бы я это выяснил сам? Я почти уверен, что смогу использовать bind -P
в bash.
zsh
command-history
vi-mode
Хэнк Гей
источник
источник
Ответы:
Вы можете запустить
bindkey
без аргументов, чтобы получить список существующих привязок, например:В режиме emacs обязательная привязка есть
history-incremental-search-backward
, но она не привязана по умолчанию в режиме vi. Чтобы связать Ctrl-R самостоятельно, вы можете запустить эту команду или добавить ее в~/.zshrc
:В
zshzle
manpage (man zshzle
) есть больше информации о редакторе строк zsh, bindkey и emacs / vi.источник
zshzle
. Это довольно информативно и полезно.Это древний вопрос, но единственный (и принятый) ответ в основном говорит о том, как перевести «emacs-подобный»
history-incremental-search-backward
режим в vi. Хотя это вполне выполнимо и может быть правильным решением для вас, немного странно, что никто не упомянул «путь vi» поиска в истории.Режим vi в zsh поддерживает историю поиска с использованием стандартных клавиш vi / vim:
/
и?
, оба доступны в командном режиме. (Нажмите,<Esc>
чтобы перейти из режима вставки в командный режим, как в vi или vim.)Их смысл, однако, обратный: поскольку вы обычно хотите искать историю своей оболочки в обратном порядке,
/
выполняет обратный поиск, тогда?
как прямой поиск.После отображения первого попадания вы можете (как и в vi / vim) использовать,
n
чтобы продолжить поиск большего числа попаданий в том же направлении илиN
изменить направление поиска.Соответствующие комбинации клавиш по умолчанию в таблице ключей
vicmd
:источник
"^P" history-beginning-search-backward
и"^N" history-beginning-search-forward
для vim-подобного автозаполнения (вы начинаете печатать, затем нажимаетеctrl+p
илиctrl+n
).?
воспитываетbck-i-search
, именно это я и искал. Спасибо./
или `? ' не: coderwall.com/p/-jvcag/zsh-reverse-history-search-with-regex^R
привязку клавиш. Единственный «подобный регулярному выражению» символ, поддерживаемый обоимиhistory-search-backward
типами,history-incremental-search-backward
заключается в том^
, чтобы привязать строку поиска к началу строки. Реальная силаhistory-incremental-search-backward
заключается в том, что он выполняет пошаговый поиск, как следует из его названия. Я могу себе представить, чтоvicmd
по этой причине кто-то захочет связать его с картой ключей.history-incremental-pattern-search-backward
, а неhistory-incremental-search-backward
.history-incremental-pattern-search-backwards
возможно виджет .. но я думаю, что он установлен по умолчанию в Zsh. Он поддерживаетglob
шаблоны не так,regex
как вы правильно указали: zsh.sourceforge.net/Doc/Release/Expansion.html#Glob-Operators . В сообщении действительно есть ошибка ..