1

Мне нравится искать в моей истории команд, используя следующие сочетания клавиш:

<ESC>/
Type in command fragment<RET>
n => to look backwards in time
N => to go forwards

Это хорошо работает, когда вы используете 'режим vi' в ZSH, но недавно я добавил vim в качестве редактора по умолчанию в мой файл .zshenv. Теперь, когда я нажимаю «/», я вижу это:

tom@flanders ~ZSH [master]
± %                          
zsh: do you wish to see all 5226 possibilities (5226 lines)?

Я нашел эту связку клавиш, которая выглядела многообещающей, но это не имело значения:

bindkey -M vicmd '/' history-incremental-pattern-search-backward

Есть что-то еще, что я пропускаю?

1 ответ1

1

Прежде всего, я нахожу это немного странным: по умолчанию zsh использует комбинации клавиш в стиле emacs (escape, сопровождаемый клавишей), если только он не находится в режиме vi, когда комбинации клавиш в стиле emacs отключены. zsh также переводит себя в режим vi, если вы используете редактор vi-like в качестве редактора по умолчанию. Итак, мне кажется, что вы, вероятно, изначально не были в режиме vi, пока не отредактировали свой zshenv.

Итак, сначала я хотел бы спросить: вы на 100% уверены, что всегда использовали режим vi? То есть bindkey -e решает вашу проблему (попробуйте в открытой оболочке)?

Возможно, вам действительно будет лучше в режиме emacs (bindkey -e). С другой стороны, может случиться так, что вы хотели бы работать в режиме vi, но было бы лучше с некоторыми привязками в стиле emacs.

Или, может быть, я совершенно не прав, и я должен просто сосредоточиться на вашем заявлении о привязке, которое написано неправильно.

Прежде всего, включение бита "vicmd" не позволяет этому работать в режиме вставки (нормальном): он работает только в том случае, если вы сначала нажмете escape (сам по себе), чтобы выйти из режима вставки для командного режима (как вы сделали бы в vim) , Таким образом, вы не можете нажать «esc-/» как аккорд (попробуйте нажать escape, отпустить его, затем нажать «/»).

Попробуйте следующую привязку:

bindkey '\e/' history-incremental-pattern-search-backward 

Теперь вы должны иметь возможность нажать «escape-/» как аккорд и получить желаемый результат.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .