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的Vim 7.3而没有奶油项目。持久性撤销已被烘焙。
我的文件系统上存在$ HOME / .vim / undo
答案 0 :(得分:42)
如果它不存在,请将其放在.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
答案 1 :(得分:8)
我在_gvimrc中尝试了这个:
" Persistent undo
try
set undodir=C:\vim\undodir
set undofile
catch
endtry
当我删除try-catch括号时,它开始像宣传的那样工作,因此:
" Persistent undo
set undodir=C:\vim\undodir
set undofile
我必须创建目录。
答案 2 :(得分:3)
我认为$ HOME不像宣传的那样有用。
在我的系统上,:echo $HOME
显示H:\,但: e $HOME/
说:~/
文件名无效。
您可以尝试使用绝对路径来查看它是否能够治愈它
答案 3 :(得分:1)
现在按预期工作:file.txt
在Windows 7上的Vim 7.4缓冲区中打开,:setlocal undofile
,然后将更改保存到缓冲区,并且还会创建undofile .file.txt.un~
因为:set undodir?
报告" undodir =。"默认情况下 - 即无需手动指定。您也可以在模式行中:set undofile
。
答案 4 :(得分:0)
如果您正在寻找%TEMP%。(文件名).un〜,您将找不到它
文件名将是C %% Users %%(username)%_ vimrc行
我不知道为什么