晓查 发自 凹非寺
量子位 报道 公众号 QbitAI
程序员们最常用的代码编辑器是什么,Vim、Emacs、VS Code、Sublime……众说纷纭。
但是要说最让程序员头大的代码编辑器,那毫无疑问是 Vim。可以说是“天下苦 vim 久矣”。
Vim 到底有多让人头大?如果你是个初学者,甚至都不知道怎么退出它。
最近,有位程序员 Luke Stephens,上线了一个 GitHub 项目,叫做如何退出 Vim,仅仅一周已经收到了 2400 星。
Luke 是从各个程序员的 Twitter 中找到的这些方法,把他们汇总起来,既硬核又幽默,唤起了众多程序员学习 Vim 那段不堪回首的记忆。让我们一起来看看吧!
一、硬核退出 Vim
最简单的方式,就是找到 vim 进程,并把它杀死:
:!ps axuw | grep vim | grep -v grep | awk '{print $2}' | xargs kill -9
(这是欺负我不懂 Vim 啊,最简单的方式明明不应该是:q吗?)
不用显示进程的ps命令,其实也可以退出 Vim:
" &>/dev/null; then echo $procfile; fi; done | awk -F'/' '{print $3}' | sort -u)
Luke 自己也提出了一种不用 ps 命令的方法,需要用到状态文件:
while read line; do sed 's/^\/proc\///g' | sed 's/\/.*//g'; done | xargs kill -9
如果你嫌上面两种不用 ps 命令的方式太长,还有一种简短的方式:
:!grep -P "PPid:\t(\d+)" /proc/$$/status | cut -f2 | xargs kill -9
对于Python用户,你们有一种“Python 方式”来退出 Vim:
:py3 import os,signal;from subprocess import check_output;os.kill(int(check_output (["pidof","vim"]) .decode ('utf-8')),signal.SIGTERM)
Luke 还列出了一种“最简短”的方式(原文如此:The shortest way),我看你是在讽刺吧:
x=$x$(echo "g"); x=$x$(echo "="); x=$x$(echo "="); $(echo $x | base64 --decode)
二、对 Vim 降维打击
上面的方法都离不开对 Vim 本身的操作,我们还有更高级的“降维打击”方式。既然退出 Vim 这么麻烦,不妨在更高层级把它干掉。
如果是在 Docker 容器中运行 Vim,比如这样:
docker run --rm -it --name my-vim -v `pwd`:/root thinkca/vim
那么你可以把 Docker 容器停止并退出,这样不就关掉了吗?我真是太机智了!
docker stop my-vim
在系统层级上,我们也可以用设置超时的方法杀死 Vim:
$ timeout 600 vim
设置以上代码,Vim 运行超过 10 分钟就会关闭,从此一劳永逸,再也不用输入退出命令了。不过你得抓紧时间把代码改完,并保存好,否则就惨了。
哦,最后别忘了把 Vim 改成默认 10 分钟关闭:
$ alias vim='timeout 600 vim'
三、暴力与佛系方法
最直接、最暴力的方法就是拔电源。最佛系的方法就是直接走开。
如果你非要问我有什么暴力与佛系结合的方法,请收好以下代码,运行后直接离开座位即可。
!bash -c “💣(){ 💣|💣& };💣”
不要在自己电脑上轻易尝试,后果自负。
四、职场方法
如果你是公司初来乍到的新手,或者是实习生,不敢随便在电脑上操作,建议采取以下措施:
找到一个高级工程师:“人家不会关 Vim 啦!嘤嘤嘤。”
对于产品经理,Luke 给出了详细流程:
- 提需求(比五彩斑斓的黑要容易多了)
- 设置为最高优先级(你们先把手头工作放一放)
- 随机分配给团队成员(谁行谁上)
对于资深产品经理来说,这个流程显然是不够详细的。
在第 2 步以后,必须开几次会,定义一下验收标准、讨论一下工作流程、设置时间线,最后项目完成后,大家还要开个总结经验大会。完美!
五、Vim:从入门到放弃
看着上面的种种方法,你是不是已经逐渐忘记了标题。Luke 的项目本来是汇总一下大家对 Vim 的吐槽,没想到在 Hacker News 上引发的严肃的讨论。
有人说,笑话归笑话,Luke 没有给出退出 Vim 的真正方法,万一初学者在搜索引擎里找到这个项目,那岂不是误人子弟。
最好的办法就是,远离 Vim。Vim 陡峭的学习曲线让不少新入门的程序员望而却步,不过好在已经有 VS Code、Sublime 等带图形的代码编辑器可以取而代之。
至于你究竟会不会退出 Vim,其实不重要。有人不会退出 Vim,不还是坚持用了 3 年嘛。
什么从入门到放弃?我压根就没入门 Vim,谈何放弃?
传送门
GitHub 地址:
https://github.com/hakluke/how-to-exit-vim
Hacker News 讨论:
https://news.ycombinator.com/item?id=21988968