我是 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 的人阅读。
答案2
您可以vim
通过输入 退出而不保存:q!。
如果要保存文件,请输入:wq或:x。由 创建的文件
是一个以(点)开头的隐藏文件。 希望这对您有所帮助。swp
vim
.
答案3
根据进程列表,您进入了一个子 shell。如果您exit
在最初进入的 shell 中输入内容,则应该返回到会话vi
。然后,您可以继续编辑vi
,也可以退出并运行更直观、功能更弱的编辑器,如nano
romainl 所建议的那样。
答案4
解决根本问题的方法是使用nano
或 Gedit(如果可以使用 GUI)而不是vi
或vim
。Vi 和 Vim 是两个(相关的)复杂且功能强大的程序,不太适合初学者。
如果您打算花大量时间在 Linux(或其他地方)上编写代码,那么学习 Vi(m) 的基础知识肯定很有用,但不要为了偶尔编辑几行代码而学习它。
解决眼前问题的办法是:
$ sudo killall vi
vi
在询问您的密码后,它将终止所有正在运行的实例。
完成后,使用您以前使用的相同命令,但替换功能vi
不nano
那么强大并且底部菜单更加直观的命令。
$ sudo nano /etc/ssh/sshd_config