在某些命令如“:w!”之后,在Vim的命令行中使用感叹号('!')有什么用?

时间:2010-06-22 15:34:59

标签: vim

基本上我想知道::w:w!:wq:wq!

之间的区别

4 个答案:

答案 0 :(得分:39)

!限定符告诉Vim强制操作。例如,如果文件是只读的,您将使用:w!无论如何写它。如果文件已被修改并且您想要在不保存的情况下退出,则可以使用:q!。 :WQ!只是意味着在一个命令中强制写入和退出。

答案 1 :(得分:28)

感叹号通常意味着强行采取行动。

另一种使用感叹号:!后跟一些命令直接从编辑器执行此命令。

:! ls /etc

答案 2 :(得分:26)

除了感叹号强制事物(如写入)之外,它还会将命令转换为切换命令。所以,如果我这样做:

:set cursorline

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

:set nocursorline

或者我能做到:

:set cursorline!

该命令在两个设置之间翻转,关闭和打开。

我经常关闭和打开光标线高亮显示,并且toggle命令允许我使用简单的功能键映射。没有切换,我需要两个映射:一个打开它,另一个打开它。或者我必须编写一个函数来确定光标线设置是打开还是关闭,然后打开相反的设置。

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

另请注意,感叹号将切换命令的 no 版本。例如,您还可以使用以下方法切换光标线设置:

:set nocursorline!

答案 3 :(得分:9)

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

但是,还有其他命令,例如:global:map:make:silent,...,其中爆炸(!)还有其他效果。阅读他们的文档:

:help help

(我们可以在我们定义的命令中给出我们想要的任何意义)