Используете постоянную отмену Vim? - PullRequest
90 голосов
/ 18 апреля 2011

Одной из новых функций в Vim 7.3 является «постоянная отмена», которая позволяет сохранить неподписанное дерево в файле при выходе из буфера.

К сожалению, я не смог правильно включить его, или я неправильно его использую. Вот что я пробовал до сих пор:

Я добавил следующее в ~ / .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

После этого я якобы должен иметь возможность открыть любой файл, отредактировать его, затем сохранить-закрыть его, и когда я снова открою его, я смогу отменить / повторить, как будто я никогда не ушел. К сожалению, похоже, что это не так, потому что не написано ни одного файла.

Примечания:

  1. Я нахожусь на Win 7, используя Vim 7.3 из проекта Vim без сливок. Постоянная отмена запечена.

  2. $ HOME / .vim / отменить существует в моей файловой системе

Ответы [ 4 ]

43 голосов
/ 27 марта 2014

Поместите это в .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
8 голосов
/ 17 марта 2012

Я попробовал это в моем _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 голосов
/ 18 апреля 2011

Полагаю, что $ HOME не работает так, как объявлено.

В моей системе :echo $HOME показывает H: \, но : e $HOME/ говорит: ~/ неверное имя файла.

Вы можете попробовать с абсолютным путем, чтобы увидеть, излечит ли он его

1 голос
/ 12 декабря 2014

Теперь это работает, как и ожидалось: file.txt откройте в буфере Vim 7.4 в Windows 7, :setlocal undofile, затем сохраните изменения в буфере, и вместе с ним будет создан недофайл .file.txt.un~, поскольку :set undodir? сообщает, что "undodir = «.по умолчанию - т.е. нет необходимости указывать это вручную.Вы также можете :set undofile в моделине.

...