Dies ist meistens nur eine spaßige Notiz über bash
und readline
, aber wenn Sie Ihre EDITOR
Umgebungsvariable auf setzen vim
, wird durch Drücken von Ctrl+ x+ edie aktuelle Zeile in geöffnet vim
. Wenn Sie Meta(Alt/Opt/Esc)++ Ctrleingeben e, führt bash außerdem eine direkte Erweiterung der aktuellen Befehlszeile durch, dh:
$ echo $EDITOR # Assuming EDITOR was set
mit Meta(Alt/Opt/Esc)+ Ctrl+ ewürde werden
$ echo vim # Assuming EDITOR was set
mit Ctrl+ x+ ewürde werden
1 echo vim # Assuming EDITOR was set
~
~
/tmp/sometmpbufferfile
Beachten Sie, dass beim Beenden von vim der Inhalt des vim-Puffers in der Befehlszeile ausgeführt wird.
Diese Funktionen sind für mich sehr nützlich, wenn ich mehrzeilige Befehle in bash ausführen möchte, z. B. für Schleifen oder Programme, die diese Anweisungen erfordern, und sie bieten eine interessante Möglichkeit, einen Teil des Befehlszeilenverlaufs zur späteren Verwendung in einer Datei zu speichern.
Um die ursprüngliche Frage zu beantworten, können Sie auch schreiben:
$ This is an example
und drücke dann Ctrl+ x+ e, um es zu laden vim
. Sie könnten auch haben,
$ $(cat /etc/hosts)
und do Meta(Alt/Opt/Esc)+ Ctrl+ ethen Ctrl+ x+ e, wodurch alle Hosts-Dateien in eine Zeile geschrieben und geladen werden vim
(wahrscheinlich nicht die beste Verwendung dieser Funktionen - die Nützlichkeit dieser Methoden kann jedoch aus den wenigen diskutierten Beispielen extrapoliert werden Hier).
Beachten Sie, dass ich davon ausgehen , dass Ihr readline
gesetzt ist emacs
Modus. Wenn Ihr Modus aktiviert readline
ist, vim
können Sie die relevanten Bindungen mit dem folgenden Befehl leicht ermitteln:
bind -p
und Suchen nach edit-and-execute-command
oder shell-expand-line
, die wurden jeweils in Verbindung mit den Bindungen Ctrl+ x+ eund Meta(Alt/Opt/Esc)+ Ctrl+ e.
:help stdin
... Es ist erstaunlich, wie schnell man die Antworten finden kann, wenn man die Frage nach der eingebauten Dokumentation stellt.