更改Vim交换/备份/撤消文件的名称
是否有可能改变Vim命名交换/备份/撤消文件的方式?
为了避免混乱,我在~/.vimrc
设置了一些选项来将这些文件转储到~/.vim/tmp/{swap,backup,undo}
; 然而,由于我经常用不同的目录编辑同名的文件,所以我经常会遇到很多其他难以区分的文件,Vim有时会遇到恢复问题。
理想情况下,我想要使用持久性撤消对所有这些辅助文件( %path%to%file.undo
)的命名scheme; 有没有明显的方式来设置它,但可以用Buf{Read,Write}
macros来完成吗?
我在.vimrc
有这个名称,并且用完整的path名和百分号来命名交换文件,就像你描述的那样:
" Store swap files in fixed location, not current directory. set dir=~/.vimswap//,/var/tmp//,/tmp//,.
关键是//
在目录结尾处。 请参阅以下说明:help dir
:
- 对于Unix和Win32,如果目录以两个path分隔符
"//"
或"\\"
结尾,交换文件名将从文件的完整path构build,所有path分隔符都replace为%'%'符号。 这将确保保留目录中的文件名唯一性。
这是我的github的 .vimrc
的一部分。
这将设置undodir
(并将其打开),设置backupdir
和directory
(用于.swp
文件)。 请注意,如果它们不存在,它将创build这些目录。
" Save your backup files to a less annoying place than the current directory. " If you have .vim-backup in the current directory, it'll use that. " Otherwise it saves it to ~/.vim/backup or . if isdirectory($HOME . '/.vim/backup') == 0 :silent !mkdir -p ~/.vim/backup >/dev/null 2>&1 endif set backupdir-=. set backupdir+=. set backupdir-=~/ set backupdir^=~/.vim/backup/ set backupdir^=./.vim-backup/ set backup " Save your swap files to a less annoying place than the current directory. " If you have .vim-swap in the current directory, it'll use that. " Otherwise it saves it to ~/.vim/swap, ~/tmp or . if isdirectory($HOME . '/.vim/swap') == 0 :silent !mkdir -p ~/.vim/swap >/dev/null 2>&1 endif set directory=./.vim-swap// set directory+=~/.vim/swap// set directory+=~/tmp// set directory+=. " viminfo stores the the state of your previous editing session set viminfo+=n~/.vim/viminfo if exists("+undofile") " undofile - This allows you to use undos after exiting and restarting " This, like swap and backup files, uses .vim-undo first, then ~/.vim/undo " :help undo-persistence " This is only present in 7.3+ if isdirectory($HOME . '/.vim/undo') == 0 :silent !mkdir -p ~/.vim/undo > /dev/null 2>&1 endif set undodir=./.vim-undo// set undodir+=~/.vim/undo// set undofile endif
希望它能够很好地理解发生了什么。 如果没有,请添加评论,我会解决它。
再见!
更新[07/16/2012]
我收到了Rob Kine的一封电子邮件,询问了有关backupdir
部分的问题,我想为大家回答:
- 它看起来像你正在删除当前的目录,然后重新添加它。 这是做什么的?
-
^=
运算符是做什么的? - 在Vim中如何检查使用文件夹的优先顺序? (像是最后一个文件夹添加第一个它检查?)
首先要描述不同的运营商。 这些操作符对于非string列表选项有不同的含义,所以要注意!
-
-=
从string列表中删除值; -
+=
将值附加到string列表中; -
^=
将该值预先添加到string列表中。
所以backupdir
应用了以下操作:
- 从列表中删除当前目录。
- 将当前目录追加到列表中(这确保了它是最后一次检查)。
- 从列表中删除主目录(我不喜欢在那里保存的东西)。
- Prepend〜
~/.vim/backup/
。 - Prepend〜
~/.vim-backup/
。
当Vim寻找保存备份的位置时,它会从头到尾进行检查; 所以它会检查~/.vim-backup/
,然后检查~/.vim/backup
,然后检查默认列表(除去.
和~/
被删除),最后检查.
你可以通过使用(例如) :help ^=
或者:help backupdir
来获得所有这些:help backupdir
。
创build目录undo
$ mkdir ~/.vimundo
设置你的.vimrc文件
set undodir=~/.vimundo