Warum fügt vim ^ J am Ende meiner Makros hinzu?

7

Ich habe ein kurzes Makro geschrieben, das mir hilft, nach dem Wort unter dem Cursor zu suchen. Hier ist es in meiner .vimrc:

let @a=":! git grep ^R^W^M"

Wenn ich jedoch vim öffne und starte :reg a, sehe ich Folgendes:

"a   :! git grep ^R^W^M^J

Sie können sehen, dass dem Makro ein ^ J hinzugefügt wurde.

Wenn ich das ^ M in meinem Skript entferne, verschwindet auch das ^ J.

Es scheint, dass das ^ J ähnlich wie ^ M wirkt. Es ist also so, als hätte ich zwei ^ M. Dies ist nicht das, was ich will, weil ich das Ergebnis meines Befehls nicht sehen kann. Das Fenster blinkt nur, bevor ich es lesen kann.

Ich habe mein Skript zum Laufen gebracht, indem ich es eingefügt und dann kopiert habe. Das Problem tritt nur auf, wenn ich versuche, es mit meiner .vimrc zu laden.

user2445507
quelle

Antworten:

1

Aus irgendeinem seltsamen Grund funktioniert es einwandfrei, wenn Sie Folgendes ersetzen ^M^Jdurch ^J:

:let @a=":! git grep \<c-r>\<c-w>\<c-j>"
:reg a
"a   :! git grep ^R^W^J

Und @afunktioniert wie erwartet.

(Ich verwende die \<...>Notation, da das Kopieren und Einfügen einfacher ist.)


Technisch gesehen ^Mist der Wagenrücklauf und ^Jdie Newline. Ich bin mir nicht sicher, wie der Unterschied in diesem Fall wichtig ist.

muru
quelle
1
Ich werde es versuchen, aber wie gebe ich ^ J ein? Ich weiß, wie man ^ M eingibt, aber nicht ^ J.
user2445507
Oh, ich verstehe. Ich werde dann \ <...> verwenden.
user2445507
@ user2445507 Wie gibt man CM ein?
Muru
^ M wird durch Drücken von <Strg + V> und dann <Strg + M> eingegeben. <Strg + V> wechselt in einen speziellen Modus, in dem Sie Sonderzeichen schreiben können, die mit ^ beginnen.
user2445507
1
@ user2445507 und das hat bei ^ J nicht funktioniert?
Muru