Normalerweise erlauben Terminals die Textauswahl mit der Maus, aber die Shell wird nicht darauf aufmerksam gemacht. Also leider weder bash
, zsh
, fish
noches
können Maus-basierte Bearbeitung unterstützen. Ich denke, um dies zu tun, müssten sie mehr Kontrolle über das Terminal übernehmen.
Allerdings (und das ist ein bisschen weit hergeholt) , wenn Sie öffnen Vim oder GVim, und geben Sie dann unter Verwendung von Shell - Kommandos:
:!...
Dann können Sie mit der Maus auf eine beliebige Stelle in der Zeile springen . (Sie müssen :set mouse=a
zuerst, wenn dies noch nicht aktiviert ist.) Die Bearbeitungstasten in diesem Modus können mit angezeigt werden:help cmdline-editing
Vim hat auch einen ziemlich mächtigen Befehlsverlaufsmodus, der durch Drücken erreicht werden kann q:. Von dort aus können Sie mit den Befehlen im Normalmodus von Vim ziehen, löschen und einfügen. In diesem Modus können Sie die gewünschte Mausauswahl treffen und dann die gewünschte Funktion löschen (durch Drücken von d).
Eine wesentliche Einschränkung hierbei ist, dass Vim eine Live-Shell-Sitzung nicht tatsächlich am Laufen hält. Jeder Befehl, den Sie ausführen, wird in einem untergeordneten Prozess ausgeführt. Alle Änderungen, die der untergeordnete Prozess an Umgebungsvariablen oder Shell-Optionen vorgenommen hat, gehen verloren.
Sie können jedoch Umgebungsvariablen innerhalb des Vim-Prozesses ändern und diese über die Befehlszeile von Vim verwenden. Sie werden sogar in untergeordnete Prozesse exportiert:
:let $FOO="bar" " the $ and the quotes are mandatory here
:echo $FOO " Vim's own echo command
bar
:!echo "$FOO" " Passing the variable to a shell command
bar
:!bash " Opening a child shell
$ echo "$FOO"
bar
Wenn Sie also so tun möchten, als wäre Vim tatsächlich eine seltsame Hülle, können Sie die erweiterten Bearbeitungsfunktionen nutzen! Der wahrscheinlich größte Nachteil ist, dass Sie jeden Befehl durch Eingabe von entweder :!
oder starten müssenq:
Übrigens, wenn Sie die Ausgabe des Shell-Befehls in Ihren aktuellen Vim-Puffer übertragen möchten, können Sie dies folgendermaßen tun (aber Vorsicht, es wird Ihre aktuelle Zeile überlasten):
:,!ls