W bashu, używając trybu vi, jeśli uderzę Esc, vmój bieżący wiersz poleceń jest otwierany w edytorze określonym przez $EDITOR
i jestem w stanie edytować go na pełnym ekranie przed „zapisaniem” polecenia, które ma zostać zwrócone do powłoki i wykonane.
Jak mogę osiągnąć podobne zachowanie w Zsh? Uderzenie vw trybie komend powoduje dzwonek i nie ma widocznego efektu, pomimo ustawienia EDITOR
zmiennej środowiskowej.
edit-command-line
„widget”, potrzebujesz czegoś takiego jakautoload edit-command-line; zle -N edit-command-line
w jednym z plików inicjujących zsh (zobacz sekcję Funkcje ZLE wzshcontrib
dokumentacji ).bindkey -M vicmd v
się konfiguruje.<ESC>
aby przejść do trybu poleceń z trybu wstawiania, a następniev
do trybu wizualnego (Meta-v
jest taki sam) lub po prostu,v
jeśli jesteś już w trybie poleceń. Jeśli używasz trybu Emacsa, typowe wiązanie toC-x C-e
.bindkey -M vicmd ' ' edit-command-line
Jeśli wolisz skróty klawiszowe Emacsa:
źródło
^x^e
Wiązanie wydaje się być domyślną z obecnej .oh-my-zsh , który jest bardzo miły.editor
moduł jest załadowany.Możesz użyć
fc
do edycji ostatniego polecenia w historii. To nie to samo, co edycja tego samego polecenia, ale szybkie naciśnięcie klawisza Enter sprawia, że bieżące polecenie jest ostatnim poleceniem w historii.źródło
Oto pełna konfiguracja, którą dodałem do mojej,
~/.zshrc
aby uzyskać to samo zachowanie z bash:źródło
editor
moduł został załadowany i /vi
lubvim
wybrany do trybu poleceń.