Vim记录历史

52

Vim存储我们使用“:”应用的命令列表,用于当前执行。但是当我关闭vim并重新启动它时,vim命令历史记录会丢失。

我尝试在.vimrc文件中使用set history=1000,但没有帮助。


Vim在哪里维护本地命令历史记录?

保留命令历史记录的命令是什么?


1
在我的系统上运行良好,你使用的vim版本是什么? - Stefan
我的台式电脑上运行良好,版本为7.3,但在我的笔记本电脑上无法运行。即使版本也是7.3,我猜测可能存在问题。 - prathmesh.kallurkar
我刚刚检查了我的.vimrc文件,没有关于命令历史记录的设置...保存历史记录似乎是默认设置。 - Stefan
1
你可能需要检查$HOME/.viminfo文件。它会保存命令历史记录。 - Jirapong
问题是如何确保在 vim 的新执行中不被覆盖? - prathmesh.kallurkar
8个回答

78

有一个问题引起了我的注意,可能是你的问题,也可能不是:

在一些Linux系统上(例如Ubuntu),如果第一次以超级用户身份运行VIM,则会创建$HOME/.viminfo文件并将其所有者设置为root,而您的本地用户没有写入权限。这就解释了为什么即使正确配置了所有内容,我的VIM也无法存储命令历史记录。

要点:在*nix系统中,找到您的.viminfo文件,并确保您对其具有读/写权限。


3
太好了!谢谢你的建议,巴林特! - Declan McGrath

28

检查Vim是否支持存储历史记录的'viminfo'文件::echo has('viminfo')。相应的设置不应为空::set viminfo?,且:set history?应大于一。

如果写入viminfo文件时出现问题(尽管在这种情况下Vim应该会抱怨),您可以尝试通过vim -i /tmp/viminfo传递不同的位置。


13
我没有权限写入 ~/.viminfo,而且 Vim 没有通知我,这感觉很奇怪。 - Amir
16
我的 ~/.viminfo 文件居然成了 root:root,而且 Vim 也没有报错!请帮我将这句话翻译成中文。 - vak
@Ingo-Karkat,我的情况是,即使我在.viminfo中有大约1500个命令行命令,q:也只显示了大约700个。我将命令的小片段存储在命令行历史记录中,以便重复使用它们而无需将它们存储在另一个文件中。这通常很有效...我已经检查过我对.viminfo拥有权限,但它仍然不起作用。history设置为存储最后10000条记录。有任何想法为什么它不能按预期工作吗? - alpha_989

8

您需要检查.viminfo文件的权限。您可能需要使用chownsudo chown更改该文件的所有者为当前用户。


这是我的问题。它默认为根目录。 - felwithe

6
内容翻译:

Baint先生已经给出了答案。

  • Go to $HOME directory.
  • give ls -l .viminfo to check permissions.
  • change permission so that group and owner also can have write permission. use:

     sudo chown yourUserId $HOME/.viminfo
    

这应该解决了问题。


2
你需要设置viminfo选项。在你的$MYVIMRC中进行设置。 更新:要找出上次设置/更改该选项的位置:
:verbose set viminfo?

请看http://vimdoc.sourceforge.net/htmldoc/starting.html#viminfo-file 如果您退出 Vim 并稍后再次启动它,通常会丢失很多信息。viminfo 文件可用于记住这些信息,使您能够从离开的地方继续工作。
该功能在用户手册的第 21.3 节中介绍。viminfo 文件用于存储:
- 命令行历史记录。 - 搜索字符串历史记录。 - 输入行历史记录。 - 非空寄存器的内容。 - 多个文件的书签。 - 指向文件位置的文件标记。 - 最后的搜索/替换模式(对于 'n' 和 '&')。 - 缓冲区列表。 - 全局变量。
当编译时禁用了 +viminfo 功能时,不支持 viminfo 文件。
您还可以使用 Session 文件。

0

在Ubuntu上,我在viminfo解决方案上转了一圈,但结果出现了错误。

最终我在命令模式下执行了"version"命令,大部分内容都返回了"-",包括: -cmdline_hist -cmdline_info

然后我运行了以下命令,一切都恢复正常了: sudo apt install vim


0

如果你正在使用vimrc文件,请检查您的文件夹和文件是否存在且正确

set history=200 
set undolevels=128 
set undodir=~/.vim/undodir/ 
set undofile 
set undolevels=1000 
set undoreload=10000 

如果指定的文件夹(在我的情况下是undodir)不存在,则历史记录将不会被保存。

0

我曾经遇到过同样的问题。问题在于我安装了 vim-minimal这是 Fedora 的默认设置),它不支持历史记录。我不得不卸载它并安装完整版的 vim。现在我有了历史记录...和语法高亮!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接