关于vi:如何退出vim编辑器?

How to exit the Vim editor?

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

1
"type :quit<Enter> to quit VIM"

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


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

  • :q退出(简称:quit)
  • :q!不存钱退出(简称:quit!)
  • :wq写并退出
  • 即使文件只有读取权限(如果文件没有写入权限:强制写入),也要执行:wq!的写入和退出操作。
  • :x写入并退出(类似于:wq,但只有在发生变化时才写入)
  • :exit写入退出(同:x)
  • :qa退出all(简称:quitall)
  • :cq不保存退出,使vim返回非零错误(即带错误退出)

您也可以直接从"正常模式"退出VIM,方法是键入ZZ保存并退出(与:x相同),或键入ZQ只退出(与:q!相同)。(注意,这里的情况很重要。ZZZZ的意思不同。)

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


在输入命令之前,请按esc键。输入后,点击return确认。

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

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

标有"*"的命令仅为VIM(在vi中未实现)。

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

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

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

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

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

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

放弃更改并退出:

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

return确认命令。

这个答案并没有引用所有vim write和quit命令和参数。实际上,它们在VIM文档中被引用。

VIM有广泛的内置帮助,键入escabkb:helpreturn打开它。

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


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

Enter image description here

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

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

一开始,vi就进入命令模式,在这里你可以盲目地输入短的、很少字符的命令。你知道你在做什么,这不是给业余爱好者的。

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

  • I:转到插入光标的位置
  • I:行首进入插入模式
  • A:在光标后追加
  • A:在行尾附加
  • o:在当前行下面打开一个新行
  • O:在当前行的位置打开一个新行

现在,回答问题:退出。

您可以从Ex模式退出vi:

  • 问:如果你没有做任何修改,或者事先保存了它们
  • Q!:忽略任何修改并退出
  • wq:保存并退出
  • X:等于WQ

wx接受一个文件名参数。如果您用一个文件名来启动vi,则不需要在这里再次给出它。

最后,最重要的一点是:如何才能达到Ex模式?

Ex模式用于长命令,您可以在屏幕的底线看到键入。在命令模式下,您按下冒号:,一个冒号将出现在底线,您可以在这里键入上述命令。

从插入模式,您需要按Esc,即退出按钮,进入命令模式,然后:进入Ex模式。

如果不确定,按Esc键,将进入命令模式。

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


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

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


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

Ctrl-CEnterEnterOCx1〔18〕enterCtrl-Ctrl-NOCx1〔19〕enter

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

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

  • iCTRL-Ovg(先进入插入模式,再进入视觉模式,再进入操作员等待模式)

  • Qappendenter公司

  • ictrl-odocx1〔24〕ctrl-rabb=ctrl-k(多亏了这起案件的报道)

  • :set insertmode(这是CTRL-CTRL N返回正常模式时的情况)

编辑:由于上述情况,此答案已更正。过去是:

escescescab:qa!enter

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

vienterdocx1〔19〕enter

所以一个完整的命令,"我不想知道我做了什么,我不想保存任何东西,我现在就想出去!"将是

vienterbescskakbdskakb:qa!输入


如果您需要在简易模式下退出VIM(同时使用-y选项),您可以通过点击ctrl+l进入正常VIM模式,然后任何正常退出选项都将起作用。


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

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

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

Ex模式-这是另一个编辑器,例如,它是一个线条编辑器。它每行或基于一系列行工作。在此模式下,屏幕底部会显示一个:。这是前编辑。

为了退出VIM,您可以在处于Ex模式或命令模式时退出。当处于输入模式时,不能退出VIM。

退出Ex模式

  • 您需要确保您处于命令模式。为此,只需按esc键。

  • :键进入Ex模式

  • 在Ex模式下使用以下任意组合退出:

    :q—退出:q!—不保存就退出:wq—保存和退出或写入和退出:wq!—与wq相同,但如果文件权限为只读,则强制写入:x—写入和退出:qa—全部退出。打开多个文件时很有用,如:vim abc.txt xyz.txt

  • 退出命令模式

  • 按退出键。如果您处于命令模式,那么您可能已经完成了这项工作。

  • 按大写zz(shift zz)—保存和退出

  • 按大写ZQ(shift zq)—不存钱退出。


  • 点击esc(或我的电脑上的cmd+c)后,必须点击:,命令提示才会出现。然后,您可以进入quit

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


    我通过在Windows上安装Git客户端获得了Vim。:q不会帮我离开Vim。但是,:exit确实……


    实际上,退出vim非常容易。

    escapebkbd,转两圈,踢猫,泡一杯完美的茶,跑四分钟英里,攀登珠穆朗玛峰,让凯塞尔跑在12秒以下,营救小林寺丸,夺取铁王座,获得世界和平,按:qenter


    这是你如何离开维姆。按ctrl&;'z',然后按'x'和'c'。

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


    我想在这个上面加两分钱。这里有人问这个问题。

    带编号的q命令关闭该位置的给定分割。

    :q:q将结束该位置的分割。

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

    1
    2
    3
    4
    5
    6
    7
    8
    -------------------------------------------------
    |               |               |               |
    -------------------------------------------------
    |               |               |               |
    |               |               |               |
    |    Split 1    |    Split 2    |     Split 3   |
    |               |               |               |
    -------------------------------------------------

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

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

    如果传递给命令的拆分位置大于当前拆分的数目,则只会关闭最后一个拆分。

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