Como posso limpar um registro / vários registros completamente?

16

Eu muitas vezes usar o :registerscomando para mostrar o conteúdo de todos os registros (esqueci o que eu coloquei onde, exatamente o que o papel de "*, "., "%, etc. são).

Especialmente porque eu defini a "opção na viminfoopção e, portanto, meus registros são mantidos entre minhas sessões do vim (que geralmente eu quero, a curto prazo), com o tempo a :registerslista fica mais e mais longa e, portanto, cada vez mais complicada e cheia com coisas realmente antigas.

Até agora, a única maneira que encontrei para corrigir isso é editar manualmente alguns dos conteúdos 'antigos' do registro ~/.viminfo, o que eu preciso fazer vim -u NONEe, portanto, é um pouco complicado.

Existe uma maneira mais limpa de limpar todos os registros ou de um registro específico, para que ele não apareça mais na :registerslista?

Andrew Ferrier
fonte

Respostas:

12

Em resumo, não há uma maneira mais limpa de limpar os registros tão completamente que eles desapareçam :reg.

Em vez de ~/.viminfoficar confuso, eu tendem a "limpar com clareza" os registros quando eu realmente e verdadeiramente termino com eles, deixando-os em branco. Para limpar o aregistro, por exemplo, digitei qaqpara definir o aregistro como uma string vazia. Equivalentemente, :let @a=''faz o mesmo.

Então, observar a saída de :regainda é útil porque é muito fácil discernir entre registros vazios e registros contidos. Por outro lado, acho que essencialmente todos os meus registros nomeados estão na linha superior (macros) ou na linha principal (coisas úteis para colar), e mesmo assim eu usei apenas cerca de 15 registros nomeados.

Havia um tópico na lista de discussão do vim alguns anos atrás, que também concluiu que não havia uma maneira mais fácil de limpar os registros.

davidlowryduda
fonte
5

Para aqueles que querem remover o nome do registo (dizer, a) a partir da :registerslista, não é uma maneira de fazê-lo agora. Execute o comando :call setreg('a', []).

Descobri isso nesta pergunta no StackOverflow do usuário @LucHermitte. Sua resposta detalha como limpar vários registros. Se você quiser que essa tarefa seja super fácil, seja criativo com seu .vimrc:)

Jason Cemra
fonte
3

Coloque isso no seu .vimrc:

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

e limpe todos os registros com :WipeReg

Se você deseja que isso aconteça sempre que iniciar o Vim, adicione também:

autocmd VimEnter * WipeReg
Laktak
fonte
1
Obrigado pelo comando, embora ele não funcione com registros somente leitura como ".,"%, "::" # #
Ashok