Estoy tratando de aprender Vimscript desde LearnVimscriptTHW
y me encontré con el uso de :execute and :normal
.Por qué: ejecutar no funciona como se esperaba en Vim: LearnVimscriptTheHardWay
:normal! gg/a<cr>
Del libro: El problema es que no reconoce normal!
"caracteres especiales" como <cr>
. Hay varias formas de evitar esto, pero la más fácil de usar y leer es execute
.
Ahora cuando uso :execute "normal! gg/a<cr>"
no funciona para mí. No busca a(char)
en mi archivo actual en lugar de que solo ejecute gg
y que no haga nada, pero si se usa :execute "normal! gg/a\r"
, funciona y resalta con éxito el char a
en mi archivo.
También probé las siguientes formas pero ninguna de ellas funcionó.
:execute "normal! gg/a"<cr>
:execute normal! gg/a<cr>
:execute "normal! gg/a<cr>"<cr>
Del libro parece que execute
convierte internamente <cr> to \r
. Entonces, por qué no está sucediendo en mi caso.
Ok funcionó, pero yo estaba en la ilusión de que 'execute' se encargará de todo, incluido el' escaping the sp. chars'. Entonces, ¿hay alguna función Vim en la que pueda envolver mi comando anterior para que maneje los caracteres que necesita escaparse automáticamente? ¡Algo así como la norma 'exe'! Escapefunc (iHello \ World) ' –
RanRag
Bueno, cuando uses' norma' tendrás que escapar de los caracteres especiales porque de lo contrario vim no sabe si quieres escribir '' o ejecutar ' \ r'. Fuera de 'norma' esto funciona automáticamente. –
Conner
Sí, use' escape ("iHello \ World") 'o adquiera el hábito de usar la notación literal como en mi respuesta. –
romainl