Ответ на ваш заглавный вопрос - это то, что вы заметили. Из руководства пользователя vim:help 21.3
Когда вы запускаете Vim несколько раз, последний выходящий будет хранить его информацию. Это может привести к потере информации, которая ранее была сохранена из Vims. Каждый предмет можно запомнить только один раз.
Однако имя файла viminfo (где хранится история команд, среди прочего, например, глобальные метки и содержимое регистра, если так настроено) является изменяемым! Это означает, что вы можете установить разные «истории» для разных проектов или экземпляров vim. Предполагая, что вы не запускаете более одного экземпляра vim на проект, управление именем файла viminfo с помощью vimrc (или другого плагина настроек проекта) является отличным способом справиться с этим.
Настройка альтернативных файлов viminfo
Для управления уровнем проекта мы хотим настроить vim для сохранения вашего viminfo в другом файле. Это может быть сделано в работающем vim перед выходом или вашим vimrc, например, в вашем vimrc могут быть строки, которые определяют, что определенный каталог принадлежит проекту.
:set viminfo+=nPath/to/custom/viminfofile
Пример того, как vimrc автоматически устанавливает это на основе каталога:
if getcwd() == "/projects/projA"
set viminfo+=n~/.viminfo-projA
endif
Результатом вышеизложенного является то, что история проекта будет загружена при запуске и сохранена при выходе, если vim запущен в каталоге / projects / projA.
Загрузите альтернативный viminfo во время запуска
Это хорошо для случая, когда вы хотите сохранить свою историю в сторону и загрузить ее позже, не управляя ею на уровне проекта.
Во-первых, чтобы сохранить историю, вы добавляете к опции viminfo, как указано выше, перед выходом. Затем, чтобы загрузить историю, запустите vim с опцией -i
vim -i Path/to/custom/viminfofile
Если вы не хотите выходить из vim для сохранения файла viminfo, вы можете использовать :wv
( :wviminfo
). Это сохранит файл viminfo без выхода из vim в соответствии с настройкой n выше. Вы также :wv SomeOtherFile
можете сохранить в месте, которое не совпадает с настройкой параметра viminfo. Это может быть более удобным, чем настройка имени файла для использования при выходе, но не мешает vim использовать файл по умолчанию после его выхода.
Например, в первом vim:
:wv ~/customInfo
и во втором терминале:
vim -i ~/customInfo
Или, если второй vim уже запущен и вы хотите загрузить viminfo:
:rv ~/customInfo
Обратите внимание , что :wv
и :rv
не изменить имя файла Vim будет экономить на выходе , ни имя файла для чтения во время запуска.
Дополнительная информация
Описание set viminfo+=nSomePath
: Мы используем команду set для настройки названной опции viminfo
. +=
Показывает , что мы хотим , чтобы добавить к выбору, а не изменить все. Мы добавляем n
параметр, который указывает имя файла для viminfo. Сразу после n
того, как у нас SomePath
будет имя файла, используемого для сохранения viminfo.
Документация для wv
( :help wv
) указывает, что эта команда сначала прочитает файл viminfo, а затем объединит старую и новую информацию. Пока у меня нет информации о том, как происходит слияние в этом случае, но я предполагаю, что он сохраняет метки для неизвестных файлов и регистров, которые не установлены в текущем сеансе.