Zuordnen eines Befehls, der nicht mit dem Schreibbefehl in vim terminal identisch ist

290
mildlyAverage

Ich versuche, ein Mapping in meinem vimrc zu verwenden, um einen Befehl auszuführen. Der Befehl funktioniert, wenn ich ihn direkt in das vim-Terminal eingebe, aber wenn ich denselben Befehl verwende, wird er nach dem ersten Leerzeichen nicht mehr eingegeben. Der genaue Befehl lautet:

:map <f8> :new | 0read !javac %<CR> 

Wenn ich den Befehl manuell in vim eingebe, gibt es einen gespaltenen Schmerz bei der Ausgabe des Compilers, was genau das ist, was ich will. Wenn ich jedoch F8 drücke, tippt es einfach :newund gibt nichts anderes ein. Ich denke, das Problem besteht in der Verwendung der Leerzeichen im Befehl. Ich habe versucht, Anführungszeichen zu verwenden, und Escapezeichen zu verwenden, die jedoch nicht behoben wurden. Wie kann ich mein vimrc ändern, damit dieser Befehl richtig funktioniert?

0

1 Antwort auf die Frage

1
glenn jackman

Sie müssen <bar>anstelle des Pipe-Symbols Folgendes verwenden:

:map <f8> :new<bar>0read !javac %<CR> 
Toll, es funktioniert gut dank dem! mildlyAverage vor 5 Jahren 0