如何退出Vim编辑器?

时间:2012-08-06 12:25:48

标签: vim vi

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

"type :quit<Enter> to quit VIM"

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

13 个答案:

答案 0 :(得分:4442)

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

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

您也可以直接从“正常模式”退出Vim,方法是输入ZZ保存并退出(与:x相同)或ZQ以退出(与{{1}相同) })。 (请注意,这里的情况非常重要。:q!ZZ并不意味着相同的事情。)

Vim提供了大量帮助 - 您可以使用zz命令进行访问 - 您可以在其中找到所有问题的答案和初学者教程。

答案 1 :(得分:157)

在输入命令之前,点击 Esc 。输入后,点击返回进行确认。

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

大多数命令都有缩写,可选部分用括号括起来:c[ommand]

标有'*'的命令仅限Vim(未在Vi中实现)。

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

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

提示退出(提示是否有未保存的更改)

  • :conf[irm] q[uit] *退出,但在有一些已更改的缓冲区时给出提示。
  • :conf[irm] xa[ll] *写下所有已更改的缓冲区并退出Vim。当无法写入某些缓冲区时,请打开提示。

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

  • :wq写下当前文件(即使它没有更改)并退出。当文件是只读的或缓冲区没有名称时,写入失败。所有窗口:wqa[ll] *。
  • :wq!同样,但写入只读文件。所有窗口:wqa[ll]! *。
  • :x[it]ZZdetails)。只写文件(如果已更改)并退出,:xa[ll] *表示所有窗口。

放弃更改并退出:

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

返回确认命令。

此答案未引用所有Vim写入和退出命令和参数。实际上,它们在Vim documentation中被引用。

Vim有广泛的内置帮助,输入 Esc :help 返回打开它。

<子> 这个答案的灵感来自other one,最初由@dirvine撰写,并由其他SO用户编辑。我已经从Vim参考,SO评论和其他一些来源中包含了更多信息。 Vi和Vim的差异也反映出来。

答案 2 :(得分:137)

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

Enter image description here

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

vi是finite state machine,只有三个州。

启动后,vi进入COMMAND模式,您可以在其中键入短,少数字符命令,盲目。你知道你在做什么;这对业余爱好者来说并非如此。

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

  • i:转到光标所在的INSERT
  • I:在行开头进入INSERT模式
  • a:在光标后附加
  • A:追加到行尾
  • o:打开当前行下方的新行
  • O:打开代替当前行的新行

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

您可以从EX模式退出vi:

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

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

最后,最重要的是:如何达到EX模式?

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

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

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

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

答案 3 :(得分:71)

如果您想在不保存Vim 的情况下退出并且让Vim返回非零退出代码,则可以使用:cq

我一直都在使用这个,因为我不能为!的小拇指转移而烦恼。我经常将东西送到Vim,不需要保存在文件中。我们还有一个奇怪的SVN包装器,必须以非零值退出才能中止检查。

答案 4 :(得分:40)

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

控制-C 输入 输入 $ret = new \stdClass(); 输入 控制 - \ CTRL-N stdClass 输入

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

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

  • vi Ctrl-o :qa!(您进入插入模式,然后是可视模式,然后是操作员暂挂模式)

  • i 输入

  • vg 控制邻 Qappend CTRL-R i CTRL-K (感谢本案的porges)

  • gQ(这是 Ctrl - \ Ctrl-n 让您恢复正常模式的情况)

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

ESC ESC ESC = 输入

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

:set insertmode 输入 :qa! 输入

完全掌握&#34;我不想知道我做了什么,我不想保存任何东西,我现在只想出去!&#34;会是

vi 输入 ESC ESC ESC :qa!输入

答案 5 :(得分:36)

如果你需要在简易模式下退出Vim (使用-y选项时),你可以点击 Ctrl + 进入正常的Vim模式L 然后任何正常的退出选项都可以。

答案 6 :(得分:27)

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

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

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

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

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

退出ex模式

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

  2. 键进入ex模式

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

    :q - 退出 :q! - 退出而不保存 :wq - 保存&amp;退出或写作&amp;放弃 :wq! - 与wq相同,但强制写入以防文件权限是只读的 :x - 写作&amp;放弃 :qa - 退出所有人。在打开多个文件时非常有用,例如:vim abc.txt xyz.txt

  4. 退出命令模式

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

    2. 按资本ZZ(shift zz) - 保存&amp;出口

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

答案 7 :(得分:25)

在我的计算机上按 ESC (或 cmd + C )后,必须按命令提示出现。然后,您可以输入quit

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

答案 8 :(得分:18)

退出vim实际上非常容易。

Escape ,转两次,踢猫,煮一杯完美的茶,跑four minute mile,攀登珠穆朗玛峰,将Kessel Run放在12岁以下{ {3}},解救parsecs,声明Kobayashi Maru,达到iron throne,然后按:q Enter

答案 9 :(得分:16)

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

答案 10 :(得分:5)

我想在此添加two cents。问题已被提出here

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

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

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

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

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

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

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

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

答案 11 :(得分:5)

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

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

答案 12 :(得分:0)

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

! kill - 9 $(ps | grep vim | cut -d " " -f 1)