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 without Cream 项目的 Vim 7.3。持久撤消已内置。
$HOME/.vim/undo 存在于我的文件系统中
将其放入您的
.vimrc
中以创建一个 undodir
(如果它不存在)并启用持久撤消。在 Windows 和 Linux 上进行了测试。
" Put plugins and dictionaries in this dir (also on Windows)
let vimDir = '$HOME/.vim'
if stridx(&runtimepath, expand(vimDir)) == -1
" vimDir is not on runtimepath, add it
let &runtimepath.=','.vimDir
endif
" 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
我在我的 _gvimrc 中尝试过这个:
" Persistent undo
try
set undodir=C:\vim\undodir
set undofile
catch
endtry
当我删除 try-catch 括号时,它开始按照广告工作,因此:
" Persistent undo
set undodir=C:\vim\undodir
set undofile
我必须创建目录。
我想 $HOME 并不像宣传的那样工作。
在我的系统上,
:echo $HOME
显示H:\,但: e $HOME/
说:~/
无效的文件名。
你可以尝试用绝对路径看看是否能解决问题
现在可以按预期工作:
file.txt
在 Windows 7 上的 Vim 7.4 缓冲区中打开,:setlocal undofile
,然后保存对缓冲区的更改,同时创建撤消文件 .file.txt.un~
,因为 :set undodir?
报告“undodir=” ”。默认情况下 - 即无需手动指定。您还可以在模型行中:set undofile
。
现在如果有人使用 nvim 并想在 undotree 中使用持久撤销。