Sé que al escribir @@
ejecuto el último comando @. Pero puede alguien explicar lo que es @@
en el código de abajo (que se encuentra en los archivos de ayuda VIM) ?:¿Cuál es la variable @@ de vim?
function! CountSpaces(type, ...)
let sel_save = &selection
let reg_save = @@
if a:0
silent exe "normal! `<" . a:type . "`>y"
elseif a:type == 'line'
silent exe "normal! '[V']y"
elseif a:type == 'block'
silent exe "normal! `[\<C-V>`]y"
else
silent exe "normal! `[v`]y"
endif
echomsg strlen(substitute(@@, '[^ ]', '', 'g'))
let &selection = sel_save
let @@ = reg_save
endfunction
Parece ser un registro, pero no está en la lista en :help registers
. Al leer el código, ¿supongo que es el registro predeterminado para tirar/eliminar? ¿Está esto documentado en algún lugar? Todas mis búsquedas arrojan la expresión @@
que ejecuta el último comando @.
'@@' almacena un caminante AT-AT de Star Wars. : P – FrustratedWithFormsDesigner
Interesante. Parece ser el registro predeterminado utilizado por yank y amigos, pero no puedo encontrar ninguna documentación sobre esto. Más extraño aún, no parece estar conectado al comando '@@' en absoluto. Normalmente puede arrastrar algo en un registro (por ejemplo: '" zy [motion] 'se arrastra a z) y luego" reproducirlo "como pulsaciones de teclas (' @ z') pero '@@' no reproduce el contenido de '@ 'registro. ¡Es un caso especial! Supongo que es bueno que la reproducción de un registro no sobrescriba el registro predeterminado utilizado por yank y put, pero es un poco desconcertante que haya tal irregularidad en el comportamiento de vim. –