Как полностью очистить регистр / несколько регистров?

16

Я довольно часто использую :registersкоманду , чтобы показать содержимое всех регистров (я забыл , что я ставлю , где именно то , что роль "*, "., "%и т.д.,).

Особенно потому, что я установил "опцию в viminfoопции, и, следовательно, мои регистры сохраняются между моими сессиями vim (что, как правило, я хочу, в краткосрочной перспективе), со временем :registersсписок становится все длиннее и длиннее, и, следовательно, все более громоздким и заполненным с действительно старыми вещами.

Пока что я нашел единственный способ исправить это - вручную отредактировать некоторые «старые» записи из регистра ~/.viminfo, что мне нужно сделать, vim -u NONEи, следовательно, немного громоздко.

Есть ли более чистый способ стереть все регистры или стереть определенный регистр, чтобы он больше не появлялся в :registersсписке?

Эндрю Ферье
источник

Ответы:

12

Короче говоря, нет более чистого способа стереть регистры настолько полно, чтобы они исчезли :reg.

Вместо того ~/.viminfo, чтобы возиться с тобой, я склонен к «мягким» регистрам, когда я действительно с ними покончил, установив их пустыми. aНапример, чтобы очистить регистр, я qaqнабираю в aрегистре пустую строку. Эквивалентно, :let @a=''делает то же самое.

Кроме того, просмотр выходных данных по- :regпрежнему полезен, поскольку очень легко различить пустые регистры и содержащиеся в них регистры. С другой стороны, я обнаружил, что практически все мои именованные регистры лежат в верхней строке (макросы) или основной строке (полезные вставки), и даже тогда я использовал только около 15 именованных регистров.

Несколько лет назад в списке рассылки vim была тема, которая также пришла к выводу, что не существует более простого способа стереть регистры.

davidlowryduda
источник
5

Для тех , кто хочет , чтобы удалить имя регистра (скажем, a) из :registersсписка, то есть способ сделать это сейчас. Запустите команду :call setreg('a', []).

Я узнал об этом из вопроса о StackOverflow от пользователя @LucHermitte. Его ответ подробно описывает, как очистить несколько регистров. Если вы хотите, чтобы эта задача была очень простой, проявите творческий подход с вашим .vimrc:)

Джейсон Джемра
источник
3

Поместите это в свой .vimrc:

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

и очистить каждый регистр с :WipeReg

Если вы хотите, чтобы это происходило каждый раз при запуске Vim, также добавьте:

autocmd VimEnter * WipeReg
laktak
источник
1
Спасибо за команду , хотя она не работает с только для чтения регистров , как%, «:» # «.»
Ashok