在ubuntu中使用vim
时,我意外地按了暂停ctrl-z
会话的vim
。我正在编辑一个未保存的文件(我称之为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问题,我有两个选择:
.swp
文件(如果您确定其他git会话已消失)。我怎么做这两件事?如果我执行rm test.swp
,则看不到文件:
rm: cannot remove `test.swp': No such file or directory
test.swp
中的句号
因此,删除swp文件的正确方法是rm .test.swp
。
vim
会话。答案 0 :(得分: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映射到另一个,更多 “复杂”的关键序列,很难被意外压迫。你可以停用 ^ Z命令通过将以下行添加到.vimrc:
map <C-z> ;
另外:你的rm-command错过了.test.swp前面的点,导致rm没有 找到文件...或删除另一个文件,名为test.swp而不是“.test.swp”。通过vim删除swp文件,您一定要删除正确的文件。 Swp文件总是以UNIX(类似系统)上的点(隐藏文件)开头。
答案 1 :(得分:3)
该文件将为“.test.swp
”,而不是“test.swp
”
所以你想要:
rm .test.swp