Я уже проверил несколько похожих ссылок, но ничего не получалось. Прежде чем объяснить проблему, я ранее получал следующее сообщение при сохранении любого файла:

vim e509 Cannot create backup file (add ! to override)

При поиске решения я наткнулся на несколько ссылок, в которых предлагалось создать файл .vimrc. Поэтому я создал один и ввел в него следующее содержимое:

set backup
set backupdir=~/.vim/backups

Я также создал каталог ~/.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/

Теперь, с указанными выше разрешениями (без записи для любого пользователя в любом из родительских каталогов), всякий раз, когда я переключаюсь на пользователя git и пытаюсь сохранить любой файл, я получаю следующую ошибку:

E138: Can't write viminfo file /var/opt/gitlab/.viminfo!
Press ENTER or type command to continue

Ожидается ли вышеуказанная ошибка или я делаю что-то не так? Приложение GitLab создает пользователя git как часть процесса установки, поэтому я не уверен, будет ли хорошей идеей изменение разрешений.

System Info:
[root@gitlab gitlab]# cat /etc/*release
NAME="Amazon Linux AMI"
VERSION="2015.09"
ID_LIKE="rhel fedora"

2 ответа2

5

Похоже, вам нужно также указать местоположение вашего файла viminfo, например:

set viminfo+=n~/.vim/viminfo

Смотрите :help viminfo и :help 21.3 для получения дополнительной информации.

0

Для меня проблема была в том, что ~/.vim/files/info/viminfo был каталогом, а не файлом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .