如何退出 Vim 编辑器?

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

"type :quit<Enter> to quit VIM"

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

答案

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

  • :q退出( :quit缩写)
  • :q!退出而不保存( :quit!缩写)
  • :wq编写并退出
  • :wq!即使文件只有读权限也可以写并退出(如果文件没有写权限:强制写)
  • :x进行写入和退出(类似于:wq ,但仅在有更改时才写入)
  • :exit写入并退出(与:x相同)
  • :qa退出所有( :quitall
  • :cq不保存就退出,并使 Vim 返回非零错误(即退出时出现错误)

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

Vim 提供了广泛的帮助 - 您可以使用:help命令进行访问 - 在这里您可以找到所有问题的答案以及针对初学者的教程。

输入命令之前, 按 Esc 。输入后,点击 “ 返回”以确认。

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,对缓冲区的所有更改(包括隐藏的更改)都将丢失。

回车键确认命令。

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

Vim 具有广泛的内置帮助,请键入Esc :help Return将其打开。

这个答案是由另一个答案启发的,该答案最初由 @dirvine 编写,并由其他 SO 用户编辑。我从 Vim 参考资料,SO 注释和其他一些来源中获得了更多信息。 Vi 和 Vim 的差异也被反映出来。

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

在此处输入图片说明

我每学期将其吸引到我的学生那里,他们似乎后来掌握了 vi。

vi 是只有三个状态的有限状态机

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

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

  • i:在光标位置转到 INSERT
  • I:在行首进入 INSERT 模式
  • a: 光标追加
  • 答:在行尾追加
  • o:在当前行下方打开新行
  • O:在当前行的位置打开新行

现在,回答问题:退出。

您可以从 EX 模式退出 vi:

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

wx接受文件名参数。如果以文件名开头 vi,则无需在此处再次输入。

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

EX 模式适用于长命令,您可以在屏幕底行看到键入内容。在 COMMAND 模式下,按冒号: ,冒号将出现在底行,您可以在其中键入上述命令。

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

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

因此,健壮的方法是 ESC-:-x-Enter,它可以保存文件并退出。

如果要退出而不保存在 Vim 中并使 Vim 返回非零退出代码,则可以使用:cq

我一直都用这个,因为我不愿意为平淡的转变而烦恼! 。我经常将不需要保存在文件中的内容通过管道传送到 Vim。我们还有一个奇怪的 SVN 包装器,该包装器必须以非零值退出才能中止签入。

这是在最坏的情况下退出 Vim 的情况,如果您只是想退出,不知道自己做了什么,并且不在乎打开的文件会发生什么。

Ctrl-c 输入 Enter vi 输入 Ctrl- \ Ctrl-n :qa! 输入

这应该使您大部分时间都无法使用。

在一些有趣的情况下,您需要这样的东西:

  • i Ctrl-o vg (进入插入模式,然后进入可视模式,然后进入操作员待命模式)

  • Qappend 输入

  • i Ctrl-o gQ Ctrl-r = Ctrl-k (在这种情况下要感谢 porges)

  • :set insertmode (在Ctrl- \ Ctrl-n返回正常模式的情况下)


编辑:由于上述情况,此答案已得到纠正。它曾经是:

Esc Esc Esc :qa! 输入

但是,如果您进入了 Ex 模式,那将不起作用。在这种情况下,您需要执行以下操作:

vi 输入 :qa! 输入

因此,有一个完整的命令:“我不想知道自己做了什么,也不想保存任何东西,我现在就想出去!” 将会

vi 输入 Esc Esc Esc :qa!输入

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

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 )- 退出而不保存。

按下ESC (或我计算机上的cmd + C )后,您必须按下才能显示命令提示符。然后,您可以输入quit

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

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

我想为此加两分钱这里已经问这个问题。

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

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

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

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

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

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

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

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