gpt4 book ai didi

linux - 我如何处理 vim 的交换文件系统?

转载 作者:IT王子 更新时间:2023-10-29 00:24:23 29 4
gpt4 key购买 nike

在 ubuntu 中使用 vim 时,我不小心按下了 ctrl-z,这暂停了我的 vim session 。我正在编辑一个未保存的文件(我将其称为 test)。

当我在 vim 中再次打开文件时,出现交换文件错误:

E325: ATTENTION
Found a swap file by the name ".test.swp"


Swap file ".test.swp" already exists!

根据 Found a swap file by the name问题,我有两个选择:

  1. 找到 session 并完成它(最好)。
  2. 删除 .swp 文件(如果您确定其他 git session 已经消失)。

我将如何做这两件事?如果我执行 rm test.swp 它看不到文件:

rm: cannot remove `test.swp': No such file or directory

我在删除交换文件时做错了什么,我该如何完成 session ?


编辑:我忘记了 test.swp 中的句号所以删除swp文件的正确方法是rm .test.swp

我剩下的问题是如何恢复/完成暂停的 vim session 。

最佳答案

这与 Ubuntu 无关,因为发生的是 Ubuntu 的基 native 制几乎每个 Unix 操作系统。按 ^Z 可以暂停(而不是结束)当前运行的 vim session 。 vim session 仍然存在,等待信号再次将其置于前台。

要重新激活 session :如果 vim 是直接从命令行启动的——使用命令“fg”(用于“ForeGroung”),vim 将再次出现。这适用于所有 ksh/bourne 类 shell。对于 t/csh,我不知道。这仅在与启动 vim 的同一终端 session 的控制台上给出命令“fg”时有效(这是与 vim session 相关的“控制终端”)。

如果 vim 是从窗口管理器的菜单启动的(主要是在名称 gvim 下),那么您在这里有点不走运,因为 (g)vim 与其控制终端分离。

您的恢复选项:如果上述条件有效,则使用“fg”。这是最干净的方式。

如果 (g)vim session 与控制终端分离,可以通过执行“ps -ef | grep vim”来检查。如果 TTY 列(请参阅输出标题)显示一个 ”?”不再有控制终端,我建议发送流程一个 SIGHUB(请参阅命令“kill”/“killall”的联机帮助页),然后是一个 SIGKILL(如果它仍然存在)。杀死 vim(或任何其他任务)可能会导致数据不一致,因为在它被杀死之前没有对 vim 的“保存”命令。

之后,使用相同的文件启动一个新的 vim,首先执行“恢复”(由 vim 提供,它会看到相应的 swp 文件),保存文件,结束 vim 并使用该文件再次启动它,然后做一个“删除交换文件”。这是杀死 vim 后最省事的方法。

为了避免在不需要的情况下不小心将 vim 置于后台,请将 ^Z 映射到另一个,更多“复杂”的键序列,很难意外按下。您可以停用^Z 命令,将以下行添加到您的 .vimrc 中:

map <C-z> ;

补充:您的 rm 命令错过了 .test.swp 前面的点,导致 rm 不找到文件...或删除另一个名为 test.swp 而不是“.test.swp”的文件。通过 vim 删除 swp 文件,您一定会删除正确的文件。在类 UNIX 系统上,Swp 文件始终以点(隐藏文件)开头。

关于linux - 我如何处理 vim 的交换文件系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21794235/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com