vim各种保存退出的区别(:wq、ZZ、:x)

起因是大多数人熟悉的场景,之前加入某个技术讨论群,根据惯例,这种群只有刚开始的时候讨论下,后面就变成广告群或者死人群。即使偶有例外,也会变成开车群,我加的这个群毫无意外的成了开车群。平时看大佬们发日常,一些老司机时不时出来飙个车,群的氛围还算活跃,前两天又一次开车时,某个群友发了个表情
Snipaste_2020-04-12_00-25-41.jpg

马上其他人跟着来各种保存的命令,由于没看到过:x这个命令,我特地去查了下,发现也是保存退出,我就有点郁闷了,一个保存退出这多么命令,有啥意义吗?然后又搜了下,发现还是有点区别的。

Snipaste_2020-04-12_00-15-58.jpg

References:

在Linux的方面如果有不懂的东西能查手册的一定应该是先看手册,毕竟那才是最新最全最准确的。不过由于对太多内容的本能排斥,我还是习惯于先去搜一下大概区别再去看手册,直接啃手册有点费劲。

那根据搜索的结果看其实已经很清晰了,因为很多老外都是看了文档再来解释一下:

  • 根据文档,:xZZ是一样的,它们只保存修改过的文件,然后退出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中内容写入文件,并更新文件修改时间。

各种保存退出可能导致的问题:

  1. ":wq"强制更新文件的修改时间,这样会让make编译整个项目时以为文件被修改过了,然后就得重新编译链接生成可执行文件。这可能会产生让人误解的后果,当然也产生了不必要的系统资源花销。
  2. 某些备份程序依赖于修改时间,如果使用了":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这一部分,其实网上的那些保存退出这里都有详细说明。
Snipaste_2020-04-12_01-07-04.jpg

文档仔细看一看其实各种问题迎刃而解,那么文章就到这里吧。其实这篇文章已经不仅是知识的分享了,我把探索的思路也分享了出来,比起直接写过程累点,写两篇看看效果,再决定以后文章怎么写,不过好像也没人看,哈哈~~!

标签: none

添加新评论

ali-01.gifali-58.gifali-09.gifali-23.gifali-04.gifali-46.gifali-57.gifali-22.gifali-38.gifali-13.gifali-10.gifali-34.gifali-06.gifali-37.gifali-42.gifali-35.gifali-12.gifali-30.gifali-16.gifali-54.gifali-55.gifali-59.gif

加载中……