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

ree*_*nes 8 unix linux vim bash terminal

vim在ubuntu中使用的时候,我不小心按了ctrl-z哪个暂停了我的会话vim.我正在编辑一个test未保存的文件(我称之为).

当我再次打开文件时vim,我得到了交换文件错误:

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


Swap file ".test.swp" already exists!
Run Code Online (Sandbox Code Playgroud)

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

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

我该怎么办?如果我执行rm test.swp它没有看到文件:

rm: cannot remove `test.swp': No such file or directory
Run Code Online (Sandbox Code Playgroud)

在删除交换文件时我做错了什么?如何完成会话?


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

我剩下的问题是如何恢复/完成暂停会议vim.

小智 11

这与Ubuntu无关,因为几乎每个Unix操作系统的基本机制都会发生.通过按下^ Z你暂停(未结束)当前正在运行的vim会话.vim会话仍在那里并等待信号再次将其置于前台.

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

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

您的恢复选项:如果条件有效,请使用"fg".这是最干净的方式.

如果(g)vim会话与控制终端分离,可以通过执行"ps -ef | grep vim"来检查.如果TTY的列(参见输出标题)显示"?" 没有控制终端了,我建议将进程发送给SIGHUB(请参阅命令"kill"/"killall"的manpage),然后再发送一个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文件,您一定要删除正确的文件.Swp文件总是以UNIX(类似系统)上的点(隐藏文件)开头.


Cre*_*ibe 7

该文件将是“ .test.swp”,而不是“ test.swp”,因此您需要:

rm .test.swp
Run Code Online (Sandbox Code Playgroud)