Angenommen, die aktuelle Zeile in Vim enthält:
ls /home
(oder was auch immer Shell-Befehl). Was ist also eine schnelle Möglichkeit, diese Zeile an die (Bash-) Shell zu senden und die Ergebnisse in Vim zu lesen? Und ohne Plugins.
Am einfachsten ist es, :!
die Zeile voranzustellen (mit I:!
), dann yy
die Zeile in das unbenannte Register zu ziehen und schließlich das unbenannte Register @"
( "
) als Makro aufzurufen . Für Vim ist dies genau gleichbedeutend mit dem Tippen
:!ls /home
im normalen Modus. Wenn, wie ich, Sie haben ;
und :
vertauscht in Ihrem .vimrc für den normalen Modus, werden Sie stattdessen ein Semikolon einfügen.
Es ist wahrscheinlich möglich, das Register an Ort und Stelle zu ändern, anstatt einer tatsächlichen Zeile voranzustellen.
Es ist auch möglich, y$
an das Ende der Zeile zu ziehen (ohne die obige Bearbeitung) und dann zu tippen
:!<c-r>"
... ( <c-r>
Bedeutung Ctrl+ r), die zu erweitern wird
:!ls /home
(oder was auch immer der Befehl war, den Sie zerrten). Sie müssen verwenden, y$
anstatt yy
sonst wird es zu erweitern
:ls /home^M
^M
dort vertritt die Newline; Dies ist jedoch einfach genug, um es mit einem einzigen Backspace zu löschen.
Diese zweite Methode ist vielleicht etwas schneller, aber alles, was den CtrlSchlüssel betrifft, scheint mir ein wenig unähnlich zu sein.
yy
Plus:!c-r"Backspace
ist 6 Tastenanschläge, aber wahrscheinlich der schnellere Weg. Übrigens, womit ist das Problem^M
?Sie können die aktuelle Zeile als Befehl senden, indem Sie einfach Folgendes aufrufen:
Die Zeile im geöffneten Puffer wird durch die Ausgabe dieses Befehls ersetzt.
Wenn Sie die ursprüngliche Zeile lieber beibehalten möchten, können Sie die Ausgabe mit folgendem Befehl an einen anderen Puffer senden:
quelle
Hänge das Ergebnis unterhalb der Zeile an
Sie können es in sechs Tastenanschlägen tun:
:r!<C-R><C-L><CR>
Ersetzen Sie die Zeile durch das Ergebnis:
Sie können es in fünf Tastenanschlägen tun:
!!<C-R><C-L><CR>
Dadurch wird jedoch auch die Zeile selbst als Standardeingabe in den Befehl eingespeist, sodass möglicherweise Nebenwirkungen auftreten. Um dies zu verhindern, können Sie dies tun
0D!!<C-R>"<CR>
quelle