You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:20:10