Por que o vim adiciona ^ J ao final das minhas macros?


7

Eu escrevi uma macro curta que me ajuda a encontrar a palavra sob o cursor. Aqui está no meu .vimrc:

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

No entanto, quando abro o vim e executo :reg a, vejo o seguinte:

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

Você pode ver que ^ J foi adicionado à macro.

Se eu remover o ^ M no meu script, o ^ J desaparecerá também.

Parece que ^ J age de maneira semelhante a ^ M. Então, é como se eu tivesse dois ^ M. Não é isso que eu quero, porque não consigo ver o resultado do meu comando. A janela apenas pisca antes que eu possa lê-la.

Eu consegui que meu script funcionasse colando e depois copiando-o. O problema só surge quando tento carregá-lo usando meu .vimrc.

Respostas:


1

Por qualquer motivo estranho, funcionará bem se você substituir o ^M^Jpor ^J:

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

E @afunciona como esperado.

(Estou usando a \<...>notação, pois é mais fácil copiar e colar.)


Tecnicamente, ^Mé o retorno de carro e ^Jé a nova linha. Não tenho certeza de como a diferença importa neste caso.


11
Vou tentar, mas como faço para entrar ^ J? Eu sei como inserir ^ M, mas não ^ J.
user2445507

Ah, Eu entendi. Vou usar \ <...>, então.
user2445507

@ user2445507 como você insere o CM?
Muru

^ M é inserido pressionando <ctrl + v> e depois <ctrl + m>. <ctrl + v> entra em algum modo especial que permite escrever caracteres especiais que começam com ^.
user2445507

11
@ user2445507 e isso não funcionou para ^ J?
Muru
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.