如何完全清除一个或多个寄存器?


16

我经常使用的:registers命令显示所有寄存器的内容(我忘了我放在哪里,到底是什么作用"*"."%等都是)。

特别是因为我在"选项中设置了选项viminfo,因此我的寄存器在我的vim会话之间(一般来说,我希望短期内保持),随着时间的流逝,:registers列表变得越来越长,因此越来越繁琐和充满真的很旧。

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

有没有一种更干净的方法来擦除所有寄存器或擦除特定的寄存器,使其不再出现在:registers列表中?

Answers:


12

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

与其~/.viminfo混为一谈,当我真正地完成对它们的注册时,我倾向于通过将其设置为空白来对其进行“软清除”。a例如,要清除寄存器,我键入qaqa寄存器设置为空字符串。等效地,:let @a=''做同样的事情。

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

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


5

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

我从用户@LucHermitte的StackOverflow 这个问题中发现了一点。他的答案详细说明了如何清除多个寄存器。如果您希望这项工作变得非常简单,请发挥创意.vimrc:)


3

把它放在你的.vimrc

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

并清除每个寄存器 :WipeReg

如果您希望每次启动Vim都发生这种情况,还可以添加:

autocmd VimEnter * WipeReg

1
感谢您的命令,尽管该命令不适用于只读寄存器,例如“。,”%,“:,”#
Ashok,2017年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.