如何启用和使用此功能?
#1 楼
最简单的版本是:创建~/.vim/undo-dir/
目录,并将以下内容添加到.vimrc
中:set undodir=~/.vim/undo-dir
set undofile
但是,它并不是完美无缺的,最好继续阅读。从我自己的
.vimrc
:因此,我设置了undodir
选项,它将所有选项都放在一个撤消目录中。这就留下了一个问题-我很懒,不想在所有机器上都创建该目录(我使用版本控制系统在多个机器上同步我的.vimrc
)。值得庆幸的是,如果Vim不存在,检查它们并创建目录也很容易。还要注意undo目录上的
0700
模式(所有者拥有完全权限,其他任何人都没有权限)。我编辑过的文件,时间等应保持私有。而且由于这是我只能访问的目录,所以我不必担心其他人在其中放置符号链接,他们自己的撤消文件,也不必担心使用系统临时目录。 br />最后,它不是系统临时目录,它不受系统tempfile清除策略的约束。通常,这很短-一个星期左右。但是为了防止其永远增长,我在crontab
中添加了以下内容:" Let's save undo info!
if !isdirectory($HOME."/.vim")
call mkdir($HOME."/.vim", "", 0770)
endif
if !isdirectory($HOME."/.vim/undo-dir")
call mkdir($HOME."/.vim/undo-dir", "", 0700)
endif
set undodir=~/.vim/undo-dir
set undofile
因此90天未进行修改后,将其删除。 (老实说,它们并不是真的那么大,您可以轻易地将它们永久保留在磁盘便宜的程度。但是如果您的计算机受到损害,还请考虑自己的隐私。)
评论
感谢您详细的答案@derobert!我知道这是一个老问题,但是我一直在尝试提出一种删除旧的vim撤消文件(vi.stackexchange.com/questions/16053/…)的vimscript方法。我认为这样做比较干净,但是事实证明这并不容易。您是否曾经考虑过使用vimscript删除旧的vim文件?如果没有,您是否还会在vimscript上使用crontab?
–登录
18年4月26日在22:10
@Logan仅在vim运行时使用vim脚本,如果有多个vim在运行,怎么办?那个cron线很简单,不会遭受那些问题的困扰,而且显然是正确的...
–德罗伯特
18年4月27日在0:40
似乎mkdir()函数支持使用{path}参数的“ p”选项创建多个目录结构。因此上述脚本可以简化一些。至少在Vim 7.4.160中,使用call mkdir($ HOME。“ /。vim / undo-dir”,“ p”,0700)是有效的。
– jdhao
19-10-26在3:20
@jdhao感谢您的快捷方式!尽管应该注意〜/ .vim的副作用,如果〜/ .vim不存在,它将使用0700权限创建,而不是原来由derobert指定的0770。
–亚伦·马汉(Aaron Mahan)
20-10-12在21:54
谢谢。给neovim用户的注意事项:只需设置undofile就足够了。
–埃里克·杜米尼尔(Eric Duminil)
20 Nov 24 '20:31
评论
布拉姆可能在谈论这个事件