Answers:
最简单的版本是:create ~/.vim/undo-dir/
directory并将以下内容添加到中.vimrc
:
set undodir=~/.vim/undo-dir
set undofile
但是,它并非完美无缺,因此最好继续阅读。从我自己的.vimrc
:
" 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
我不希望将随机目录与撤消文件混在一起。因此,我设置了undodir
选项,将所有选项都放在一个撤消目录中。这就留下了一个问题-我很懒,不想在所有机器上都创建该目录(我使用版本控制系统.vimrc
在多台机器上同步我的目录)。幸运的是,让Vim检查并创建目录(如果不存在)非常容易。
另请注意0700
undo目录上的模式(所有者的完全权限,其他任何人均没有权限)。我编辑过的文件,时间等应保持私有。而且由于这是我只能访问的目录,因此我不必担心其他人在其中放置符号链接,他们自己的撤消文件或任何您需要担心使用系统临时目录的问题。
最后,它不是系统临时目录,它不受系统tempfile清理策略的约束。通常,这很短-一个星期左右。但是为了防止其永远增长,我在代码中添加了以下内容crontab
:
# m h dom mon dow command
43 00 * * 3 find /home/anthony/.vim/undo-dir -type f -mtime +90 -delete
因此,在90天未修改后,它们将被删除。(老实说,它们并不是那么大,您可以轻易地将它们永久地保留在磁盘便宜的情况下。但是,如果您的计算机受到损害,还请考虑自己的隐私权。)
mkdir()
函数支持使用parameter "p"
选项创建多个目录结构{path}
。因此上述脚本可以简化一些。使用call mkdir($HOME."/.vim/undo-dir", "p", 0700)
在Vim的7.4.160对我的作品至少。