vim各种保存退出的区别(:wq、ZZ、:x)
起因是大多数人熟悉的场景,之前加入某个技术讨论群,根据惯例,这种群只有刚开始的时候讨论下,后面就变成广告群或者死人群。即使偶有例外,也会变成开车群,我加的这个群毫无意外的成了开车群。平时看大佬们发日常,一些老司机时不时出来飙个车,群的氛围还算活跃,前两天又一次开车时,某个群友发了个表情
马上其他人跟着来各种保存的命令,由于没看到过:x
这个命令,我特地去查了下,发现也是保存退出,我就有点郁闷了,一个保存退出这多么命令,有啥意义吗?然后又搜了下,发现还是有点区别的。
References:
- https://til.hashrocket.com/posts/2fdb6afb66-difference-between-wq-and-x
- https://www.cnblogs.com/GODYCA/archive/2013/05/09/3068895.html
- https://vi.stackexchange.com/questions/5723/what-are-the-differences-between-wqcr-xcr-and-zz-when-exiting-vim
在Linux的方面如果有不懂的东西能查手册的一定应该是先看手册,毕竟那才是最新最全最准确的。不过由于对太多内容的本能排斥,我还是习惯于先去搜一下大概区别再去看手册,直接啃手册有点费劲。
那根据搜索的结果看其实已经很清晰了,因为很多老外都是看了文档再来解释一下:
根据文档,
:x
和ZZ
是一样的,它们只保存修改过的文件,然后退出vim,不会更新文件修改时间。ZZ Write current file, if modified, and quit (same as ":x"). (Note: If there are several windows for the current file, the file is written if it was modified and the window is closed).
:wq
不管有没有修改文件,都会把当前buffer中内容写入文件,并更新文件修改时间。
各种保存退出可能导致的问题:
- ":wq"强制更新文件的修改时间,这样会让make编译整个项目时以为文件被修改过了,然后就得重新编译链接生成可执行文件。这可能会产生让人误解的后果,当然也产生了不必要的系统资源花销。
- 某些备份程序依赖于修改时间,如果使用了":wq"保存退出,即使没有修改也会更新文件的修改时间,就会导致文件被再次备份。更甚,如果程序监控了某个文件的修改时间,会触发报警。
其实看了这些总结已经可以结束了,但是好奇心驱使我去看看官方的文档,毕竟吃一手的饭才香嘛,二手的总感觉有些不舒服。
想着是vim的命令,就直接先man vim
,然后搜了下-x
参数,看着文档感觉有些不对劲:
-x Use encryption when writing files. Will prompt for a crypt key.
-X Don't connect to the X server. Shortens startup time in a terminal, but the window title
and clipboard will not be used.
这俩说明和保存退出没啥关系啊,我又想了下,:wq
和:x
之类都是在命令行模式输入的,是在vim应用中的命令,而不是Linux系统的命令,所以vim应该有一份单独的命令手册,但是我应该怎么找到那个手册呢?
猜想着命令行模式的英文是"Command mode",我搜Command会不会发现什么:
ON-LINE HELP
Type ":help" in Vim to get started. Type ":help subject" to get help on a specific subject. For example:
":help ZZ" to get help for the "ZZ" command. Use <Tab> and CTRL-D to complete subjects (":help cmdline-com‐
pletion"). Tags are present to jump from one place to another (sort of hypertext links, see ":help"). All
documentation files can be viewed in this way, for example ":help syntax.txt".
那么在文档开始的 DESCRIPTION 部分也说明了:
While running Vim a lot of help can be obtained from the on-line help system, with the ":help" command. See the ON-LINE HELP section below.
所以我们只要在vim中输入:help
就能看到怎么使用vim了,这里的说明比网上的那些文章要系统,正确的多。这里就不去看这个文档了,直接:help :x
找:x
这个命令的说明,往上翻一翻然后发现在5. Writing and quitting
这一部分,其实网上的那些保存退出这里都有详细说明。
文档仔细看一看其实各种问题迎刃而解,那么文章就到这里吧。其实这篇文章已经不仅是知识的分享了,我把探索的思路也分享了出来,比起直接写过程累点,写两篇看看效果,再决定以后文章怎么写,不过好像也没人看,哈哈~~!