清除.viminfo文件中的某些条件

ung*_*ban 35 vim

如何清除.viminfo文件中的某些条件?

我想清除命令行历史记录,文件标记,跳转列表等.

但是,我想保留搜索字符串历史记录.

有没有办法做到这一点?

Ric*_*ich 29

我可以想到3种方法.

1.自动

  1. 运行Vim,

  2. 类型: :set viminfo='0,:0,<0,@0,f0

    • '0 表示不会保存标记
    • :0 表示不会保存命令行历史记录
    • <0 意味着不会保存寄存器
    • @0 表示不保存输入行历史记录
    • f0 表示不会保存标记
    • no %表示不会保存缓冲区列表
    • no /表示保存搜索历史记录

    这些选项在Vim 7.2中是正确的,但在其他版本中可能有所不同.有关viminfo字符串格式的更多详细信息,请运行:h 'viminfo'

  3. 退出Vim.它将保存.viminfo文件的新版本,仅包含您要保留的信息.

2.手动

  1. 在vim中打开.viminfo文件,

  2. :set viminfo=关闭自动保存信息到.viminfo文件.如果你不这样做,Vim会在你退出时覆盖你所有的变化,

  3. 删除你不想要的一切(可能是使用Johnsyweb的答案,或者只是删除带有手动编辑命令的行),保存文件,然后退出vim,

3.在另一个编辑器中

另一个文本编辑器中编辑.viminfo文件,只需删除您不想要的所有内容,


Joh*_*web 11

打开.viminfo文件.

以下命令将删除所有既不是空白,注释也不是搜索历史记录的行:

:v/^\([#/?]\|$\)/d
Run Code Online (Sandbox Code Playgroud)

@ Rich的答案将帮助您防止这些线路被重新填充.


ask*_*han 7

您可以使用vim自己来修改文件,如果您按照以下方式调用它,您的更改将保持不变:

$ vim -i NONE ~/.viminfo
Run Code Online (Sandbox Code Playgroud)

启动vim-i选项设置它viminfo使用该会话文件.特殊值NONE意味着根本不保存任何内容.这对于编辑其他自动生成文件或敏感数据非常方便.

来自man vim:

-i {viminfo}
当使用的viminfo文件的功能,这个选项设置 文件名
,而不是默认使用,~/.viminfo.这也可以通过给出名称来
跳过viminfo文件的使用NONE.


小智 3

VIM 似乎没有用于这项工作的内置命令。但您可以使用“grep”在 shell 中完成此操作。例如,以下命令将清除命令行历史记录、文件标记、跳转列表:

bash $ grep -v "^[:'-]" .viminfo > .viminfo_clear
bash $ cp .viminfo_clear .viminfo
Run Code Online (Sandbox Code Playgroud)

如果你打开.viminfo,你会发现命令行历史记录以“:”开头,文件标记以“'”开头,跳转列表以“-”开头。