我已经看到有时:q
有效,但有时我们必须使用:q!
. 许多命令都是这种情况。我想知道!
in的一般用途是什么vim
以及何时使用它。我试图用谷歌搜索这个,但似乎搜索省略了感叹号。
Dra*_*oan 26
当您不对文件的实际内容进行任何更改时,您只需使用:q
. 但是,如果您进行编辑,vim 将不允许简单的退出,因为您可能不想放弃这些更改(特别是如果您在 vim 中长时间编辑和使用时:q
不小心)。在:q!
这种情况下是一种力量的退出操作(覆盖警告)。您可以发出强制退出所有打开的窗口(如与开Ctrlwn)用:qa!
。
您可以使用:wq
(或:x
)写出更改并退出,这有时会失败(文件已以只读方式打开(-R
在命令行上,或使用view
命令调用 vim ),在这种情况下,您可以使用:wq!
.
顺便说一句,你还可以用ZQ
做同样的操作:q!
,并ZZ
做同样的:wq
,它可以在手打字更容易:)
Vim 还有一个内置的帮助,你可以通过:help
; 退出有它自己的快速主题页面::help Q_wq
。
小智 5
没有“一般用途” !
,它只是一个修饰符。每个命令都可以选择额外的命令!
对其执行的操作。
在许多情况下,命令被编程为!
强制执行。示例包括q
您提到的,但也save
:save!
如果文件已存在,则将覆盖该文件,而如果您确定自己在做什么,save
则将返回错误并建议使用。save!
最后!
单独使用用于 shell 命令,例如:!ls
或:!mkdir foo
。
在(来自您的评论)的情况下read
,该命令read! <something>
被 Vim 解释为“执行<something>
并读取(意思是,在 Vim 中,写入缓冲区)其输出”。因此,在这里, 好像!
不是作为命令的修饰符read
,而是作为独立的命令!
。可能是该read
命令没有声明一个变体!
,所以 Vim 只是独立解释其余部分(因此它!
在 后读取“单独使用” read
),或者声明一个具有这种特定行为的read
变体( “将其余部分作为 shell 执行”)这恰好模仿了“单独使用”的作用。!
!
我想要点是:没有规则,每个命令都定义了!
要做什么,虽然试图在修饰符的效果上保持某种一致性,但没有超级严格的规则(例如“!
将永远是for forcing")允许用更少的击键获得更有用的行为,这也是一个优点。