Использование 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 в моделировании.