Niestandardowe powiązania klawiszy dla trybu powłoki vi, tj. „Set -o vi”?


18

Właśnie odkryłem cuda set -o vii jestem ciekawy, czy można dostosować ten tryb powłoki vi na niektóre z tych samych sposobów, w jakie można dostosować vi lub vim?

Na przykład utworzyć niestandardowe powiązanie klucza, aby zamapować wygodniejszy klucz lub kombinację klawiszy esc?

Jeśli nie jest obecnie obsługiwany, jak trudno byłoby zmienić kod źródłowy programu i kod stały w niektórych dostosowaniach, czy byłby to zły pomysł?


Odpowiedzi:


17

Tak, możesz zmienić mapowania klawiszy (dla trybu vi- lub emacs-podobnego) za pomocą bindwbudowanego. Jest to właściwie funkcja readline (więc możesz mieć powiązania podobne do vi we wszystkich programach readline, nie tylko bash).

Klucz, którego szukasz, jest wywoływany vi-movement-modei domyślnie jest to klawisz \e(Escape). Możesz dodatkowo powiązać go z (i jest to raczej głupie) równość w ten sposób. Druga linia pozbywa się wiązania, aby uciec:

$ bind "=":vi-movement-mode 
$ bind -r "\e"

Uruchomienie bind -ppokaże wszystkie klucze, które możesz powiązać, oraz ich bieżące powiązania (jeśli istnieją).

Możesz wstawiać do niego bindpolecenia .bashrclub edytować, ~/.inputrcaby zastosować je do wszystkich uruchomionych programów readline. Dokumenty readline zawierają pełne szczegóły.


1
To jest niesamowite. Dzięki wielkie. Byłem w stanie dowiedzieć się, jak powiązać kluczowe kombinacje, jak to bind "Control-Space":vi-movement-mode- działa dobrze. Ale na przykład w vimie wpisałem dwa znaki z rzędu jako wyzwalacz esc, tzn. Jeśli wpiszesz jj, wrócisz do normalnego trybu. To nie zadziałało, kiedy próbowałem z bindem, czy jest jakiś specjalny sposób, żeby to działało?
Jonasz

@Jonah nie żebym wiedział, że jest w trybie off-hand, ale ostatnio nie
czytałem

@chishaku musisz poprzedzić imię Jonasza znakiem at ( @), w przeciwnym razie nie otrzyma powiadomienia.
derobert

2
@Jonah Właśnie próbowałem zrobić to samo. Czy kiedykolwiek to rozgryzłeś?
chishaku

1
unix.stackexchange.com/questions/303282/ ... Z jakiegoś powodu potrzebujesz cytatówbind '"jk":vi-movement-mode'
Hielke Walinga
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.