Відповідь на ваше заголовкове запитання - це те, що ви спостерігали. З посібника користувача 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, потім об'єднається між старою та новою інформацією. Поки що я не маю інформації про те, як працює злиття в цьому випадку, але я думаю, що він зберігає позначки для невідомих файлів та регістрів, які не встановлені в поточному сеансі.