退出 Vim 的 5 种完全错误的方式

Vim 文本编辑器对于初学者来说可能看起来令人困惑,但它值得学习的不仅仅是如何退出。
645 位读者喜欢这个。
System statistics with sar and the /proc filesystem

ajmexico。由 Jason Baker 修改。CC BY-SA 2.0。

Vim 可能很难学习。但对于许多首次使用的用户来说,仅仅退出程序就可能是一个问题。

上个月,Stack Overflow 博客发表了一篇关于“帮助一百万开发者退出 Vim”的文章,证明了当时一个里程碑式的事件,即在开发者帮助网站上一个热门问题达到了一百万的浏览量:如何退出 Vim 编辑器?Stack Overflow 表示,根据流量,在工作日的高峰时段,每小时有 80 人在阅读关于如何退出的文章。

公平地说,如果你不熟悉 Vim,退出可能会有点违反直觉。猛按 Escape 键、敲击 Ctrl+C 键、单独输入“quit”或“exit”都不会有任何效果。Vim 确实会在此过程中给你一些有用的提示,甚至在你第一次加载程序时就告诉你如何退出。

vim-exit.png

不幸的是,当你使用搜索引擎寻找答案时,你可能已经按下了键盘上的一堆其他键,进入了插入模式,并且不知道你需要按 Escape 键才能输入退出命令。更糟糕的是,你可能已经对缓冲区做了一些更改,这意味着现在 Vim 希望你确认是否要在不保存更改的情况下退出,这需要与你刚刚弄清楚的按键模式完全不同的模式。

此外,许多人第一次接触 Vim 的方式是通过 Git 命令行客户端,当他们进行提交但没有在 Git 命令中指定提交消息时。他们不知道自己身处何处,在那里做什么,或者如何退出来。

如果你愿意投入一点时间,Vim 并不难学,而且它的普及性使其值得花费时间。如果你需要一些帮助,我们有5 个技巧来帮助你开始学习 Vim。

但是今天,为了庆祝 Vim 众所周知的让只想退出的临时用户感到困惑的倾向,这里有另外五种退出 Vim 的方法。我不推荐任何一种。

点击 x

没错,只需使用你的 GUI 杀死整个终端窗口并放弃。当然,你不需要那个窗口做任何其他事情,而且你也不想保存你可能或可能没有对你打开的文档所做的任何潜在更改。从技术上讲,对于像 GVim 这样的图形版本,这并不是世界末日,但如果 Vim 的重点是让你的手指放在键盘上,如果你使用 GUI 退出,你仍然没有抓住重点。

自动杀死它

为什么还要担心启动 Vim 后是否会记得如何退出?相反,只需使用内置的终止开关 timeout 启动它。

$ timeout 60s vim

你的 Vim 实例可以在 60 秒内消失。希望你记得保存!

杀死所有 Vim

当任何其他程序失控时,你会怎么做?你打开另一个终端并杀死它。使用你喜欢的方法:ps + kill,在 tophtop 中直观地找到它,或者我最喜欢的方法,因为它让我听起来像个叛徒,killall

$ killall -9 vim

再见,Vim(s)。

远程关闭它

我个人没有尝试过这种方法,但显然,Vim 的客户端-服务器功能意味着你可以通过 ssh 进入远程运行的 Vim 实例,并礼貌地要求 Vim 在退出前保存你的文件。Vim Wikia 有完整说明。你的结果可能会有所不同,如果你是那种离开机器后会在 Vim 中留下未保存更改的人,这实际上可能不是一个坏主意——但这本身可能不是最好的主意。

砸烂你的电脑

不,真的,请不要这样做。有更好的方法。但如果你的挫败感接近那个程度,只需前往你最喜欢的视频或 gif 网站,观看其他人用他们的机器玩真人版超级粉碎兄弟来释放压力。

迫不及待想退出 Vim?请在评论中告诉我们。当然,Emacs 用户没有这个问题。我假设那里的退出解决方案涉及切换到退出模式并编写一点 Lisp 来启动退出。

Jason Baker
前 Red Hatter 员工。现在是一名顾问和有抱负的企业家。地图爱好者、创客,以及开源桌面和自托管软件的热情安装者。

14 条评论

一种稍微不恰当的退出 vim 的方式是使用 :q!,这当然会关闭它,但也不会保存你所做的任何更改。
我主要使用 emacs,那里的大问题是各种 Ctrl-、Alt- 序列用于各种事情。我可能最常用的是 Ctrl-G,用于终止我意外启动的任何命令序列。

在使用 vim 多年后,我最近才了解到你可以使用 ZZ 保存并退出 vim。比 :wq 容易得多

感谢这篇精彩的文章。我也喜欢那个视频。我已经很久没看过了。

偶尔 X 会崩溃,并且无法关闭和保存 VIM。感谢远程关闭的想法。通常我身边有其他设备可以 ssh 进入并 shutdown -r,但能够保存 VIM 很好。

根本不需要输入 ex 命令 - ZQ 将以与 :q! 相同的方式退出编辑器。

或者只是使用 gVim 并选择文件 > 退出 :-)

nano

问题解决了。

解决方案
在 vile 模式下运行 emacs,但反叛并使用 c-x c-c 退出。

退出 Vim 并首先保存工作的方法

° 如果你正在输入文本,首先按 Esc 键,然后键入 ZZ,即 (shift) zz

° 按 Esc 键,然后输入 :x

° 按 Esc 键,然后输入 :wq

° 使用图形界面菜单,按文件,然后保存或退出

如果你想在不保存工作的情况下退出,那么 Esc 后跟 :q! 将安全地退出,而不会保存或留下缓冲区内容,也不会留下悬空的 Vim 进程

这些可能无法涵盖每一种退出 Vim 的方法,但它们是安全有效的方法,可以退出,可以保存或放弃你的工作,具体取决于你的工作是否是你想要做的,或者是否是你想要退出的。

所有不那么有经验的 Vim 用户真的应该意识到,所有爆头式的杀死 Vim 的方法都会导致它留下一个 .swp 文件,这会在他们下次打开他们正在编辑的文件时造成更大的困惑。

作为一个脾气暴躁的 IT 人员,我的老板会让我面试我不想面试的候选人。我会让他们坐下并让他们导航 VIM。如果他们不能,我会要求他们从简历中删除 Unix 管理员,并让他们离开。
我的面试通常持续约三分钟。
就这样。

关于“ZZ”的一个有趣的注释,我刚刚了解到,如果你的磁盘副本已被删除,它将不会保存,而 :wq 会保存。我(愚蠢地)在 /tmp 中处理一个测试脚本,第二天我把它打开了。/tmp 已被清理,但我假设 ZZ 会将其写出 - 不会。自从上次保存(现在已删除)以来,我没有做任何更改,瞧!文件不见了。

非常正常。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.