有时 Vim 会崩溃并给我留下一个交换文件。棒极了。然后我打开我正在编辑的文件,Vim 询问我是否要恢复。我愿意,谢谢。完成后,Vim 告诉我,
You may want to delete the .swp file now.
Run Code Online (Sandbox Code Playgroud)
为什么,是的,我愿意。我怎么做?我认为它会再次开始使用旧的交换文件作为交换文件并在我退出时清理它,但事实并非如此。它创建一个新文件,清理它,当我再次打开文件时,它再次提示我从第一个文件中恢复。
当然我错过了一些东西。
miy*_*lys 103
从终端模拟器:
$ vim filename
Run Code Online (Sandbox Code Playgroud)
然后在 vim 中选择restore,如果你想删除交换你写(保存)然后调用这个命令:
:e // no argument needed. It assumes the current buffer.
Run Code Online (Sandbox Code Playgroud)
...这次选择删除。
这种方法的一个好处是它不会自动覆盖工作文件,如果恢复结果损坏(尽管我以前从未发生过这种情况)。
Stack Overflow上也有关于这个问题的相关提示(我在那里找到了这个提示)。
小智 54
如果您确定目录树中不需要任何 vim 交换文件并想删除它们,则可以在 vim未运行时在目录中使用以下命令(甚至不在另一个窗口中,甚至在不同的登录名中)会议):
find . -type f -name "*.sw[klmnop]" -delete
Run Code Online (Sandbox Code Playgroud)
一些灵感和想法来自
在 Google Groups 中删除垃圾 .swp 文件。这将删除
当前目录树中名称以.swk
, .swl
, .swm
, .swn
, .swo
, 或结尾的所有文件.swp
。
这可能不是您想要的,原因如下:
如上所述,它将删除名称以.swk
, .swl
, .swm
, .swn
, .swo
, or结尾的所有文件.swp
,而不仅仅是.swp
.
加里约翰逊说,
此外,并非所有交换文件都以 .swp 结尾。如果 Vim 需要创建一个交换文件并且一个以 .swp 结尾的文件已经存在,Vim 将使用扩展名 .swo 和 .swn 之后的扩展名。我认为它只是通过字母表向后继续。所以使用类似的东西这篇文章的 原作者说,Run Code Online (Sandbox Code Playgroud)\*.sw[nop]
甚至
Run Code Online (Sandbox Code Playgroud)\*.sw?
会更彻底。
'klmnop' 可能有点矫枉过正,但这通常可以确保我得到所有这些。
find . -type f \( -name ".*.s[a-v][a-z]" -o -name ".*.sw[a-p]" \) -delete
Run Code Online (Sandbox Code Playgroud)
它匹配从.saa
到 的所有(小写)三字母扩展名.swp
。他补充说:“不过要小心,虽然这是一个更完整的解决方案,但它会删除任何 .svg 图像文件和 .swf adobe flash 文件。如果您使用这些文件,您可能需要修改正则表达式。” 它还匹配.sav
、.snd
(声音数据)、.sql
、.src
、
.srt
(SubRip 视频字幕格式)和许多其他常见的扩展名。
这可能是矫枉过正。如上所述,它将删除名称以.swk
, .swl
, .swm
, .swn
, .swo
, 或结尾的所有文件.swp
。但是,显然,vim 交换文件通常是“点”文件。如果您编辑hello.cpp
,交换文件可能是.hello.cpp.swp
. 如rouble's answer所示(但未解释),仅删除名称以点开头的文件更安全;例如,与
find . -type f -name ".*.sw[klmnop]" -delete
Run Code Online (Sandbox Code Playgroud)小智 18
键入ls -a
which 列出目录中的所有文件
键入rm .whatever.your.swp
是并按enter
就这么简单。
.
前面显示的任何文件都是隐藏文件,通常看不到。
请记住,更改是即时且永久的,因此请务必小心。
顺便提一句。一些插件会自动为您执行此操作:autoswap.vim
从描述:
- 文件是否已经在其他窗口的另一个 Vim 会话中打开?
- 如果是这样,请切换到我们正在编辑该文件的窗口。
- 否则,如果交换文件比文件本身更旧,只需摆脱它。
- 否则,以只读方式打开文件,以便我们查看并保存。
不,AFAIK 你什么都没有遗漏。Vim
继续保留交换文件作为备份,直到您明确删除它。
只需保存并退出并再次重新打开相同的文件。你会被提示(再次)
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it
Run Code Online (Sandbox Code Playgroud)
现在只需按d
:)
归档时间: |
|
查看次数: |
273953 次 |
最近记录: |