В последнем новостном сообщении на vim.org говорится об использовании «undofile» для сохранения вашей истории и отмены изменений даже после перезагрузки:
Как я узнал на прошлых выходных, функция, которой я наслаждаюсь сам, не известна многим пользователям. Помимо отмены со стольким количеством уровней, сколько вам нужно, Vim также предлагает сохранить информацию об отмене в файле. Таким образом, вы можете выйти из Vim, перезагрузить компьютер и при этом отменить сделанные вами изменения. Смотрите справку для «отменить». (Брэм Муленаар)
Как я могу включить и использовать эту функцию?
persistent-state
undo-redo
Отменить
источник
источник
Ответы:
Самая простая версия: создайте
~/.vim/undo-dir/
каталог и добавьте следующее.vimrc
:Тем не менее, это не безупречно, и лучше читать дальше. Из моего собственного
.vimrc
:Я предпочитаю не загромождать случайные каталоги файлами отмены. Поэтому я установил
undodir
опцию, которая помещает их все в один каталог отмены. Это оставляет одну проблему - я ленивый, и мне не хочется создавать этот каталог на всех моих машинах (я использую систему контроля версий для синхронизации своих.vimrc
компьютеров). К счастью, Vim достаточно легко проверяет и создает каталоги, если они не существуют.Обратите внимание также на
0700
режим в папке отмены (это полные права для владельца, никаких разрешений для всех остальных). Какие файлы я редактировал, когда и т.д. должен оставаться закрытым. И так как это каталог, к которому я могу получить доступ, мне не нужно беспокоиться о том, чтобы кто-то вставил туда символическую ссылку, или о своем собственном файле отмены, или о чем-либо другом, что вам придется беспокоиться об использовании системного временного каталога.Наконец, не являясь системным временным каталогом, на него не распространяется политика очистки системного временного файла. Часто это довольно коротко - около недели. Но чтобы это не росло вечно, я добавляю следующее
crontab
:Таким образом, после 90 дней отсутствия изменений они удаляются. (Честно говоря, они на самом деле не такие большие, вы можете легко оставить их навсегда из-за того, насколько дешев диск. Но учтите и свою конфиденциальность, если ваша машина когда-либо будет взломана.)
источник
mkdir()
функция поддерживает создание нескольких структур каталогов с"p"
опцией для{path}
параметра. Таким образом, приведенный выше скрипт можно немного упростить. Использованиеcall mkdir($HOME."/.vim/undo-dir", "p", 0700)
работает для меня в Vim 7.4.160 по крайней мере.