4589

我被困住了,无法逃脱。它说:

"type :quit<Enter> to quit VIM"

但是当我键入它时,它只会出现在对象主体中。

4

13 回答 13

5714

Esc键进入“普通模式”。然后您可以键入:以进入“命令行模式”。冒号 ( :) 将出现在屏幕底部,您可以键入以下命令之一。要执行命令,请按Enter键。

  • :q 退出(的缩写:quit
  • :q!不保存就退出(缩写:quit!
  • :wq写和退出
  • :wq!即使文件只有读取权限,也要写入和退出(如果文件没有写入权限:强制写入)
  • :x 写入和退出(类似于:wq,但仅在有更改时写入)
  • :exit写入和退出(同:x
  • :qa全部退出(的缩写:quitall
  • :cq退出而不保存并使 Vim 返回非零错误(即退出错误)

您也可以通过键入ZZ保存并退出(与 相同:x)或ZQ仅退出(与 相同:q!)直接从“普通模式”退出 Vim。(请注意,大小写在这里很重要。ZZ并不zz意味着同样的事情。)

Vim 有广泛的帮助 - 您可以使用:help命令访问 - 您可以在其中找到所有问题的答案和初学者教程。

于 2012-08-06T12:46:16.327 回答
337

图片值一千个 Unix 命令和选项:

在此处输入图像描述

我每学期都把这个画给我的学生,之后他们似乎掌握了 vi。

Vi 是一个只有三个状态的有限状态机。

启动后,vi 进入 COMMAND 模式,您可以在其中盲目地键入简短的、少量字符的命令。你知道你在做什么;这不适合业余爱好者。

当您想实际编辑文本时,您应该使用一些单字符命令进入 INSERT 模式:

  • i:在光标处进入 INSERT
  • I:在行首进入 INSERT 模式
  • a:在光标追加
  • A:在行尾追加
  • o:在当前行下方新开一行
  • O:在当前行的地方一个新行

现在,回答问题:退出。

您可以从 EX 模式退出 vi:

  • q:如果您没有进行任何修改,或事先保存它们
  • q!:忽略任何修改并退出
  • wq:保存并退出
  • x:这等于 wq

wx接受文件名参数。如果您以文件名启动 vi,则无需在此处再次提供。

最后,最重要的一点:如何进入 EX 模式?

EX 模式适用于您可以在屏幕底部看到输入的长命令。在 COMMAND 模式下,您按下冒号, :,冒号将出现在底线,您可以在此处键入上述命令。

在 INSERT 模式下,您需要按 ESC,即 Escape 按钮,进入 COMMAND 模式,然后: 进入 EX 模式。

如果您不确定,请按 ESC,这将使您进入命令模式。

稳健的方法是 ESC-:-x-Enter 保存文件并退出。

于 2017-05-26T12:24:30.957 回答
193

在输入命令之前,请Esc。输入后,点击Return确认。

Esc完成当前命令并将 Vim 切换到正常模式。现在,如果您按::将出现在屏幕底部。这确认您实际上是在键入命令而不是在编辑文件。

大多数命令都有缩写,可选部分括在括号中:c[ommand].

标有“*”的命令仅适用于 Vim(未在 Vi 中实现)。

安全退出(如果有未保存的更改则失败):

  • :q[uit] 退出当前窗口。如果这是最后一个窗口,请退出 Vim。当在当前缓冲区中进行更改时,这将失败。
  • :qa[ll]* 退出所有窗口和 Vim,除非有一些缓冲区已被更改。

提示退出(如果有未保存的更改则提示)

  • :conf[irm] q[uit]* 退出,但是当有一些缓冲区被改变时给出提示。
  • :conf[irm] xa[ll]* 写入所有改变的缓冲区并退出 Vim。当某些缓冲区无法写入时,会出现提示。

写入(保存)更改并退出:

  • :wq写入当前文件(即使它没有更改)并退出。当文件为只读文件或缓冲区没有名称时,写入失败。:wqa[ll]* 适用于所有窗口。
  • :wq!相同,但甚至写入只读文件。:wqa[ll]!* 适用于所有窗口。
  • :x[it], ZZ(有细节)。仅当文件被更改并退出时才写入文件, :xa[ll]* 适用于所有窗口。

放弃更改并退出:

  • :q[uit]! ZQ* 不写就退出,可见缓冲区发生变化时也是如此。有更改的隐藏缓冲区时不退出。
  • :qa[ll]!*, :quita[ll][!]* 退出 Vim,对缓冲区的所有更改(包括隐藏)都将丢失。

Return确认命令。

这个答案没有引用所有 Vim 写入和退出命令和参数。事实上,它们在Vim 文档中被引用。

Vim 有大量的内置帮助,键入Esc:helpReturn打开它。

这个答案的灵感来自另一个,最初由@dirvine 创作并由其他 SO 用户编辑。我已经包含了来自 Vim 参考、SO 评论和其他一些来源的更多信息。Vi 和 Vim 的差异也反映出来。

于 2015-06-08T13:34:41.397 回答
92

如果你想退出而不保存在 Vim 中让 Vim 返回一个非零的退出代码,你可以使用:cq.

我一直都在使用它,因为我懒得换小指!。我经常将不需要保存在文件中的东西通过管道传输到 Vim。我们还有一个奇怪的 SVN 包装器在工作,它必须以非零值退出才能中止签入。

于 2014-01-28T10:59:56.423 回答
70

这是终极的、严肃的、硬核的退出命令,如果你想退出 Vim 的最坏情况,不知道你做了什么,你也不关心你打开的文件会发生什么。

Ctrl- cEnterCtrl-\Ctrl-nEnter:qa!Enter

这会让你大部分时间都出去。最多。

你可能会天真地认为,你可以敲Esc几下然后再做:qa!。哦,你怎么会弄错的。

看看这些点击Esc不够的有趣案例:

  • iCtrl- ovg(您进入插入模式,然后是可视模式,然后是操作员挂起模式)

  • QappendEnter

  • iCtrl- ogQCtrl- r=Ctrl- k(感谢 porges 提供此案例)

  • iCtrl- ogQCtrl-r=inputdialog('foo','bar')Enter

  • :set insertmode(这是一种情况Ctrl-\Ctrl-n将您返回到正常模式)

于 2015-06-24T13:38:32.313 回答
46

如果您需要以简单模式退出 Vim (使用选项时),您可以通过按+-y进入正常 Vim 模式,然后任何正常退出选项都将起作用。CtrlL

于 2014-07-18T13:48:59.740 回答
36

Vim 具有三种操作模式:输入模式、命令模式和 Ex 模式。

输入模式- 您键入的所有内容,所有击键都会在屏幕上回显。

命令模式或转义模式- 您在此模式下键入的所有内容都被解释为命令。

Ex 模式- 这是另一个编辑器,例如。它是一个行编辑器。它适用于每行或基于一系列行。在此模式下,:屏幕底部会出现一个。这是前任编辑。

要退出 Vim,您可以在 ex 模式或命令模式下退出。当你处于输入模式时,你不能退出 Vim。

退出 ex 模式

  1. 您需要确保您处于命令模式。为此,只需按下Esc键。

  2. :键进入 ex 模式

  3. 在 ex 模式下使用以下任意组合退出:

    :q- 退出 :q!- 不保存 :wq退出 - 保存并退出或写入并退出 :wq!- 与 wq 相同,但在文件权限为只读的情况下强制写入 :x- 写入并退出 :qa- 全部退出。当打开多个文件时很有用,例如:vim abc.txt xyz.txt

退出命令模式

  1. 按退出键。如果您处于命令模式,您可能已经这样做了。

  2. 按大写 ZZ ( shift zz) - 保存并退出

  3. 按大写 ZQ ( shift zq) - 退出而不保存。

于 2017-05-24T02:46:27.060 回答
31

点击ESC(或我的电脑上的cmd+ C)后,您必须点击:才能显示命令提示符。然后,您可以输入quit.

您可能会发现机器不允许您退出,因为您的信息尚未保存。如果您仍然想退出,请!在退出后直接输入(即:quit!)。

于 2014-11-28T15:25:00.503 回答
23

我通过在 Windows 上安装 Git 客户端获得了 Vim。:q不会为我退出 Vim。:exit然而...

于 2015-02-05T11:30:11.827 回答
13

带有数字的q命令关闭该位置的给定拆分。

:q<split position>:<split position>q将关闭该位置的拆分。

假设您的 Vim 窗口布局如下:

-------------------------------------------------
|               |               |               |
-------------------------------------------------
|               |               |               |
|               |               |               |
|    Split 1    |    Split 2    |     Split 3   |
|               |               |               |
-------------------------------------------------

如果您运行该q1命令,它将关闭第一个拆分。q2将关闭第二次拆分,反之亦然。

退出命令中拆分位置的顺序无关紧要。:2q:q2将关闭第二个拆分。

如果您传递给命令的拆分位置大于当前拆分的数量,它将简单地关闭最后一个拆分。

例如,如果您q100在上面只有三个拆分的窗口设置上运行,它将关闭最后一个拆分(拆分 3)。

这个问题已经在这里问过了。

于 2018-02-12T23:41:09.190 回答
3

一种有保证的方法是杀死运行 vim 的端口

! kill - 9 $(ps | grep vim | cut -d " " -f 1)
于 2021-07-29T18:55:44.333 回答
1

从四种模式中的任何一种:插入视觉命令命令行(ex)模式,如果更改,请按此保存,然后退出 vim:

Alt-Z Z

即按:alt + shift + zshift + z

为什么会这样:从插入模式和显然其他模式,您可以退出到命令模式并通过按住 Alt 和任何命令字符的组合来执行命令。第二个 Alt+Shift+Z 被忽略,因此您必须放开 Alt 但保留 Shift。锻炼肌肉记忆!:-)

于 2021-12-30T07:36:26.510 回答
0

:q 相当 :wq 保存和相当 :q!不服就戒

于 2022-02-28T08:42:20.357 回答