To jest po prostu fajna uwaga na temat bashi readline, ale jeśli ustawisz EDITORzmienną ś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 readlineustawiony jest emacstryb. Jeśli readlineustawiony jest vimtryb, możesz łatwo odkryć odpowiednie powiązania za pomocą polecenia:
bind -p
i wyszukiwanie edit-and-execute-commandlub 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.