题 如何退出Vim编辑器?


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

"type :quit<Enter> to quit VIM"

但是当我输入它时它只是出现在物体中。


2719
2017-08-06 12:25


起源


你只是想戒掉VIM吗?如果是这种情况,请按“escape”然后键入“:q” - Pop
别忘了 结肠!你应该输入 :quit 然后打了 [ENTER] 键。 - Farahmand
学习vim的基础知识非常简单,它内置于您的系统中。在终端类型“vimtutor”。 25分钟后,您将比通常的文本编辑器更快! - Mark Robson
阻止 git commit 将来发送给vim: git config --global core.editor="nano" - Tom Kelly
链接到SO博客文章为后代 - Hong Ooi


答案:


退出 键进入“正常模式”。然后你可以输入 : 进入“命令行模式”。结肠(:)将出现在屏幕的底部,您可以键入以下命令之一。要执行命令,请按 输入 键。

  • :q  退出(简称 :quit
  • :q! 退出而不保存(简称 :quit!
  • :wq 写作和退出
  • :wq! 写入和退出即使文件只有读权限(如果文件没有写权限:强制写入)
  • :x  写作和退出(类似于 :wq,但只有在有变化时才写
  • :exit 写作和退出(与...相同) :x
  • :qa 全部退出(简称 :quitall
  • :cq 退出而不保存并使Vim返回非零错误(即退出并显示错误)

您也可以通过键入直接从“命令模式”退出Vim ZZ 保存和退出(与...相同) :x) 要么 ZQ 刚刚退出(与...相同) :q!)。 (注意案例在这里很重要。 ZZ 和 zz 不是一回事。)

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


3762
2017-08-06 12:46



除非你重新映射esc或在你的.vimrc中有一个奇怪的映射,否则它肯定应该。如果在linux上输入xev并确保escape是你在逃脱时得到的键类型。 - dirvine
请记住,如果你不能使用Esc(比如我,因为我的shell在TotalTerminal中),你可以使用ctrl + c。 vim.wikia.com/wiki/Avoid_the_escape_key - dotnetCarpenter
:x == ZZ 但 :x != :wq。 :x 写文件iff文件已更改, :wq 始终写文件(即使用时) inotify)。 - Hauleth
说实话,我使用vim的帮助系统比使用vim本身更困难,并且主要依靠快速参考卡和在线文档。 - bgvaughan
如果您对该文件没有权限但具有sudo权限 :w ! sudo tee % - tvlooy


在输入命令之前 退出 键。输入后,点击 返回 确认。

退出 完成当前命令并将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有广泛的内置帮助,类型 退出:help返回 打开它。

这个答案的灵感来自于 另一个,最初由@dirvine撰写,并由其他SO用户编辑。我从Vim参考,SO评论和其他一些来源中收集了更多信息。 Vi和Vim的差异也反映出来。


140
2018-06-08 13:34





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

Enter image description here

我每个学期都会向学生画这个,然后他们似乎抓住了vi。

vi是一个 有限状态机 只有三个州。

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

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

  • i:转到INSERT代替光标
  • 我:在行的开头进入INSERT模式
  • a:追加  光标
  • A:追加到最后一行
  • ○: 打开 当前行下方的新行
  • ○: 打开 在当前行的位置换行

现在,回答这个问题:退出。

您可以从EX模式退出vi:

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

w 和 x 接受文件名参数。如果您使用文件名启动vi,则无需再次在此处提供。

最后,最重要的是:你怎么能达到EX模式?

EX模式适用于长命令,您可以在屏幕底部看到输入。从命令模式,你推冒号, :,冒号将出现在底行,您可以在其中键入上述命令。

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

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

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


71
2018-05-26 12:24



谢谢,图片非常有帮助。但是,对我来说 w 不会从Ex更改为Command模式,但是 Esc 确实。我究竟做错了什么? - Nick Volynkin
如果您编写保存文件的w-Enter并返回COMMAND模式。我写了它,以获得保存和退出命令的完整图片。 - Gergely
哦,你的意思是 :w。然后它很有意义。顺便说一句,是否有从磁盘重新加载的命令(即,还原更改但不关闭文件)?如果是这样,那可能就在旁边 w 在图中。 - Nick Volynkin
@Gergely我只是弄清楚了这个混乱!从文档中,也称为普通模式 命令模式!所以,命令模式!=命令行模式。哇! - jpaugh
@NickVolynkin从磁盘重新加载的命令是 :e (或更有可能 :e! 因为它会警告你未经保存的更改 !) - JDS


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

我一直都在用这个,因为我不能为小调换班而烦恼 !。我经常把东西送到Vim,不需要保存在文件中。我们还有一个奇怪的SVN包装器,它必须以非零值退出才能中止签入。


65
2018-01-28 10:59



我也使用它来中止git提交,或visudo,或crontab,... - Josh Lee


这是针对退出Vim的最坏情况,如果你只是想要,不知道你做了什么,你不关心你打开的文件会发生什么。

按Ctrl-C输入输入vi输入按Ctrl - \CTRL-N:qa!输入

这应该会让你在大部分时间出门。

一些有趣的案例,你需要这样的东西:

  • i按Ctrl-Ovg (您进入插入模式,然后进入可视模式,然后进入操作员暂挂模式)

  • Qappend输入

  • i按Ctrl-OgQCTRL-R=按Ctrl-K (感谢这个案例的porges)

  • :set insertmode (这是一个例子 按Ctrl - \CTRL-N 返回正常模式)


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

退出退出退出:qa!输入

但是,如果您已进入Ex模式,则不起作用。在这种情况下,您需要:

vi输入:qa!输入

所以完整的命令“我不想知道我做了什么,我不想保存任何东西,我现在只想出去!”将会

vi输入退出退出退出:qa!输入


38
2018-06-24 13:38



啊,什么出色的效率。我的意思是,执行经常需要的操作只需要7次击键 - cavalcade
@cavalcade这是一种非常通用的方法,可确保编辑器处于正常模式,然后安全地退出。在正常使用中,您只需要 :q要么 :wq - Dan Passaro
不够通用!如果我(初学者)输入怎么办? i<Ctrl-O>gQ<Ctrl-R>=<Ctrl-K>? - porges
学习vim模式的工作比记忆这个序列更容易。 - jwg
@jwg等到你学会了如何将这个键序列写入缓冲区,la ^V,和 y把它变成一个宏! ;-) - jpaugh


