Come posso cancellare completamente un registro / più registri?


16

Io spesso uso il :registerscomando per visualizzare il contenuto di tutti i registri (non ricordo quello che ho messo in cui, esattamente ciò che il ruolo di "*, "., "%, ecc sono).

Soprattutto perché ho impostato l' "opzione viminfonell'opzione, e quindi i miei registri sono persistiti tra le mie sessioni vim (che in generale voglio, a breve termine), nel tempo l' :registerselenco diventa sempre più lungo, e quindi sempre più ingombrante e pieno con roba davvero vecchia.

Finora, l'unico modo che ho trovato per risolvere questo problema è modificare manualmente alcuni dei "vecchi" contenuti del registro ~/.viminfo, di cui ho bisogno vim -u NONEe che è quindi un po 'ingombrante.

Esiste un modo più pulito per cancellare tutti i registri o cancellare un registro specifico, in modo che non compaia più :registersnell'elenco?

Risposte:


12

In breve, non esiste un modo più pulito per cancellare i registri in modo così completo da scomparire :reg.

Invece di smanettare ~/.viminfo, tendo a registri "softclear" quando ho veramente e veramente finito con loro impostandoli come vuoti. Per cancellare il aregistro, ad esempio, scrivo qaqper impostare il aregistro su una stringa vuota. Equivalentemente, :let @a=''fa lo stesso.

Quindi, guardare l'output di :regè ancora utile perché è molto facile distinguere tra registri vuoti e registri contenuti. D'altra parte, trovo che essenzialmente tutti i miei registri nominati si trovano nella riga superiore (macro) o nella riga principale (cose utili per incollare), e anche allora ho usato solo circa 15 registri nominati.

Qualche anno fa c'era un thread sulla mailing list di Vim che concludeva anche che non c'era modo più semplice per cancellare i registri.


5

Per coloro che desiderano rimuovere il nome del registro (dire a) dalla :registerslista, c'è un modo per farlo ora. Eseguire il comando :call setreg('a', []).

L'ho scoperto da questa domanda su StackOverflow dell'utente @LucHermitte. La sua risposta spiega come cancellare più registri. Se vuoi che questa attività sia semplicissima, diventa creativo con il tuo .vimrc:)


3

Metti questo nel tuo .vimrc:

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

e cancella ogni registro con :WipeReg

Se desideri che ciò accada ogni volta che avvii Vim, aggiungi anche:

autocmd VimEnter * WipeReg

1
Grazie per il comando, anche se non funziona con i registri di sola lettura come ".,"%, ":," #
Ashok
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.