Vim 错误 - E138:无法写入 viminfo 文件

Tec*_*ext 0 vim permissions vimrc

我已经检查了几个类似的链接,但没有任何效果。在我解释这个问题之前,我早些时候在保存任何文件时收到以下消息:

vim e509 Cannot create backup file (add ! to override)
Run Code Online (Sandbox Code Playgroud)

在寻找解决方案时,我遇到了几个建议创建 .vimrc 文件的链接。所以我创建了一个并在其中输入了以下内容:

set backup
set backupdir=~/.vim/backups
Run Code Online (Sandbox Code Playgroud)

我还创建了 ~/.vim/backups 目录。此外,没有 .viminfo 文件。我想我在尝试解决问题时删除了它。

可能感兴趣的其他一些细节是:

-sh-4.2$ id
uid=497(git) gid=496(git) groups=496(git)
-sh-4.2$ ls -ld .vim*
drwxr-xr-x 3 git git 4096 Dec 28 21:59 .vim
-rw-r--r-- 1 git git   40 Dec 28 22:09 .vimrc
-sh-4.2$ ls -l .vim/
drwxr-xr-x 2 git git 4096 Dec 28 22:11 backups

-sh-4.2$ pwd
/var/opt/gitlab
-sh-4.2$ ls -ld /var/
drwxr-xr-x 20 root root 4096 Dec 20 22:31 /var/
-sh-4.2$ ls -ld /var/opt/
drwxr-xr-x 3 root root 4096 Oct 21 21:01 /var/opt/
-sh-4.2$ ls -ld /var/opt/gitlab/
drwxr-xr-x 15 root root 4096 Dec 28 22:08 /var/opt/gitlab/
Run Code Online (Sandbox Code Playgroud)

现在有了上述权限(任何父目录中的任何用户都不能写入),每当我切换到 git 用户并尝试保存任何文件时,我现在都会收到以下错误:

E138: Can't write viminfo file /var/opt/gitlab/.viminfo!
Press ENTER or type command to continue
Run Code Online (Sandbox Code Playgroud)

上述错误是预期的还是我做错了什么?GitLab 应用程序在安装过程中创建了 git 用户,所以我不确定更改权限是否是一个好主意。

System Info:
[root@gitlab gitlab]# cat /etc/*release
NAME="Amazon Linux AMI"
VERSION="2015.09"
ID_LIKE="rhel fedora"
Run Code Online (Sandbox Code Playgroud)

小智 5

看起来您还需要设置 viminfo 文件的位置,例如:

set viminfo+=n~/.vim/viminfo
Run Code Online (Sandbox Code Playgroud)

查看:help viminfo:help 21.3了解更多信息。