To jest po prostu fajna uwaga na temat bash
i readline
, ale jeśli ustawisz EDITOR
zmienną środowiskową na vim
, naciśnięcie Ctrl+ x+ eotworzy bieżącą linię vim
. Ponadto, jeśli wpiszesz Meta(Alt/Opt/Esc)+ Ctrl+ e, bash wykona rozwinięcie w miejscu w bieżącym wierszu poleceń, tj .:
$ echo $EDITOR # Assuming EDITOR was set
z Meta(Alt/Opt/Esc)+ Ctrl+ estałoby się
$ echo vim # Assuming EDITOR was set
z Ctrl+ x+ estałoby się
1 echo vim # Assuming EDITOR was set
~
~
/tmp/sometmpbufferfile
Zauważ, że po wyjściu z vima zawartość bufora vim jest wykonywana w wierszu poleceń.
Funkcje te stają się dla mnie bardzo przydatne, gdy chcę wykonywać polecenia wieloliniowe w trybie bash, takie jak pętle lub programy wymagające tutaj instrukcji, i zapewnia ciekawy sposób zapisania odrobiny historii wiersza poleceń do pliku do późniejszego wykorzystania.
Aby odpowiedzieć na oryginalne pytanie, możesz również napisać:
$ This is an example
a następnie naciśnij Ctrl+ x+, eaby załadować vim
. Ty też możesz mieć
$ $(cat /etc/hosts)
i wykonaj Meta(Alt/Opt/Esc)+ Ctrl+, ea następnie Ctrl+ x+ e, co umieściłoby wszystkie pliki hosts w jednym wierszu i załadowało je vim
(prawdopodobnie nie najlepsze wykorzystanie tych funkcji - jednak użyteczność tych metod można ekstrapolować z kilku omówionych przykładów tutaj).
Zauważ, że zakładam, że readline
ustawiony jest emacs
tryb. Jeśli readline
ustawiony jest vim
tryb, możesz łatwo odkryć odpowiednie powiązania za pomocą polecenia:
bind -p
i wyszukiwanie edit-and-execute-command
lub shell-expand-line
, które były odpowiednio powiązane z powiązaniami Ctrl+ x+ ei Meta(Alt/Opt/Esc)+ Ctrl+ e.
:help stdin
... To niesamowite, jak szybko można znaleźć odpowiedzi, zadając pytanie dotyczące wbudowanej dokumentacji.