Vim 存储我们使用 : 为当前执行应用的命令列表。但是当我关闭 vim 并重新启动它时,vim 命令历史记录丢失了。我尝试在 .vimrc 文件中set history = 1000
,但这没有帮助。
Vim 在哪里维护本地命令历史记录?
保留命令历史记录的命令是什么?
只是前几天让我发现的一个问题,这可能是也可能不是你的问题:
在某些 Linux 系统(例如 Ubuntu)上,如果您第一次运行 VIM,则以超级用户身份运行它,则 $HOME/.viminfo 文件将使用 root 所有者创建,并且您的本地用户没有写入它的权限。这就解释了为什么我的 VIM 在正确配置命令时不存储命令历史记录。
底线:在 *nix 系统上,找到您的 .viminfo 文件,并确保您对其具有读/写权限。
要检查 Vim 是否支持 'viminfo'
文件(存储历史记录),:echo has('viminfo')
.相应的设置不得为空::set viminfo?
,:set history?
应大于 1。
如果编写 viminfo 文件时出现问题(尽管 Vim 在这种情况下应该会抱怨),您可以尝试通过 vim -i /tmp/viminfo
传递不同的位置
您应该检查.viminfo
文件的权限。您可能需要使用 chown
或 sudo chown
将文件的所有者更改为当前用户。
Baint先生给出了答案。
- 转到
$HOME
目录。 - 授予
ls -l .viminfo
以检查权限。 -
更改权限,以便组和所有者也可以写入许可。用:
sudo chown yourUserId $HOME/.viminfo
它应该可以解决问题。
您必须设置 viminfo 选项。将其放在您的$MYVIMRC中
更新 要找出上次设置/更改选项的位置,请执行以下操作:
:verbose set viminfo?
请参阅 http://vimdoc.sourceforge.net/htmldoc/starting.html#viminfo-file
如果你退出 Vim,然后重新启动它,你通常会损失很多 信息。 viminfo 文件可用于记住该信息,该信息 使您能够从上次中断的地方继续。
这在用户手册的|21.3|节中介绍。
viminfo 文件用于存储:
- 命令行历史记录。
- 搜索字符串历史记录。
- 输入行历史记录。
- 非空寄存器的内容。
- 多个文件的标记。
- 文件标记,指向文件中的位置。
- 上次搜索/替换模式(对于"n"和"&")。
- 缓冲区列表。
- 全局变量。
当 |+viminfo| 功能已 编译时禁用。
您也可以使用Session
文件。
我在 Ubuntu 上绕了一圈,设置上面提出的 viminfo 解决方案导致错误。
我最终在命令模式下执行了命令"版本",对于大多数内容,它都返回了"-",包括:-cmdline_hist-cmdline_info
我运行了以下命令,一切再次正常工作:sudo apt install vim
我遇到了同样的问题。问题是我安装了 vim-minimal(这是 Fedora 的默认设置),它不支持历史记录。我不得不卸载它并安装完整的 vim。我现在有历史...和语法着色!
如果您使用的是 vimrc 文件,请检查您的文件夹和文件是否存在和正确性
set history=200
set undolevels=128
set undodir=~/.vim/undodir/
set undofile
set undolevels=1000
set undoreload=10000
如果指定的文件夹(在我的情况下为 undodir)不存在,则不会保存历史记录。