salvar lineas guardar grabar eliminar deshacer con como cambios cambio borrar vim vim-registers

lineas - grabar cambios en vim



¿Cómo borrar vim registra efectivamente? (7)

Los registros en vim son una gran característica para almacenar fragmentos de texto e incluso para ejecutar comandos en el texto almacenado en ellos. Sin embargo, soy una persona ordenada y tiendo a limpiar las cosas cuando termino.

Sé que si quería borrar el registro a , puedo usar q a q .

También puedo ejecutar el siguiente comando:

:let @a = ''''

Sin embargo, estas soluciones parecen una mera solución al problema. Cuando ejecuto :registers , la lista aún muestra registrar a (con un valor vacío), mientras que los registros que de otro modo nunca se han utilizado no se muestran.

¿Hay alguna manera de borrar un registro con el efecto secundario de eliminar el registro de esta lista?

Y si es así, ¿hay también una manera de borrar todos los registros a la vez, es decir, restablecer esa lista de registros?


AFAIK no puede usar comandos / funciones integradas para hacer que los registros desaparezcan de la lista. Eso parece ser posible solo eliminándolos de su ~/.viminfo que suena un poco extremo.

este hilo en la lista de correo vim tiene un comando que borra todos los registros pero no los elimina de :reg :

let regs=''abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/-"'' | let i=0 | while (i<strlen(regs)) | exec ''let @''.regs[i].''=""'' | let i=i+1 | endwhile | unlet regs


Desde esa venerable respuesta en la lista de correo, enlazada por @romainl , tenemos setreg(''a'', []) que borra el registro.

Por lo tanto, el código podría convertirse en:

let regs=split(''abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/-"'', ''/zs'') for r in regs call setreg(r, []) endfor


Elimine el archivo .viminfo o elimine la línea de registro en el archivo .viminfo .

Puede obtener los detalles desde Here :

The viminfo file is used to store: - The command line history. - The search string history. - The input-line history. - Contents of non-empty registers. - Marks for several files. - File marks, pointing to locations in files. - Last search/substitute pattern (for ''n'' and ''&''). - The buffer list. - Global variables


En aras de la exhaustividad, señalaré que aunque configurar un registro para que contenga una cadena vacía no elimina el registro de la salida del comando :registers , Vim no guarda los registros que se han borrado de esta manera a .viminfo archivo .viminfo .

Por lo tanto, otra alternativa rápida y sucia para eliminar registros específicos de la lista es borrarlos mediante cualquiera de los comandos que sugiere, y luego reiniciar Vim.


Es posible establecer un valor para cada registro utilizado, similar al enfoque de romainl:

function! ClearRegisters() redir => l:register_out silent register redir end let l:register_list = split(l:register_out, ''/n'') call remove(l:register_list, 0) " remove header (-- Registers --) call map(l:register_list, "substitute(v:val, ''^.//(.//).*'', ''//1'', '''')") call filter(l:register_list, ''v:val !~ "[%#=.:]"'') " skip readonly registers for elem in l:register_list execute ''let @''.elem.''= ""'' endfor endfunction

Esto evita incluir un registro adicional en la salida de :registers


Otra opción es nunca cargar ningún registro. Como han dicho otros, los registros se cargan desde .viminfo . El distintivo -i se usa para especificar qué archivo viminfo usar. Si especifica NONE , no viminfo, y por lo tanto no se cargarán registros.

vim -i NONE


Pon esto en tu .vimrc :

command! WipeReg for i in range(34,122) | silent! call setreg(nr2char(i), []) | endfor

y borrar cada registro con :WipeReg

Si desea que eso suceda cada vez que inicie Vim también agregue:

autocmd VimEnter * WipeReg