Jak wygodnie przełączać się w tryb komend vi w wierszu komend zsh?

22

W vi zamapowałem „jj” na ucieczkę, aby móc przejść do trybu poleceń bez używania irytującego klawisza Escape. Teraz chcę mieć to samo w przypadku edycji wiersza poleceń, dla której używam trybu vi. Znalazłem już następujące rozwiązanie:

bindkey '^j' vi-cmd-mode

pozwala zmienić z Control-J w tryb poleceń. Wciąż szukam rozwiązania bez klawiszy modyfikujących jako „jj” lub czegoś podobnego.

Eman Resu
źródło
4
Dlaczego nie odwzorować Caps Lock to Escape?
Kyrias

Odpowiedzi:

30

Uwaga: powinieneś sprawdzić man zshzlewiele korzyści związanych z dostosowywaniem bindkeyi emulowaniem GNU readline.

W ten sposób zmapowałem jjdo Esc:

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

Jeśli chcesz rozróżnić tryb wstawiania od trybu normalnego, możesz wypróbować sugestię, o której wspomina akira tutaj

Ehtesh Choudhury
źródło
Tak! działa świetnie. wielkie dzięki!
Eman Resu,
Czy są jakieś wymagania wstępne, które należy spełnić, aby działało w Zsh? Lub sposoby debugowania powiązań klawiszy? Po wstawieniu tego polecenia nic się nie dzieje. jj nadal nie działa.
UltraMaster,
5
Miałem zbyt niski KEYTIMEOUT, to był powód.
UltraMaster,
@Ultramaster ma świetny punkt. Jeśli już ustawiasz KEYTIMEOUT dla prędkości, zalecam> = 20 milisekund. Takie jakexport KEYTIMEOUT=20
statek