使用Vim的持久撤消?

时间:2011-04-18 08:37:52

标签: vim undo undo-redo

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的Vim 7.3而没有奶油项目。持久性撤销已被烘焙。

  2. 我的文件系统上存在$ HOME / .vim / undo

5 个答案:

答案 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行

我不知道为什么