Использование Vim упорных отмен?
Одной из новых функций Vim 7.3 является "постоянная отмена", которая позволяет сохранять undotree в файл при выходе из буфера.
К сожалению, я не смог полностью включить его, или я должен использовать его неправильно. Вот что я пробовал до сих пор:
Я добавил следующее в ~/.vimrc
set undofile " Save undos after file closes
set undodir=$HOME/.vim/undo " where to save undo histories
set undolevels=1000 " How many undos
set undoreload=10000 " number of lines to save for undo
После этого я, должно быть, должен открыть любой файл, отредактировать его, затем сохранить-закрыть, а когда я его снова открою, я смогу отменить/повторить, как будто я никогда не уходил. К сожалению, это, похоже, не так, поскольку никакой откат не записывается.
Примечания:
-
Я нахожусь в Win 7, используя Vim 7.3 от проекта Vim без крема. Стойкая отмена выпекается.
-
$HOME/.vim/undo существует в моей файловой системе
Ответы
Ответ 1
Поместите это в свой .vimrc
, чтобы создать undodir
, если он не существует, и включить постоянную отмену. Протестировано как для Windows, так и для Linux.
" Put plugins and dictionaries in this dir (also on Windows)
let vimDir = '$HOME/.vim'
let &runtimepath.=','.vimDir
" Keep undo history across sessions by storing it in a file
if has('persistent_undo')
let myUndoDir = expand(vimDir . '/undodir')
" Create dirs
call system('mkdir ' . vimDir)
call system('mkdir ' . myUndoDir)
let &undodir = myUndoDir
set undofile
endif
Ответ 2
Я попробовал это в своем _gvimrc:
" Persistent undo
try
set undodir=C:\vim\undodir
set undofile
catch
endtry
Он начал работать так, как было объявлено, когда я удалил консоль try-catch, таким образом:
" Persistent undo
set undodir=C:\vim\undodir
set undofile
Мне пришлось создать каталог.
Ответ 3
Я полагаю, что $HOME не работает, как рекламируется.
В моей системе :echo $HOME
отображается H: \, но : e $HOME/
говорит: ~/
неверное имя файла.
Вы можете попробовать с абсолютным путем увидеть, исцеляет ли он его
Ответ 4
Теперь он работает так, как ожидалось: file.txt
откройте в буфере Vim 7.4 в Windows 7, :setlocal undofile
, затем сохраните изменения в буфере, а undofile .file.txt.un~
создается вместе с тем, поскольку :set undodir?
сообщает, что "undodir =". по умолчанию - нет необходимости указывать это вручную. Вы также можете :set undofile
в моделировании.