先说解决办法:进入报错的目录,也就是/home/work/,然后执行命令:rm -f .viminf*.tmp 即可
原因:进入/home/work/目录下,用ls -a你会发现有很多.viminfa.tmp - .viminfz.tmp 这种的临时文件,这是因为使用vim编辑器时,如果编辑器没有正常退出就会生成一个暂存文件,供下次恢复使用。而这个错误是因为生成大量的“.viminf*.tmp” 并没有被系统自动删除,而是一直存在于该文件夹中,使得vim每次向“.viminfo”中写入使用信息时,无法判断该写入哪个信息
有两种方法。
一种是 setreg()。具体来说用:
:call setreg('a', '')可以把 寄存器a 里的内容清空。如果是想清除某几个寄存器的话,这个方法就很好。
如果是想清空所有的,用个循环即可,如下:
for c in range(char2nr('a'), char2nr('z')) + range(char2nr('0'), char2nr('9'))call setreg(nr2char(c), "")
endfor
另一种方法是去删 viminfo 文件。
vim 各个寄存器的值,命令行的历史记录等东西都是记录在 viminfo 里的。要想删除相关的东西,直接去 *** 纵 viminfo 就可以了。
但是由于 vim 加载的时候会加载 viminfo 里的内容,退出的时候会再写入。所以用 vim 来编辑 viminfo 是不行的,删掉的东西会再写回去。因此要退出所有正在运行的 vim,让其把相关的内容先都写到 viminfo 里,然后运行其它编辑器来删除 viminfo 里的有关内容。或者干脆把 viminfo 直接删了也行,相当于清空所有历史记录。
最后,如果你根本不喜欢 vim 在退出之后保留那么多没用的寄存器内容,那么在 .vimrc 里加上(请务必先看一下自己的 .vimrc 里是不是已经有 viminfo 的设置,如果有只需把 <后面的数字改成 0 就好,其它的不要动):
set viminfo=100,<0,s10,h就可以禁止 vim 退出后保存寄存器的内容。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)