当我打开一个文件时,Vim 发现它存在一个交换文件,它会警告我并给我一些选项,比如“[A]bort”和“[E]dit Anyways”。但是,它曾经向我展示但不再这样做的一个选项是“[D]删除”交换文件。我怎样才能让它再次显示这个选项?
问问题
112 次
1 回答
4
正如Martin Tournoij 在 vi 堆栈交换网站上发布的那样:
如果 Vim 进程仍在运行,则不显示“删除它”选项;我在任何地方都找不到这个文档,但我在源代码中查找了它;从memline.c
,第 4512 行(稍微简化):
do_dialog(
[..]
process_still_running
? (char_u *)_("&Open Read-Only\n&Edit anyway\n&Recover\n&Quit\n&Abort") :
(char_u *)_("&Open Read-Only\n&Edit anyway\n&Recover\n&Delete it\n&Quit\n&Abort"), [..]);
交换文件嵌入了创建它的进程 ID,如果具有该 PID 的进程仍然存在,则认为该进程正在“运行”。
交换消息应显示以下信息:
E325: ATTENTION
Found a swap file by the name "~/.vim/tmp/swap/swapy.swp"
owned by: martin dated: Fri Sep 8 22:13:35 2017
file name: ~martin/swapy
modified: no
user name: martin host name: arch.arp242.net
process ID: 17355 (still running)
While opening file "swapy"
dated: Fri Sep 8 22:13:35 2017
注意process ID: 17355 (still running)
线。
最可能的情况是您在某个地方运行了另一个 Vim 实例 :-) 如果找不到kill
它,您可以使用它。
PID 被另一个进程重用的可能性很小,在这种情况下,您唯一的选择是退出 Vim,手动删除交换文件,然后重新启动它:
$ rm ~/.vim/tmp/swap/swapy.swp
于 2018-11-13T15:29:23.850 回答