Как сообщить VIM хранить файл viminfo где-то еще?

Можно ли сообщить vim сохранить файл viminfo где-нибудь еще? Например, в папке .vim

Ответы

Ответ 1

Попробуйте добавить set viminfo+=n~/.vim/viminfo в ваш ~/.vimrc файл. Из :help 'viminfo':

    n       Name of the viminfo file.  The name must immediately follow
            the 'n'.  Must be the last one!  If the "-i" argument was
            given when starting Vim, that file name overrides the one
            given here with 'viminfo'.  Environment variables are expanded
            when opening the file, not when setting the option.

Ответ 2

set viminfo='1000,nc:\\users\\abcdef\\_viminfo

Это работает для меня в Windows 7.

Ответ 3

У меня была аналогичная проблема, но у меня не было права на запись в мою домашнюю папку (поэтому не удалось создать ~/.vimrc).

Я решил это, изменив (через Администратора) _vimrc в C:\Program Files\VIM, чтобы включить строку:

let $HOME = $USERPROFILE

Я разместил его в начале файла, и он работал хорошо. На всякий случай кто-то сталкивается с этим вопросом и этот ответ не работает.

Ответ 4

TL; DR

Кажется, это ошибка в vim, где set nocompatible не idempotent и не следует за принцип наименьшего удивления.

В качестве обходного пути:

  • Убедитесь, что вы set nocompatible (или эквивалент set nocp) только один раз и в верхней части vimrc.

  • Не устанавливайте его снова, если он уже установлен:

    if &compatible | set nocompatible | endif " Avoid side effects if `nocp` already set
    

Иллюстрация с пояснением и ошибкой

Из :help compatible (empahsis mine):

Это особый вид опции, потому что когда он установлен или reset, другие варианты также изменяются как побочный эффект. ОСТОРОЖНО: установка или сброс этой опции может иметь много неожиданных эффектов: сопоставления интерпретируются по-другому, отменяет поведение по-разному и т.д. Если вы установите этот параметр в файле vimrc, вы должны, вероятно, поставить его на очень старт.

Обратите внимание, что &viminfo не, перечисленные в побочных эффектах, однако следующие строки ясно показывают побочный эффект на &viminfo:

set nocompatible
set viminfo+=nWatch-my-viminfo-file-location-be-ignored
echom &viminfo
set nocompatible " do side effects even though nocomptible is already set
echom 'After 2nd "set nocompatible":'
echom &viminfo

Вывод:

'100,<50,s10,h,nWatch-my-viminfo-file-location-be-ignored
After 2nd "set nocompatible":
'100,<50,s10,h

vim --version | head -1

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 05 2016 16:48:20)


Разрешение

Я затронул две проблемы GitHub:

См. также вопрос Vi StackExchange: Невозможно переместить файл viminfo - и viminfo возвращается при загрузке vim, который я поднял перед тем, как увидеть этот.

Ответ 5

Порядок настроек в .vimrc влияет на использование: set viminfo. Настройка viminfo должна быть после установки nocompatible. После переупорядочения моего .vimrc, вышеупомянутое решение, чтобы файл viminfo находился в каталоге .vim, работал у меня.