Antworten:
Am einfachsten ist es, :!die Zeile voranzustellen (mit I:!), dann yydie 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 yysonst wird es zu erweitern
:ls /home^M
^Mdort 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.
Sie können die aktuelle Zeile als Befehl senden, indem Sie einfach Folgendes aufrufen:
:.!bash -e
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:
:.w !bash -e
Sie können es in sechs Tastenanschlägen tun: :r!<C-R><C-L><CR>
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 tun0D!!<C-R>"<CR>
yyPlus:!c-r"Backspaceist 6 Tastenanschläge, aber wahrscheinlich der schnellere Weg. Übrigens, womit ist das Problem^M?