如果您需要退出Vim 简单的模式 (使用时 -y 选项)您可以通过点击进入正常的Vim模式 按Ctrl + 大号 然后任何正常的退出选项都可以。


32
2017-07-18 13:48



还有一个选择:你可以使用 Ctrl+O 暂时离开INSERT模式然后输入 :q。使用此组合的技巧在普通vim中也很有用,可以执行单个命令并返回INSERT模式。 - Andrey Starodubtsev


击中后 退出 (要么 CMD + C 在我的电脑上)你必须打  用于显示命令提示符。然后,你可以进入 quit

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


23
2017-11-28 15:25





Vim有三种操作模式:输入模式,命令模式和防爆模式。

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

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

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

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

退出ex模式

  1. 您需要确保处于命令模式。要做到这一点,只需按下 退出 键。

  2. 按下转到前进模式  键

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

    :q - 放弃 :q! - 不保存直接退出 :wq  - 保存并退出或写入并退出 :wq!  - 与wq相同,但强制写入以防文件权限是只读的 :x  - 写和退出 :qa  - 退出所有。打开多个文件时很有用,如: vim abc.txt xyz.txt

退出命令模式

  1. 按退出键。如果您处于命令模式,则可能已经完成了此操作。

  2. 按资本ZZ(shift zz) - 保存并退出

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


22
2018-05-24 02:46



实际上你称之为“前模式”的是什么 命令行模式。它允许您输入ex命令,但有一些 重要的区别。 - jpaugh
谢谢@jpaugh。这些链接目前正在下降。但我明白你的观点。 - tovishalck


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


14
2018-02-05 11:30



同样地,对于vim在macintosh上执行git这个工作。 - Joel
@Joel刚刚在我的Mac上检查过这两个命令是合法的(vim -version 7.3)。 - Nick Volynkin
对于 Git Bash 在窗户上,在 Vim 有时 ESC 不工作使用 CTRL + [ 代替。 - Val


我想加我的 两分钱 就此而言。有问题的问题 这里

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

:q<split position>要么 :<split position>q 将关闭该位置的分割。

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

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

如果你跑了 q1 命令,它将关闭第一个拆分。 q2 将关闭第二次拆分,反之亦然。

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

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

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


2
2018-02-12 23:41





以下是退出Vim的方法。按Ctrl&'Z',然后按'X'和'C'。

Ctrl -> +Z -> +X -> +C

0
2018-05-31 06:46