50

Vim 存储我们使用 : 用于当前执行的命令列表。但是当我关闭 vim 并重新启动它时,vim 命令历史记录会丢失。我在 .vimrc 文件中试过set history = 1000,但没有帮助。
Vim 在哪里维护本地命令历史记录?
保留命令历史的命令是什么?

4

6 回答 6

78

只是前几天让我发现的一个问题,这可能是也可能不是你的问题:

在某些 Linux 系统(例如 Ubuntu)上,如果您第一次运行 VIM,您以超级用户身份运行它,那么 $HOME/.viminfo 文件将由 root 所有者创建,而您的本地用户没有写入权限给它。这解释了为什么我的 VIM 在正确配置时没有存储命令历史记录。

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

于 2012-05-25T13:26:38.230 回答
27

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

如果写入 viminfo 文件有问题(尽管在这种情况下 Vim 应该抱怨),你可以尝试通过vim -i /tmp/viminfo

于 2012-05-25T11:43:35.030 回答
8

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

于 2014-01-30T07:03:06.113 回答
6

班特先生已经给出了答案。

  • 转到$HOME目录。
  • 给予ls -l .viminfo检查权限。
  • 更改权限,以便组和所有者也可以具有写入权限。采用:

     sudo chown yourUserId $HOME/.viminfo
    

它应该解决问题。

于 2015-08-26T12:09:34.463 回答
2

您必须设置 viminfo 选项。在你的 $MYVIMRC 中设置它

更新要找出选项最后设置/更改的位置:

:verbose set viminfo?

http://vimdoc.sourceforge.net/htmldoc/starting.html#viminfo-file

如果你退出 Vim 之后又重新启动它,你通常会丢失很多信息。viminfo 文件可用于记住该信息,这使您能够从中断的地方继续。

这在|21.3| 节中介绍。的用户手册。

viminfo 文件用于存储:

  • 命令行历史。
  • 搜索字符串历史记录。
  • 输入行历史。
  • 非空寄存器的内容。
  • 标记几个文件。
  • 文件标记,指向文件中的位置。
  • 最后搜索/替换模式(用于“n”和“&”)。
  • 缓冲区列表。
  • 全局变量。

|+viminfo| 时不支持 viminfo 文件。功能已在编译时禁用。

你也可以使用Session文件。

于 2012-05-25T11:39:21.993 回答
0

我在 Ubuntu 上绕了一圈,设置上面提出的 viminfo 解决方案导致错误。

我最终在命令模式下执行了命令“版本”,对于大多数内容,它以“-”返回,包括:-cmdline_hist -cmdline_info

我运行了以下命令,一切正常: sudo apt install vim

于 2018-05-11T12:40:49.920 回答