尝试在 vi 中编辑文件,它崩溃了 [1]+ 已停止

尝试在 vi 中编辑文件,它崩溃了 [1]+ 已停止

发现了这个问题,这是我看到的: 尝试编辑 .vimrc 文件时出现交换文件错误消息?

但就我而言,我可以删除交换文件,尝试编辑文件并按 Ctrl-Z,然后得到以下结果:

[6]+  Stopped                 vi /etc/xinetd.d/tftp
[root@localhost ~]# vi  /etc/xinetd.d/tftp 

[7]+  Stopped                 vi /etc/xinetd.d/tftp
[root@localhost ~]# 

因此,出于某种原因,某些东西不允许我保存此配置文件。我是 Linux 新手,使用 vi 来处理所有配置文件(包括这个),但我第一次看到这个。就是无法保存 - 一直给出 [x]+ 已停止的错误。

答案1

这是完全正常的行为(即不是在类似的 shell 中,Ctrl-Z 暂停程序并将控制权返回给父 shell。与此同时,bash程序的执行(就您而言)将停止。您可以键入以恢复执行。vifg

您收到交换文件错误的原因是因为您现在有多个vi同时编辑同一个文件的实例;交换文件的全部目的就是让您注意这种情况,因为这几乎不是您希望发生的事情。

由于您似乎vi打开了一大堆实例(其中 7 个——这就是 [7]+ 所表示的),因此最好只是逐个正常关闭它们:键入fg以调出最后一个实例,然后按 Escape 并键入:q!以正常关闭它。重复操作直到fg显示“没有这样的工作”。然后删除可能仍然存在的任何交换文件(rm /etc/xinetd.d/.tftp.sw*),然后再次打开文件。在 中vi,写入和退出文件的命令是 Escape + :wq。撤消更改的命令(我的直觉告诉我这可能是您按 Ctrl-Z 的原因)是 Escape + u

vi是所谓的模式编辑器: 在正常模式(通过按 Esc 键访问),单个键被映射到命令。在插入模式(在正常模式下按i或访问a),您可以插入文本。有关更多信息,请参阅例如本快速指南

相关内容