Ubuntu 16.04下配置vimrc将.swp文件存储到/tmp的方法
把Vim交换文件(.swp)统一存到/tmp目录的有效配置
嘿,我完全懂你想把Vim那些烦人的.swp文件挪去/tmp、保持工作区清爽的心情——之前试了各种方法都没生效确实挺闹心的。别担心,给你一套绝对管用的vimrc配置,附带着解释和验证方法,帮你彻底解决这个问题:
直接添加到~/.vimrc的代码
" 将交换文件、备份文件、撤销文件统一存到/tmp目录 set directory^=/tmp// set backupdir^=/tmp// set undodir^=/tmp//
为什么这么写?给你拆解每一行的作用
set directory^=/tmp//:directory是Vim指定交换文件(.swp)存储位置的选项。^=表示把/tmp加到目录列表的最前面(优先级最高),后面的//是关键——它会让Vim在/tmp里生成带完整文件路径前缀的交换文件名(比如/tmp/%home%bob%docs%note.txt.swp),彻底避免不同目录下同名文件的交换文件互相覆盖的问题。set backupdir^=/tmp//:如果你平时开启了Vim的自动备份(set backup),这行能把备份文件也统一放到/tmp,同样用//避免重名冲突。set undodir^=/tmp//:要是你用Vim的持久撤销功能(set undofile),这行可以把记录撤销历史的文件也存到/tmp,进一步保持工作目录整洁。
验证配置是否生效
打开Vim后,输入:echo &directory并回车,如果输出的开头是/tmp//,,就说明配置已经生效啦。之后你再编辑文件,.swp文件就会乖乖待在/tmp里,不会再乱占工作区了。
为啥之前的尝试可能无效?
大概率是这两个小细节没注意:
- 只写了
set directory=/tmp没加//:没有路径前缀的话,同名文件的交换文件会互相覆盖,Vim可能会自动 fallback 到默认目录存储。 - 用了
set directory=/tmp而非^=:直接覆盖默认目录列表的话,某些场景下(比如权限问题)Vim可能会拒绝使用这个目录,而^=是追加到最前面,既保证优先级,又保留了默认目录作为备选。
内容的提问来源于stack exchange,提问作者bryanwillis7
相关产品推荐
相关产品推荐

