如何退出Vim?

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

type :quit<Enter> to quit VIM

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

2766884 次浏览

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

  • :q退出(:quit的缩写)
  • :q!退出而不保存(:quit!的缩写)
  • :wq写和退出
  • :wq!写入并退出,如果文件缺乏写入权限,则尝试强制写入
  • :x写入并退出;类似于:wq,但仅在修改时写入(:exit的缩写)
  • :qa退出所有(:quitall的缩写)
  • :cq退出,不保存,使用非零退出代码表示失败(:cquit的缩写)

您也可以直接从“正常模式”退出Vim,方法是键入ZZ保存并退出(与:x相同)或ZQ只是退出(与:q!相同)。(请注意,这里的大小写很重要。ZZzz并不意味着同样的事情。)

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

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

我一直使用这个,因为我不想为!而烦恼。我经常通过管道将不需要保存在文件中的东西发送到Vim。我们还有一个奇怪的SVN包装器,它必须以非零值退出才能中止签入。

如果您需要在简易模式中退出Vim(同时使用-y选项),您可以通过点击Ctrl+L进入正常Vim模式,然后任何正常退出选项都可以工作。

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

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

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

在输入命令之前,点击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退货即可打开它。

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

这是最终的,没有废话,硬核退出命令,用于退出Vim的最坏情况,如果你想退出,不知道你做了什么,你不在乎你打开的文件会发生什么。

Ctrl-c输入Ctrl-\ctrl-n输入:qa!输入

这能让你大部分时间都出去。大部分时间。

你可能会天真地认为,你可以只敲Esc几次,然后做:qa!。哦,你会错的。

看看这些有趣的例子,点击Esc是不够的:

  • iCtrl-ovg(您进入插入模式,然后是视觉模式,然后是运算符挂起模式)

  • Qappend回车

  • iCtrl-ogQCtrl-r=Ctrl-k(感谢Porges为这个案例)

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

  • :set insertmode(这是Ctrl-\ctrl-n返回正常模式的情况)

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

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

在此处输入图片描述

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

Vi是有限状态机,有三个主要状态。

它以COMMAND模式开始,您可以使用非常短的击键序列盲目执行编辑器功能。您知道自己在做什么;这不适合业余爱好者。

当您想实际编辑文本时,您应该通过一些击键进入INSERT模式;常见的包括:

  • i:只插入之前光标
  • i:移动到行的开头和(i)插入
  • a:只追加之后光标
  • A:移动到行尾和(a)ppend
  • o:打开一个新行,只需下面当前行
  • O:打开一个新行,只需上面当前行
  • R:进入REPLACE模式(类似于INSERT模式)

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

您可以从EX模式退出vi:

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

wx接受文件名参数。如果vi已经知道要使用的文件名(例如,它以vi file开头),则无需再次在此处给出它。

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

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

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

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

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

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

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

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

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

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

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

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

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

这个问题在这里被问到

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

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

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

Alt-ZZ

即,按:alt + shift + z然后shift + z

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

Q-first vs. Colon-first

很多人都知道冒号-q退出策略。但对于额外的策略和后代,这里是q-colon-i-q方法:

Normal模式下,您可以键入:

q:iq<enter>

如果你仔细观察并斜视,你几乎可以将该命令大声朗读为“快速”,因为这是退出的缓慢方式。

(注意:尽管我试图幽默,但这确实有效!)