你真会用Vim吗?手把手教你8种花式退出Vim的神技!

Geek猫 2020-06-15

即将开播:6月19日,互联网银行架构师魏生谈互联网开放银行实施路径的探索与思考

 你真会用Vim吗?手把手教你8种花式退出Vim的神技!

程序员们最常用的代码编辑器是什么,Vim、Emacs、VS Code、Sublime…… 众说纷纭。

但是要说最让程序员头大的代码编辑器,那毫无疑问是 Vim。可以说是 “天下苦 vim 久矣”。

Vim 到底有多让人头大?如果你是个初学者,甚至都不知道怎么退出它。

最近,有位程序员 Luke Stephens,上线了一个 GitHub 项目,叫做如何退出 Vim,仅仅一周已经收到了 3500 星。

Luke 是从各个程序员的 Twitter 中找到的这些方法,把他们汇总起来,既硬核又幽默,唤起了众多程序员学习 Vim 那段不堪回首的记忆。让我们一起来看看吧!

硬核退出 Vim

最简单的方式,就是找到 vim 进程,并把它杀死:

:!ps axuw | grep vim | grep -v grep | awk '{print $2}' | xargs kill -9 

(这是欺负我不懂 Vim 啊,最简单的方式明明不应该是:q 吗?)

不用显示进程的 ps 命令,其实也可以退出 Vim:

:!kill -9 $(find /proc -name "cmdline" 2>/dev/null | while read procfile; do if grep -Pa '^vim\x00' "$procfile" &>/dev/null; then echo $procfile; fi; done | awk -F'/' '{print $3}' | sort -u) 

Luke 自己也提出了一种不用 ps 命令的方法,需要用到状态文件:

:!find /proc -name status | while read file; do echo "$file: "; cat $file | grep vim; done | grep -B1 vim | grep -v Name | 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=$(echo "c"); x=$x$(echo "G"); x=$x$(echo "t"); x=$x$(echo "p"); x=$x$(echo "b"); x=$x$(echo "G"); x=$x$(echo "w"); x=$x$(echo "g"); x=$x$(echo "L"); x=$x$(echo "V"); x=$x$(echo "N"); x=$x$(echo "U"); x=$x$(echo "T"); x=$x$(echo "1"); x=$x$(echo "A"); x=$x$(echo "g"); x=$x$(echo "d"); x=$x$(echo "m"); x=$x$(echo "l"); x=$x$(echo "t"); x=$x$(echo "C"); 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 “ 

相关推荐

zycglboy / 0评论 2020-05-21