Как удобно переключиться в командный режим vi в командной строке zsh?

22

В vi я назначил jj для перехода, чтобы иметь возможность переключаться в командный режим без использования надоедливой клавиши escape. Теперь я хочу иметь то же самое для редактирования командной строки, для которого я использую vi-mode. Я уже нашел следующее решение:

bindkey '^j' vi-cmd-mode

позволяет вам переключиться с control-j в командный режим. Все еще ищу решение без клавиш-модификаторов, таких как «jj» или что-то подобное.

Эман Ресу
источник
4
Почему бы просто не переназначить Caps Lock на Escape?
Кириас

Ответы:

30

Примечание. Вам следует обратить внимание на man zshzleмножество полезных свойств настройки bindkeyи эмуляции GNU readline.

Это, как я сопоставляются jjс Esc:

bindkey -M viins 'jj' vi-cmd-mode

Если вы заинтересованы в различении режима вставки и обычного режима, вы можете попробовать предложение, упомянутое здесь Акирой.

Этеш Чоудхури
источник
Да! работает отлично. большое спасибо!
Eman Resu
Есть ли какие-либо предпосылки, которые необходимо выполнить, прежде чем это сработает в zsh? Или способы отладки привязок клавиш? После вставки этой команды ничего не происходит. Джей все еще не работает.
UltraMaster
5
Я установил KEYTIMEOUT слишком низко, это было причиной.
UltraMaster
@Ultramaster делает замечательную мысль. Если вы уже устанавливаете KEYTIMEOUT для скорости, я бы порекомендовал> = 20 миллисекунд. Такие какexport KEYTIMEOUT=20
ремесло