【问题标题】:How to prevent vim from creating (and leaving) temporary files?如何防止 vim 创建(和留下)临时文件?
【发布时间】:2010-10-19 02:14:33
【问题描述】:

vim 为什么要创建<filename>~ 文件?有没有办法禁用它?

如果是用于备份(或其他),我会使用 git。

此外,这些.<filename.with.path.hints>.swp 文件也是如此。

我如何告诉 vim 不要创建这些,或者至少要自行清理?

编辑

哎呀,重复:

Why does Vim save files with a ~ extension?

我从那里收养了rogeriopvl's answer

逐字复制:

set nobackup       "no backup files
set nowritebackup  "only in case you don't want a backup file while editing
set noswapfile     "no swap files

【问题讨论】:

标签: vim text-editor temporary-files


【解决方案1】:

把它放在你的 .vimrc 配置文件中。

set nobackup

【讨论】:

  • 我们已经在 Windows 8.1 上使用 Vim 完成了这项工作。交换文件仍然存在。
  • Shaun,您可能还需要将“set noswapfile”添加到您的 .vimrc 中,以防止创建新的交换文件,如对原始问题的编辑中所述。
  • : 作为前缀放在 set 关键字之前怎么样?是必需的吗?它看起来不像评论..
  • @Stephane a : 前缀表示它在命令模式下完成,但在编写 vimrc 时不需要:
  • 这不是一个好主意。上面让这些文件放在 temp/ 文件夹中已经好得多了。
【解决方案2】:

我强烈建议继续使用交换文件(以防 Vim 崩溃)。

您可以设置交换文件的存储目录,这样它们就不会弄乱您的正常目录:

set swapfile
set dir=~/tmp

另见

:help swap-file

【讨论】:

  • 好吧,我从来不需要那些有notepad++的,除非你说vim会经常崩溃!
  • 不,我并不是在暗示 vim 经常崩溃(尽管我已经看到它崩溃了)。但是对于我的工作环境,我正在处理的某些主机的网络连接非常不稳定,因此会出现中断编辑。交换文件帮助在那里。
  • @user55400 听说过 GNU/Screen? (或 tmux,或这个日本替代品)
  • 我在 Windows 上将它添加到我的 _vimrc 文件中,但我仍在获取 file~ 文件。我做的不对吗?
  • @noircc 我建议不要使用 /tmp。如果整个系统崩溃并且您需要重新启动,您的交换文件将消失。
【解决方案3】:

;让 Windows 用户回到临时目录

set backup
set backupdir=C:\WINDOWS\Temp
set backupskip=C:\WINDOWS\Temp\*
set directory=C:\WINDOWS\Temp
set writebackup

【讨论】:

  • 我必须添加 set undodir=C:\WINDOWS\Temp
  • 这对我不起作用 - 我不得不改用 set dir=$TEMP
【解决方案4】:

我制作了一个名为“noswapsuck”的插件,它仅在缓冲区包含未保存的更改时启用交换文件。保存更改后,将清除交换文件。因此,与磁盘上的文件包含相同内容的交换文件将被删除。

在这里获取:noswapsuck.vim

它对我来说效果很好,但我以前从未公开过它,所以我欢迎反馈。

优点:

  • 唯一保留在磁盘上的交换文件是与文件实际不同的重要交换文件!

缺点:

  • 如果缓冲区有交换文件,第一次打开文件时不会检测到。只有在启用swapfile 时才会检测到它,即当您开始编辑缓冲区时。这很烦人,会打断你。(已解决:我们现在在打开缓冲区时检查预先存在的交换文件,方法是再次暂时打开swapfile 选项。)

    李>
  • 如果您在希望最小化磁盘写入的环境中工作(例如,低功耗,或通过网络安装的文件,或编辑大文件),那么继续删除和重新创建交换不是理想的每次保存和编辑文件。在这种情况下,您可以这样做:

    :let g:NoSwapSuck_CloseSwapfileOnWrite = 0
    

    它会在写入后保留交换文件,但在缓冲区失去焦点时仍将其删除。

顺便说一句,我还有另一个小插件:DiffAgainstFileOnDisk,它在点击(r)ecover 后非常有用,可以检查您恢复的缓冲区是否比现有文件新或旧,或与现有文件相同。

【讨论】:

    【解决方案5】:

    在 Windows 上,将以下行添加到 _vimrc

    " store backup, undo, and swap files in temp directory
    set directory=$HOME/temp//
    set backupdir=$HOME/temp//
    set undodir=$HOME/temp//
    

    【讨论】:

      【解决方案6】:

      此答案适用于在 Windows 10 上使用 gVim。我不能保证其他操作系统的结果相同。

      添加:

      set nobackup
      set noswapfile
      set noundofile
      

      到你的 _vimrc 文件。

      注意:这是问题的直接答案(对于 Windows 10),可能不是最安全的做法(阅读其他答案),但在我的情况下这是最快的解决方案。

      【讨论】:

        【解决方案7】:

        我的 Ubuntu .vimrc 中有这个设置。我的项目文件中没有看到任何交换文件。

        set undofile
        set undolevels=1000         " How many undos
        set undoreload=10000        " number of lines to save for undo
        
        set backup                        " enable backups
        set swapfile                      " enable swaps
        set undodir=$HOME/.vim/tmp/undo     " undo files
        set backupdir=$HOME/.vim/tmp/backup " backups
        set directory=$HOME/.vim/tmp/swap   " swap files
        
        " Make those folders automatically if they don't already exist.
        if !isdirectory(expand(&undodir))
            call mkdir(expand(&undodir), "p")
        endif
        if !isdirectory(expand(&backupdir))
            call mkdir(expand(&backupdir), "p")
        endif
        if !isdirectory(expand(&directory))
            call mkdir(expand(&directory), "p")
        endif
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-08-06
          • 2014-06-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-06
          • 1970-01-01
          相关资源
          最近更新 更多