Ustaw Bash ' jako tryb vi jako domyślny “ normalny ” tryb Vi (nie “ wstaw ”) i umieść kursor na początku wiersza, naśladując KornShell

Próbuję zmusić Bash do naśladowania zachowania KornShell93 (ksh), gdy powłoki są w trybie edycji wiersza poleceń Vi.

KornShell domyślnie „Vi tryb normalny” (inaczej „tryb poleceń”), a także umieszcza kursor na samym początku wiersza poleceń podczas przechodzenia wstecz przez historię wiersza poleceń. W przeciwieństwie do Bash, który umieszcza cię w „Vi insert mode ”i na końcu wiersza poleceń.

W odpowiedziach na„ Konfiguracja trybu Bash vi do domyślnego trybu poleceń ” , doszło do wniosku, że nie ma sposobu, aby Bash był domyślnie ustawiony na „tryb normalny Vi”, gdy włączona jest edycja wiersza poleceń Vi.

To było ponad pięć lat s temu, teraz i zastanawiam się, czy to się zmieniło od tamtego czasu?

A co z automatycznym umieszczaniem kursora na początku wiersza poleceń? Czy jest jakaś nieznana mi magia Readline, która może mi w tym pomóc?

Używam Bash w wersji 4.4.5 (1) -release skompilowanej ze źródeł (OpenBSD shells/bash port) w OpenBSD-current (styczeń 2017).

Komentarze

  • Jako punkt danych Zsh zachowuje się jak Bash ^ H ^ H ^ H ^ HReadline, inaczej niż ksh. (Bash ' zachowuje się nie ' t naprawdę Bash ' s, to ' s Readline ' s, których używa Bash.)

Odpowiedź

Wygląda na to, że nie ma odpowiedniego sposobu na wstawienie Esc w linii poleceń.

W vi-insert większość alpha/numeric klawiszy jest używanych. Esc jest dość daleko, a każdy akord (np. Alt-j ( który działa)) wydaje się bardziej złożony niż jest to pożądane. Jest więc sposób na przekonwertowanie dwóch kluczy na plik configu rable string.

Obejście polega na wykorzystaniu pomysłu z tej odpowiedzi

Po prostu dodaj to do .inputrc:

 set editing-mode vi set vi-ins-mode-string \1\e[6 q\2 set vi-cmd-mode-string \1\e[2 q\2 set keymap emacs "\ee": vi-editing-mode "jk": "\eejk" "kj": "\eejk" set keymap vi-insert "\ee": emacs-editing-mode "jk": vi-movement-mode "kj": vi-movement-mode set keymap vi-command "\ee": emacs-editing-mode 

Niezależnie od tego, gdzie zaczniesz emacs lub vi, naciśnięcie obu jk spowoduje przejście do trybu poleceń vi na początek wiersza .

Dodatkowo umożliwia przełączenie się do trybu emacs za pomocą Esc e .

Komentarze

  • Mogę ' Zagłosuj wystarczająco! Pozbyłem się emacsa i potrzebuję tylko skrótu " jk ", nie ' t potrzebuję " kj ", więc mam po prostu: set editing-mode vi set vi-ins-mode-string \1\e[6 q\2 set vi-cmd-mode-string \1\e[2 q\2 set keymap vi-insert "jk": vi-movement-mode i teraz jestem szczęśliwy!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *