1

当我打开一个文件时,Vim 发现它存在一个交换文件,它会警告我并给我一些选项,比如“[A]bort”和“[E]dit Anyways”。但是,它曾经向我展示但不再这样做的一个选项是“[D]删除”交换文件。我怎样才能让它再次显示这个选项?

4

1 回答 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 回答