2009-07-08 51 views
35

我不知道为什么,但似乎无论我如何退出Vim,它总是会将交换文件留在后面。因此,无论何时我再次打开该文件,我都会对现有的交换文件产生恼人的错误。每次我必须选择“删除”。我真的希望这会停止。有什么我可以放在我的.vimrc告诉它,“只要删除交换文件,如果它存在,让我一个人?”Vim:停止“现有交换文件”警告

+12

你是如何放弃VIM的?它不应该留下交换文件,所以不是掩盖问题,我们最好修复它 – 2009-07-08 13:44:20

+1

您是否使用Unix操作系统并且击中了Ctrl-Z?如果是这样,你做错了。请具体说明“退出Vim”的含义。 – 2009-07-08 14:22:08

+0

也许你意外地崩溃了vim文件,而作为root用户,现在vim无法删除它?也许它是只读的? – 2009-07-08 14:41:01

回答

10

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

  1. 您的VIM实例崩溃
  2. 你在不经意间运行 VIM情况下对同一文件

我经常做后者,在两个终端中运行2个VIM,而不是相同的文件,但没有意识到它。 '交换文件'消息是我正在做这件事的指标。

也许你已经有一个VIM会话正在运行(后台?),你忘记了?

11

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

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

0

把这个放在你的vimrc文件中。

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

.vimrc附加:

set shortmess+=A 

从文档:help shortmess

A don't give the "ATTENTION" message when an existing swap file is found.

1

这有可能是你在路径的一些目录到当前目录没有足够的权限。它发生在我身上。

2

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

rm filename.c.swp 

文件的名称。延期。 swp

8

有一个插件可以“为Vim交换文件自动执行正确的操作”:vim-autoswap

从主页:

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

这个插件为你做,你会在这种情况下做什么:

  • 是文件已经在其他一些窗口中的另一个Vim会话打开?
  • 如果是这样,请切换到我们正在编辑该文件的窗口。
  • 否则,如果交换文件比文件本身更早,那就把它除掉。
  • 否则,打开文件只读,以便我们可以看看它并可以保存它。