我经常使用:registers命令显示所有寄存器的内容(我忘记了放在什么地方,"*"."%等的确切作用是什么。)

尤其是因为我在"选项中设置viminfo选项,因此,我的寄存器会在我的vim会话之间保留(一般来说,我希望短期内如此),随着时间的流逝,:registers列表会越来越长,因此变得越来越繁琐和填充

到目前为止,我发现解决此问题的唯一方法是手动编辑~/.viminfo中的某些“旧”寄存器内容,这与vim -u NONE和因此,这有点麻烦。

#1 楼

简而言之,没有一种更干净的方法可以彻底擦除寄存器以至于它们从:reg中消失。

我不是真正地使用~/.viminfo,而是通过将它们设置为空白来真正“真正清除”寄存器,而倾向于“ softclear”寄存器。例如,要清除a寄存器,我键入qaq将a寄存器设置为空字符串。等效地,:let @a=''也是如此。

然后,查看:reg的输出仍然很有帮助,因为它很容易区分空寄存器和包含的寄存器。另一方面,我发现基本上我所有的命名寄存器都位于第一行(宏)或主行(有用的粘贴内容)上,即使那样,我也只使用了大约15个命名寄存器。

几年前,vim邮件列表上有一个线程,它还得出结论,没有更简单的方法来擦除寄存器。

#2 楼

对于那些想要从a列表中删除寄存器名称(例如:registers)的人,现在有一种方法可以这样做。运行命令:call setreg('a', [])

我从用户@LucHermitte在StackOverflow上的此问题中发现了这个问题。他的答案详细说明了如何清除多个寄存器。如果您想轻松完成此任务,请使用您的.vimrc :)

#3 楼

把它放到你的.vimrc中:添加:

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


评论


感谢您提供的命令,尽管该命令不适用于只读寄存器,如“。,”%,“:,”#

– Ashok Arora
17年3月21日在8:17

#4 楼

对于使用Neovim的用户,您可能会发现您的更改在重新启动后不会保留。清除特定寄存器后(例如,用qaq清除a之后),需要执行以下命令:
:wshada!

另请参见:

#4444无法清除寄存器在其中录制后
#4288未从shada中删除已删除的标记