【问题标题】:Vim: Stop "existing swap file" warningsVim:停止“现有交换文件”警告
【发布时间】:2009-07-08 13:42:29
【问题描述】:

我不知道为什么,但似乎无论我如何退出 Vim,它总是会留下交换文件。因此,每当我再次打开该文件时,都会收到一个关于现有交换文件的恼人错误。每次我都必须选择“删除”。我真希望这能停止。有什么我可以在我的.vimrc 中告诉它的,“如果交换文件存在就删除它,让我一个人呆着吗?”

【问题讨论】:

  • 你是如何退出 VIM 的?它不应该留下交换文件,所以与其掩盖问题,我们最好修复它
  • 您使用的是 Unix 操作系统并按 Ctrl-Z 吗?如果是这样,你做错了。请具体说明“退出 Vim”是什么意思。
  • 也许你在作为 root 时不小心在那个文件上崩溃了 vim,现在 vim 不能删除它?也许它是只读的?
  • 我主要使用 MacVim,然后使用正常方式(Cmd-Q)退出它。但是,它永远不会删除锯齿文件。
  • @tdavis:Command-Q 不是“通用的”。对于大多数 Mac OS X 应用程序来说,这是正常现象。但是,它并非对所有应用都“通用”。

标签: vim


【解决方案1】:

.vimrc 中添加:

set shortmess+=A

来自文档:help shortmess

当现有交换文件被删除时,不要给出“注意”消息 找到了。

【讨论】:

  • 正是我所追求的。谢谢。
【解决方案2】:

有一个插件可以自动为 Vim 交换文件“做正确的事”:vim-autoswap

来自主页:

处理交换文件很烦人。大多数情况下,您必须处理交换文件,因为您要么在另一个窗口中打开了相同的文件,要么是之前崩溃留下的交换文件。

这个插件会为你做你在这些情况下会做的事情:

  • 文件是否已经在其他窗口的另一个 Vim 会话中打开?
  • 如果是这样,请切换到我们正在编辑该文件的窗口。
  • 否则,如果交换文件比文件本身旧,则将其删除。
  • 否则,请以只读方式打开文件,以便我们查看并保存。

【讨论】:

    【解决方案3】:

    Mac OS 上的 Command-Q 退出终端窗口,并使窗口中运行的每个应用程序崩溃。

    要退出 VIM,你必须使用普通的 VIM 命令,比如:q

    【讨论】:

    • 尽可能简单,但并不简单。
    • 原发帖人提到他正在使用MacVim,这是一个gui应用程序;终端不参与。
    【解决方案4】:

    参见 VIM recovery 手册条目。你不应该正常看到这些文件,除非

    1. 您的 VIM 实例正在崩溃
    2. 您无意中针对同一个文件运行了两个 VIM 实例

    我经常做后者,在两个终端中针对 same 文件运行 2 个 VIM,却没有意识到这一点。 “交换文件”消息表明我正在这样做。

    也许您已经忘记了正在运行的 VIM 会话(后台?)?

    【讨论】:

    • 交换文件与备份文件不同吗?如果 vim 在正确关闭缓冲区之前崩溃,你会留下一个交换文件。
    • 所以我刚刚启动了“vi Test.java”,然后对其进行了后台编辑。然后我启动另一个“vi Test.java”。我得到“交换文件 .Test.java.swp 已经存在”,我认为这是有道理的
    • 交换文件在vim中打开文件时创建,文件正常关闭时删除。
    • @Nik - 我原来的答案是指备份文件。这就是你要评论的吗?
    【解决方案5】:

    设置 noswapfile

    【讨论】:

      【解决方案6】:

      当使用 vim 编辑器打开文件时,将创建相应的交换文件,扩展名为 .swp。在编辑文件时,如果系统崩溃,则创建的交换文件不会被删除。因此,当您打开同一个文件时,消息显示为“.filename.c.swp”已经存在。为了避免这种情况,我们必须在开始工作之前删除所有交换文件。

      rm filename.c.swp
      

      文件名。延期。切换

      【讨论】:

      • 你忘记了 .在文件名前面
      【解决方案7】:

      您可能对当前目录路径中的某些目录没有足够的权限。它只是发生在我身上。

      【讨论】:

        【解决方案8】:

        把它放在你的 vimrc 文件中。

        if has("win32") || has("win64")
            set directory=$TMP
        else
            set directory=/tmp
        end
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-17
          • 2021-01-05
          • 2013-10-13
          • 2015-05-08
          • 2020-01-28
          • 1970-01-01
          • 1970-01-01
          • 2022-01-11
          相关资源
          最近更新 更多