Самая простая версия: создайте ~/.vim/undo-dir/
каталог и добавьте следующее .vimrc
:
set undodir=~/.vim/undo-dir
set undofile
Тем не менее, это не безупречно, и лучше читать дальше. Из моего собственного .vimrc
:
" Let's save undo info!
if !isdirectory($HOME."/.vim")
call mkdir($HOME."/.vim", "", 0770)
endif
if !isdirectory($HOME."/.vim/undo-dir")
call mkdir($HOME."/.vim/undo-dir", "", 0700)
endif
set undodir=~/.vim/undo-dir
set undofile
Я предпочитаю не загромождать случайные каталоги файлами отмены. Поэтому я установил undodir
опцию, которая помещает их все в один каталог отмены. Это оставляет одну проблему - я ленивый, и мне не хочется создавать этот каталог на всех моих машинах (я использую систему контроля версий для синхронизации своих .vimrc
компьютеров). К счастью, Vim достаточно легко проверяет и создает каталоги, если они не существуют.
Обратите внимание также на 0700
режим в папке отмены (это полные права для владельца, никаких разрешений для всех остальных). Какие файлы я редактировал, когда и т.д. должен оставаться закрытым. И так как это каталог, к которому я могу получить доступ, мне не нужно беспокоиться о том, чтобы кто-то вставил туда символическую ссылку, или о своем собственном файле отмены, или о чем-либо другом, что вам придется беспокоиться об использовании системного временного каталога.
Наконец, не являясь системным временным каталогом, на него не распространяется политика очистки системного временного файла. Часто это довольно коротко - около недели. Но чтобы это не росло вечно, я добавляю следующее crontab
:
# m h dom mon dow command
43 00 * * 3 find /home/anthony/.vim/undo-dir -type f -mtime +90 -delete
Таким образом, после 90 дней отсутствия изменений они удаляются. (Честно говоря, они на самом деле не такие большие, вы можете легко оставить их навсегда из-за того, насколько дешев диск. Но учтите и свою конфиденциальность, если ваша машина когда-либо будет взломана.)