Właśnie odkryłem cuda set -o vi
i 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:
Tak, możesz zmienić mapowania klawiszy (dla trybu vi- lub emacs-podobnego) za pomocą
bind
wbudowanego. 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-mode
i 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:Uruchomienie
bind -p
pokaże wszystkie klucze, które możesz powiązać, oraz ich bieżące powiązania (jeśli istnieją).Możesz wstawiać do niego
bind
polecenia.bashrc
lub edytować,~/.inputrc
aby zastosować je do wszystkich uruchomionych programów readline. Dokumenty readline zawierają pełne szczegóły.źródło
bind "Control-Space":vi-movement-mode
- działa dobrze. Ale na przykład w vimie wpisałem dwa znaki z rzędu jako wyzwalaczesc
, tzn. Jeśli wpiszeszjj
, 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?@
), w przeciwnym razie nie otrzyma powiadomienia.bind '"jk":vi-movement-mode'