Ich habe versucht, etwas zu finden, mit dem ich in Vim mehrere Befehle in derselben Zeile ausführen kann, ähnlich wie bei der Verwendung von Semikolons zum Trennen von Befehlen in * nix-Systemen oder &
in Windows. Gibt es eine Möglichkeit, dies zu tun?
187
;
anstatt sie&&
zu trennen!&&
es in Shell-Befehlen 'boolean and' ist. Wenn Sie dies getan habencommand1 && command2
,command2
wird es nur ausgeführt, wenn escommand1
erfolgreich ausgeführt wird. mit;
Sie nur manuell das Ende der Zeile spezifiziert und eine neue zu starten. Es ist dasselbe wie jeden Befehl in eine andere Zeile in einem Shell-Skript zu schreiben.Antworten:
Über eine Leiste
|
können Sie dies tun. Von:help :bar
Beispiel:
:echo "hello" | echo "goodbye"
Ausgabe:
NB: Möglicherweise stellen Sie fest, dass Ihr
~/.vimrc
Mapping nicht unterstützt|
, oder\|
. Versuchen Sie in diesen Fällen<bar>
stattdessen,.quelle
|
!map
Anweisung verwenden möchten (und glauben Sie mir, Sie werden es tun), lesen Sie:help map_bar
..vimrc
unterstützt keine maskierte Leiste (\|
) für Zuordnungen. Ich habe gelernt, dass ich tatsächlich tippen muss<bar>
.:help bar
zeigt allerdings motion.txt und nichts über mehrere Befehle.:help <bar>
Setzen Sie
<CR>
(Carriage Return / Enter) zwischen und nach Befehlen. Beispielsweise:Nicht verwenden,
|
weil:Einige Befehle haben Probleme, wenn Sie
|
sie verwenden|
funktioniert in Konfigurationsdateien nicht konsistent, siehe:help map_bar
quelle
Sie können eine Funktion definieren, die Ihre Befehle ausführt.
Und platzieren Sie dies zum Beispiel in Ihrem vimrc. Führen Sie die Funktion mit aus
quelle
:call Func()
weil es:execute Func()
etwas mehr bedeutet. Dies bedeutet, den Rückgabewert der Funktion als Befehl auszuführen. Die hier beschriebene Funktion hat normalerweise keinen Befehl, der mit beginnt:return
, daher ist ihr Rückgabewert die Zahl Null. Wenn Sie dies als Befehl ausführen, bewegt sich der Cursor in die erste Zeile des aktuellen Puffers, was nicht immer das ist, was Sie sich vorgestellt haben.Der Befehl seperator in vim ist
|
.quelle
Ich habe immer
^J
mehrere Befehle durch Drücken von Ctrl+ v, Ctrl+ getrennt j.quelle
^J
als Befehlstrennzeichen in einer Zeichenfolge verwenden, da das Zeichen NULL eingefügt wird, das die Zeichenfolge beendet. Sie können jedoch <CR> = "\ n" verwenden.exe "echo 'foo' \n echo 'bar'"
exe "echo 'foo'" . nr2char(0x0a) . "echo 'bar'"
map aa :echo 'foo' <C-V><C-J> echo 'bar'<CR>
Dachte, dies könnte jemandem helfen, der versucht, Substitutionen in einer Kette vorzunehmen, und einer schlägt fehl
aus einem Kommentar
Sie können das
e
Flag verwenden, um den Fehler zu ignorieren, wenn die Zeichenfolge nicht gefunden wird.quelle
Sie können eine neue Datei erstellen und Ihre Befehle darauf schreiben. Dies
:so %
bedeutet dann die aktuelle Quelldatei.quelle