代码之家  ›  专栏  ›  技术社区  ›  wyc

感叹号(“!”的用法是什么?在vim的命令行中,在某些命令之后,如“:w!”“?

vim
  •  29
  • wyc  · 技术社区  · 14 年前

    基本上,我想知道以下两者之间的区别: :w :w! :wq :wq!

    4 回复  |  直到 9 年前
        1
  •  23
  •   Andrew Langman    14 年前

    除了感叹号强制执行诸如写入之类的操作的情况外,它还会将命令转换为切换命令。如果我这样做:

    :set cursorline
    

    我的光标所在的行将突出显示。我可以通过以下方式关闭它:

    :set nocursorline
    

    或者我可以这样做:

    :set cursorline!
    

    该命令在两个设置之间切换,即关闭和打开。

    我经常关闭和打开光标行突出显示,toggle命令让我用一个简单的函数键映射来完成它。如果没有切换,我将需要两个映射:一个用于打开它,另一个用于关闭它。或者我必须编写一个函数来确定CursorLine设置是打开还是关闭,然后打开相反的设置。

    据我所知,这适用于所有具有打开和关闭设置的命令行设置,如hlsearch、paste、cursorcolumn、number、insearch等。

    还请注意,感叹号将切换 命令的版本。例如,还可以使用以下选项切换光标行设置:

    :set nocursorline!
    
        2
  •  37
  •   Amardeep AC9MF    14 年前

    这个!限定符告诉VIM强制执行该操作。例如,如果该文件是只读的,您将使用:w!不管怎么写。如果文件被修改,而您想退出而不保存,您将使用:q!WQ!只意味着在一个命令中强制写入和退出。

        3
  •  26
  •   Eugene Yarmash    14 年前

    感叹号通常意味着强制执行某些操作。

    出口标志的另一种用途: ! 然后是一些命令,直接从编辑器执行这个命令。

    :! ls /etc
    
        4
  •  9
  •   Luc Hermitte    14 年前

    这实际上取决于所考虑的命令。对于您列举的那些,它强制执行命令,因为其他人已经回答了您的问题。

    但是,还有其他命令,如 :global , :map , :make , :silent ,…,砰的一声( ! )有其他效果。阅读他们的文档:

    :help help
    

    (我们可以在我们定义的命令中给bang任何含义)