vimがマクロの最後に^ Jを追加するのはなぜですか?


7

カーソルの下の単語をgrepするのに役立つ短いマクロを作成しました。これは私の.vimrcにあります:

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

しかし、vimを開いてを実行する:reg aと、次のように表示されます。

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

^ Jがマクロに追加されていることがわかります。

スクリプトから^ Mを削除すると、^ Jも消えます。

^ Jは^ Mと同様に動作するようです。つまり、^ Mが2つあるようです。コマンドの結果が見えないので、これは私が望んでいることではありません。読む前にウィンドウが点滅します。

貼り付けてからコピーすることで、スクリプトを機能させることができました。この問題は、.vimrcを使用してロードしようとしたときにのみ発生します。

回答:


1

あなたが交換した場合どのような奇妙な理由で、それが正常に動作します^M^J^J

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

そして@a、期待どおりに動作します。

(コピーして貼り付ける方が簡単なので、この\<...>表記を使用ています。)


技術的に^Mは、キャリッジリターンで^Jあり、改行です。この場合、違いがどのように重要かわかりません。


1
これを試してみるが、^ Jはどのように入力するのか。^ Mの入力方法は知っていますが、^ Jはわかりません。
user2445507 2017

ああ、わかりました。次に、\ <...>を使用します。
user2445507 2017

@ user2445507どのようにCMに入りますか?
muru 2017

^ Mを入力するには、<ctrl + v>を押してから<ctrl + m>を押します。<ctrl + v>は、^で始まる特殊文字を記述できる特別なモードに入ります。
user2445507 2017

1
@ user2445507、それは^ Jでは機能しませんでしたか?
muru
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.