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

经济衰退:

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

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

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


Swap file ".test.swp" already exists!

根据通过名称问题找到交换文件,我有两个选择:

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

我该怎么办?如果执行rm test.swp该操作,则看不到该文件:

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

删除交换文件时我出了什么问题?如何完成会话?


编辑:我忘记了句号,test.swp因此删除swp文件的正确方法是rm .test.swp

我剩下的问题是如何恢复/结束的暂停会话vim

Maino Cramer:

这与Ubuntu无关,因为发生的事情几乎是每个Unix OS的基本机制。通过按^ Z,您暂停(未结束)当前正在运行的vim会话。vim会话仍然存在,并等待信号再次将其置于前台。

要重新激活会话,请执行以下操作:如果直接从命令行启动了vim,请使用命令“ fg”(用于“ ForeGroung”),然后vim将再次出现。这适用于所有类似ksh / bourne的shell。对于t / csh,我不知道。仅当在与启动vim相同的终端会话的控制台(这是与vim会话相关的“控制终端”)的控制台上给出命令“ fg”时,此方法才有效。

如果vim是从窗口管理器的菜单中启动的(通常以gvim命名),那么您会有点不走运,因为(g)vim脱离了它的控制终端。

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

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

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

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

map <C-z> ;

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章