Одна из новых функций в 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
После этого я предположительно должен иметь возможность открыть любой файл, отредактировать его, затем сохранить-закрыть, и когда я открою его снова, я смогу отменить / повторить, как будто я никогда не уходил. К сожалению, похоже, что это не так, поскольку аннулированный файл никогда не записывается.
Ноты:
Я нахожусь на Win 7, использую Vim 7.3 из проекта Vim без сливок. Устойчивая отмена выполняется.
$ HOME / .vim / undo существует в моей файловой системе
mkdir ~/.vim/undo
Ответы:
Поместите это в свой,
.vimrc
чтобы создать,undodir
если он не существует, и включить постоянную отмену. Проверено как в Windows, так и в Linux.источник
:silent call system('mkdir -p ' . &undodir)
&
потому что я , а не тины его. (На мой взгляд, это различие между и является одной из многих, многих, многих ошеломляюще ужасных «особенностей» Vimscript, кроме YMMV.)set
undodir
let
let
set
.vim
если его не существует. К сожалению, этого-p
флага нет в Windows, поэтому яmkdir
дважды редактировал ответ на вызов, чтобы обеспечить совместимость с Windows.-p
флага на самом деле состоит в том, чтобы избежать ошибки, когда каталог существует. У меня есть команда внутриif has('win32')
блока, поэтому я просто используюmkdir
без нее-p
в Windows.mkdir()
? Тогда это может стать:,call mkdir(myUndoDir, 'p')
который ведет себя какmkdir -p
.Я пробовал это в своем _gvimrc:
Он начал работать, как было объявлено, когда я удалил скобку try-catch, таким образом:
Пришлось создать каталог.
источник
if has('persistent_undo')
silent !mkdir ~/.config/nvim/backups > /dev/null 2>&1
set undodir=~/.config/nvim/backups
endif
"добавление комментированного сообщения для увеличения длины сообщенияЯ полагаю, $ HOME не работает так, как рекламируется.
В моей системе
:echo $HOME
показывает H: \, но: e $HOME/
говорит:~/
недопустимое имя файла.Вы можете попробовать абсолютный путь, чтобы увидеть, вылечит ли он это
источник
$TEMP
. Когда я смотрю,set undodir?
это видно~/AppData/Local/Temp
. Файл отмены сохраняется и загружается правильно. Может$TEMP
надежнее будет?Теперь это работает так, как ожидалось:
file.txt
откройте в буфере Vim 7.4 в Windows 7,:setlocal undofile
затем сохраните изменения в буфере, и вместе с ним.file.txt.un~
будет создан файл отмены , поскольку он:set undodir?
сообщает, что "undodir =." по умолчанию - т.е. указывать это вручную не нужно. Вы также можете:set undofile
в моделине.источник