2012-09-27 14:47:47 +0000 2012-09-27 14:47:47 +0000
89
89

有什么最简单的方法可以删除我已经恢复的Vim交换文件?

有时候Vim崩溃了,会给我留下一个交换文件。那真是太厉害了。然后我打开我正在编辑的文件,Vim问我是否要恢复。我做了,谢谢。完成后,Vim告诉我,

You may want to delete the .swp file now.

为什么,是的,我想。我该怎么做呢?我想它会重新开始使用旧的swapfile作为swapfile,然后在我退出的时候把它清理掉,但事实并非如此。它做了一个新的,清理了那个文件,当我再次打开文件时,它再次提示我从第一个文件中恢复。

Respostas (12)

86
86
86
2013-12-13 12:39:26 +0000

一个稍微简单一点的方法:

从终端模拟器上:

vim filename

然后选择恢复,如果你想删除你写的swap(保存),然后在vim内进行:

:e // no argument needed. It assumes the current buffer.

………这次选择删除

在 Stack Overflow 上也有相关的提示关于这个问题(我在这里找到了这个提示)。

40
40
40
2014-08-30 18:39:56 +0000
要清除目录中的所有vim交换文件:

如果你确定不需要目录树中的任何vim交换文件,并想把它们清除掉,你可以在vim运行时(甚至不在另一个窗口或不同的登录会话中),在目录中使用以下命令:

find . -type f -name "*.sw[klmnop]" -delete

&001

一些灵感和想法来自于删除垃圾.swp文件at Google Groups.  这个命令可以删除当前目录树中所有以名字结尾的文件。 swp文件](https://groups.google.com/d/msg/vim_use/JBHSs3kPPJU/X9WeMsZcfWAJ)at Google Groups.  这将删除当前目录树中所有名称以.swk, .swl, .swm, .swn, .swo, .swp, .swk, 或.swl结尾的文件。当前目录和所有子目录,递归搜索。  这超出了问题的要求,可能会被认为是矫枉过正。 - 如前所述,它将删除所有名称以.swm.swn.swo.swp.swp.swk.swl结尾的文件,而不仅仅是.swm。  &nbsp加里-约翰逊说

—另一方面,这可能是矫枉过正。   如前所述,它会删除所有名称以.swn.swo.swphello.cpp.hello.cpp.swp、&007或&007结尾的文件。  但是,显然,vim交换文件通常是 “点 "文件。以

14
14
14
2013-12-21 17:14:36 +0000

输入ls -a,列出目录中所有的文件

输入rm .whatever.your.swp是,然后按回车键

就是这么简单。

7
7
7
2015-08-04 20:27:23 +0000

Btw.有些插件可以自动为你做。autoswap.vim

从描述中可以看出:

1.文件是否已经在另一个Vim会话中打开了? 2.如果是这样,那么就切换到我们编辑该文件的窗口。如果是,请切换到我们正在编辑该文件的窗口。**其他方面,如果swapfile比文件本身更早,就把它删除。否则,打开文件只读,这样我们可以看一看,可能会保存它。

6
6
6
2012-09-27 15:00:27 +0000

不,AFAIK你什么都没有丢失。Vim会继续保留交换文件作为备份,直到你明确删除它。你会被提示(再次)

[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it

现在只需按d :)

2
2
2
2013-09-27 09:40:43 +0000

Vim,就像大多数Unix命令一样,是简单而显式的,而不是假设和隐式的。

你用®恢复。如果你不喜欢恢复,或者恢复后的文件损坏了,你可以丢弃它。如果你确实喜欢,你可以保存文件。恢复文件是不会为你删除的,因为这不是明文规定的,也不是100%的情况下都是正确的。

所以你®ecover,(w)rite和(q)uit,然后再次编辑,选择(d)elete或 “rm .myfile.js.s.swp "再编辑一次。这样做很快速,而且从Vim的角度来看,总是100%正确的行为。

1
1
1
2017-06-18 21:48:08 +0000

下面是在.vimrc中添加的一个片段,它可以删除所有与当前文件缓冲区相关的交换文件,并重置交换扩展名。一旦遇到这种情况,就可以执行:DeleteFileSwaps,如果与:windo:tabdo命令结合使用,效果会很好。一个文件可以有1个以上的交换文件。原因是.swp扩展名为vim的swap文件仍然存在,并且.swp会因此而不断创建新的文件。要知道:sw是否存在:

  • 在vim中打开目标文件,执行.swp来获取当前的交换文件。
1
1
1
2016-06-23 12:03:20 +0000

这些文件对我来说也很烦,但我在.vimrc - set noswapfile中设置了一个选项,防止vim创建这些文件,并将文件保存在内存中。

1
1
1
2017-06-07 15:33:24 +0000

这里有一个更完整的regex来清理所有的vim交换文件,它是基于Github自己的gitignore文件Vim

$ find ./ -type f \( -name "\.*\.s[a-v][a-z]" -o -name "\.*\.sw[a-p]" \) -delete

,但要小心,虽然这是一个更完整的解决方案,但它将移除任何.svg图像文件和.swf adobe flash文件。如果你使用这些文件,你可能需要修改gex。

0
0
0
2015-01-26 20:03:16 +0000

从手册中:h swap:

可以看到当前正在使用的交换文件的名称,命令为::sw[apname]

0
0
0
2015-09-22 12:05:33 +0000

如果有人问你,按D键删除当前文件的交换文件,如果没有,你必须手动删除。

-1
-1
-1
2015-03-18 08:48:14 +0000

您可以使用,

rm -f .<filename>.<ext>.swp

例:

rm -f .rc.local.swp