是否可以更改Vim命名交换/备份/撤消文件的方式?
为避免混乱,我在~/.vimrc
中设置选项以将这些文件转储到~/.vim/tmp/{swap,backup,undo}
;但是,由于我经常使用相同的名称编辑不同目录中的文件,因此我经常会遇到许多其他难以区分的文件,而Vim有时无法恢复。
理想情况下,我想使用持久性撤销对所有这些辅助文件具有(%path%to%file.undo
)的命名方案;没有明显的方法来设置它,但可以用Buf{Read,Write}
宏来完成吗?
答案 0 :(得分:70)
我在我的.vimrc
中有这个,它用完整的路径名和百分号命名交换文件,就像你描述的那样:
" Store swap files in fixed location, not current directory.
set dir=~/.vimswap//,/var/tmp//,/tmp//,.
密钥是目录末尾的//
。请参阅:help dir
中的此说明:
- 对于Unix和Win32,如果目录以两个路径分隔符
"//"
结尾 或"\\"
,交换文件名将从完整路径构建 将所有路径分隔符替换为百分号'%'符号的文件。 这将确保保留目录中的文件名唯一性。
答案 1 :(得分:63)
以下是来自github的.vimrc
的一部分。
这会设置undodir
(并将其打开),设置backupdir
和directory
(用于.swp
文件)。请注意,如果目录尚不存在,则会创建目录。
" 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
希望它的评论能够很好地理解正在发生的事情。如果没有,请添加评论,我会修复它。
侨!
我收到了Rob Kine发来的一封电子邮件,询问了我想为每个人回答的backupdir
部分的问题:
^=
运营商做了什么?首先要描述不同的运营商。这些运算符对非字符串列表选项有不同的含义,因此请注意!
-=
从字符串列表中删除值; +=
将值附加到字符串列表; ^=
将值预先添加到字符串列表中。因此backupdir
已应用以下操作:
~/.vim/backup/
。~/.vim-backup/
。当Vim查找保存备份的位置时,它会从头到尾进行检查;所以它会检查~/.vim-backup/
,然后检查~/.vim/backup
,然后检查默认列表(已移除的.
和~/
除外),最后检查{{ 1}}
您可以使用(例如).
或:help ^=
来获取Vim中所有这些内容的帮助。
答案 2 :(得分:2)
创建目录undo
$ mkdir ~/.vimundo
设置.vimrc文件
set undodir=~/.vimundo