我被卡住了,无法逃脱。它显示:
type :quit<Enter> to quit VIM
但当我输入时,它只是出现在对象正文中。
按下Esc键进入“正常模式”,然后您可以输入:
进入“命令行模式”。一个冒号(:
)会出现在屏幕底部,您可以输入以下其中之一的命令。要执行命令,请按Enter键。
:q
退出(缩写为:quit
):q!
退出而不保存(缩写为:quit!
):wq
写入并退出:wq!
写入并退出,如果文件没有写入权限,则尝试强制写入:x
写入并退出;与:wq
类似,但仅在修改后才写入(缩写为:exit
):qa
退出全部(缩写为:quitall
):cq
退出,不保存,并带有非零退出代码以指示失败(缩写为:cquit
)您也可以直接从“正常模式”退出Vim,方法是键入ZZ
保存并退出(与:x
相同),或者键入ZQ
仅退出(与:q!
相同)。 (请注意,大小写很重要。 ZZ
和zz
的含义不同。)
Vim有广泛的帮助功能-您可以使用:help
命令访问,其中可以找到所有问题的答案和初学者教程。
:x
等同于ZZ
,但是:x
和:wq
不同。:x
只有在文件发生更改时才会写入文件,而:wq
始终会写入文件(即使使用inotify
)。 - Hauleth:w ! sudo tee%
命令进行保存。 - tvlooy图片胜过一千条Unix命令和选项:
我每学期向我的学生们展示这个图,他们似乎之后就能掌握vi了。
Vi是一个具有三种主要状态的有限状态机。
它开始于命令模式,在该模式下,您使用非常短的按键序列盲目执行编辑器功能。 您知道您在做什么; 这不适合菜鸟。
当您想要实际编辑文本时,应使用某些按键进入插入模式; 常见的按键包括:
现在来回答问题:如何退出。
您可以从EX模式中退出vi:
w
和x
接受文件名参数。 如果vi已经知道要使用的文件名(例如它是使用vi file
启动的),则无需再次在此处提供文件名。
最后,最重要的是:如何进入EX模式?
EX模式是为了处理长命令而设计的,你可以在屏幕底部看到你所输入的命令。从命令模式,按冒号:
键,一个冒号会出现在底部,然后输入相应的命令。
从插入模式,你需要按ESC(Escape键)回到命令模式,然后输入冒号来进入EX模式。
如果你不确定,按ESC键就可以回到命令模式。
一种可靠的方法是使用ESC-:-x-Enter组合键,这样可以保存并退出文件。
:w
。那么这就很合理了。顺便问一下,有没有一个命令可以从磁盘重新加载文件(也就是撤销更改但不关闭文件)?如果有的话,它可以放在图表中与 w
命令相邻。 - Nick Volynkin:help vim-modes
。 - jpaugh在输入命令前,按下Esc键。输入后,按下Return键确认。
Esc会结束当前命令并将Vim切换到正常模式。此时,如果你按下:,冒号会出现在屏幕的底部。这表明你正在输入命令而不是编辑文件。
大多数命令都有缩写形式,并可加上方括号表示可选参数:c[ommand]
。
带有星号(*)的命令是仅适用于Vim的(在Vi中未实现)。
安全退出(如果有未保存的更改则失败):
提示退出(如果有未保存的更改则提示)
: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,所有缓冲区(包括隐藏的)的更改都将丢失。按Return键确认命令。
此答案未涵盖所有Vim的写入和退出命令及参数。实际上,它们在Vim文档中有所涉及。
Vim具有广泛的内置帮助,输入Esc:help
Return即可打开它。
此答案受到其他答案的启发,最初由@dirvine编写,由其他SO用户进行了编辑。我还包括了来自Vim参考、SO评论和其他一些来源的更多信息。 Vi和Vim的差异也得到了反映。
:cq
。!
键。我经常将不需要保存在文件中的东西传输到Vim。我们在工作中还有一个奇怪的SVN包装器,必须以非零值退出才能中止提交。:q!
中止 Git 提交是可行的,因为 Git 检查的是提交信息是否为空,而不是退出代码是否为非零。 - moopet这是一个终极的命令,适用于最糟糕的情况。如果你想要退出 Vim,在不知道自己做了什么的情况下,并且你不在乎打开的文件会发生什么,那么请使用以下命令:
Ctrl-cEnterCtrl-\Ctrl-nEnter:qa!
Enter
大部分时候,这个命令可以帮助你成功退出。
你可能天真地认为只需要按几次 Esc 然后输入 :qa!
就可以退出了。但事实并非如此。
以下各种情况说明了按 Esc 并不足够:
i
Ctrl-ovg
(首先进入插入模式,然后进入可视模式,接着进入操作挂起模式)
Qappend
Enter
i
Ctrl-ogQ
Ctrl-r=
Ctrl-k(感谢 porges 提供的该案例)
i
Ctrl-ogQ
Ctrl-r=inputdialog('foo','bar')
Enter
:set insertmode
(这是一种情况,当按下 Ctrl-\Ctrl-n 时,会返回正常模式)
:q
或:wq
。 - Dan Passaroi<Ctrl-O>gQ<Ctrl-R>=<Ctrl-K>
呢? - porges如果您需要在使用-y
选项的情况下以简易模式退出Vim,只需按下Ctrl + L即可进入正常的Vim模式,然后任何正常的退出选项都将起作用。
Ctrl+O
暂时退出插入模式,然后输入 :q
。这个组合技巧在普通的 Vim 中也很有用,可以执行单个命令并返回到插入模式。 - Andrey StarodubtsevVim有三种操作模式:输入模式、命令模式和Ex模式。
输入模式 - 输入的所有内容都会在屏幕上显示。
命令模式或逃脱模式 - 在该模式下输入的所有内容都被解释为命令。
Ex模式 - 这是另一个编辑器,ex。它是一款逐行编辑器,可以基于一系列行进行操作。在这种模式下,屏幕底部会出现一个:符号,表示进入了ex编辑器。
要退出Vim,您可以在ex模式或命令模式下退出,但不能在输入模式下退出。
从Ex模式退出
确保您处于命令模式下。只需按下Esc键即可。
按下:键,进入ex模式。
在ex模式下,使用以下任意组合来退出:
:q
- 退出
:q!
- 不保存退出
:wq
- 保存并退出
:wq!
- 强制写入并退出(如果文件权限为只读)
:x
- 写入并退出
:qa
- 全部退出。在打开多个文件时非常有用,例如:vim abc.txt xyz.txt
从命令模式退出
按下Esc键。如果您已经处于命令模式下,则可能已经这样做了。
按下大写的ZZ(Shift+Z+Z
)- 保存并退出
按下大写的ZQ(Shift+Z+Q
)- 不保存退出。
Alt Z
Z
也就是说,按下:alt-shift-z
然后 shift-z
有趣的事实:从插入模式中,您可以通过按住 Alt 键和命令字符来退出到命令模式并执行命令。 - David LottsQ
键。在该模式下,您可以连续输入一个命令而无需每次按:
。要退出ex模式,您可以键入:vi
或:visual
。 - void按下ESC(或在我的电脑上按下cmd+C),然后必须按下:才能打开命令提示符。接着,你可以输入quit
来退出。
你可能会发现机器不允许你退出,因为你的信息尚未保存。如果你仍想退出,请在quit
之后直接输入!(即:quit!
)。
我通过在Windows上安装Git客户端来获得Vim。:q
对我来说无法退出Vim。:exit
可以成功退出...
vim -version
7.3)。 - Nick VolynkinGit Bash
中,有时在Vim
中ESC
键无法正常工作。此时可以使用CTRL
+ [
代替。 - Val^[
和 ESC
是一样的。有趣的是,Windows 让它变得更加复杂了。这很有趣,也很有趣味性。 - Pryftanq
命令加上数字可以关闭该位置的拆分。
:q<split position>
或:<split position>q
将关闭该位置的拆分。
假设您的Vim窗口布局如下:
-------------------------------------------------
| | | |
-------------------------------------------------
| | | |
| | | |
| Split 1 | Split 2 | Split 3 |
| | | |
-------------------------------------------------
q1
命令,它将关闭第一个分屏。q2
将关闭第二个分屏,反之亦然。:2q
或:q2
都将关闭第二个分屏。q100
命令,其中只有三个分屏,则会关闭最后一个分屏(Split 3)。
问题已在这里提出。
:quit
然后按下[ENTER]
键。 - Farahmandgit commit
命令时进入 vim 编辑器,可以执行以下命令进行设置:git config --global core.editor="nano"
。该命令会将默认编辑器设置为 nano。 - Tom Kelly