如何编辑当前正在被 vi 使用的文件?

如何编辑当前正在被 vi 使用的文件?

我是 Linux 新手,正在尝试 Ubuntu 11.10。我正在设置 SSH 服务器,其中一条指令要求我使用 vi 编辑 sshd_config 文件。

在 vi 中,我不记得发生了什么(现在一切都模糊了),但向上/向下键变成了大写字母。过了一会儿,我放弃了,在 SO 上搜索,解决方案是使用 vim,而不是 vi。所以我尝试退出 vi(不记得我做了什么),但我回到了控制台。

然后,当我输入 sudo vim /etc/ssh/sshd_config 时,它说存在交换文件。使用 ls -A 仅列出 sshd_config,而我在任何地方都看不到 ssh_confid.swp 文件。

ps -ef | grep vi

显示如下:

root      2914  2135  0 10:45 pts/0    00:00:00 sudo vi /etc/ssh/sshd_config
root      2915  2914  0 10:45 pts/0    00:00:00 vi /etc/ssh/sshd_config
user       4066  2135  0 11:28 pts/0    00:00:00 grep --color=auto vi

然后我尝试使用 sudo kill 2135 2914 2915 来终止进程,但什么也没发生。我该如何摆脱这种困境?

谢谢。

答案1

首先,如果

sudo kill <pid>

尝试多次后仍无法终止进程,请尝试

sudo kill -9 <pid>.

这将迫使该进程结束。

接下来,执行

ls -a /etc/ssh | grep ".swp"

查找任何交换文件。您可能会找到一个名为“.sshd_config.swp”的文件,因此在尝试编辑 /etc/ssh/sshd_config 之前,您需要删除该文件。

sudo rm /etc/ssh/.sshd_config.swp

如果你想了解更多关于 Vim 的知识,这里有一些 Vim 教程的链接。不过,我建议nano刚接触 Linux 的人阅读。

交互式 Vim 教程

图形 vi-vim 备忘单和教程

答案2

您可以vim通过输入 退出而不保存:q!
如果要保存文件,请输入:wq:x。由 创建的文件
是一个以(点)开头的隐藏文件。 希望这对您有所帮助。swpvim.

答案3

根据进程列表,您进入了一个子 shell。如果您exit在最初进入的 shell 中输入内容,则应该返回到会话vi。然后,您可以继续编辑vi,也可以退出并运行更直观、功能更弱的编辑器,如nanoromainl 所建议的那样。

答案4

解决根本问题的方法是使用nano或 Gedit(如果可以使用 GUI)而不是vivim。Vi 和 Vim 是两个(相关的)复杂且功能强大的程序,不太适合初学者。

如果您打算花大量时间在 Linux(或其他地方)上编写代码,那么学习 Vi(m) 的基础知识肯定很有用,但不要为了偶尔编辑几行代码而学习它。

解决眼前问题的办法是:

$ sudo killall vi

vi在询问您的密码后,它将终止所有正在运行的实例。

完成后,使用您以前使用的相同命令,但替换功能vinano那么强大并且底部菜单更加直观的命令。

$ sudo nano /etc/ssh/sshd_config

相关内容