我被卡住了,无法逃脱。它说。
"type :quit<Enter> to quit VIM"
但当我输入时,它只是出现在对象体内。
点击Esc键,进入"普通模式"。然后你可以输入:进入"命令行模式"。一个冒号(:)将出现在屏幕的底部,你可以输入以下命令。要执行一个命令,按Enter键。
:
:q
:q!
:quit!
:wq
:wq!
:x
:exit
:qa
:cq
你也可以直接从"正常模式"退出Vim,输入ZZ保存并退出(与:x相同)或ZQ直接退出(与:q!相同)。(注意,这里的大小写很重要,ZZ和zz的意思不一样)。)
ZZ
ZQ
zz
Vim有大量的帮助--你可以用:help命令访问--在那里你可以找到所有问题的答案和初学者的教程。
:help
在输入命令之前,按Esc 键。 输入后,点击Return 来确认。
Esc键。 完成当前命令,并将Vim切换到[正常模式][1]。 现在如果你按:,:将出现在屏幕的*底部。 这确认了你实际上是在输入一个命令,而不是在编辑文件。
大多数命令都有缩写,可选部分用括号括起来。 c[ommand]。
c[ommand]
标有'*'.的命令是Vim-only的(没有实现)。 的命令是Vim专用的(Vi中没有实现)。
安全退出(如果有未保存的更改则失败):。
:q[uit]
:qa[ll]
提示退出 (如果有未保存的更改,则提示退出)。
:conf[irm] q[uit]
:conf[irm] xa[ll]
写下(保存)更改并退出: *:wq` 写下所有更改并退出Vim。
:wqa[ll]
:wqa[ll]!
:x[it]
:xa[ll]
放弃更改并退出: :q[uit]。
:q[uit]!
:qa[ll]!
:quita[ll][!]
按Return 来确认命令.。
这个答案并没有参考所有Vim写和退出命令和参数。 事实上,它们在Vim文档中被引用。
Vim有广泛的内置帮助,键入Esc:帮助回车</kbd>。 来打开它。
:帮助
这个答案的灵感来自于[另一个][6],原作者是@dirvine,由其他SO用户编辑。 我'已经包含了更多来自Vim参考、SO评论和一些其他来源的信息。 也反映了Vi和Vim的差异。
[1]: http://vimdoc.sourceforge.net/htmldoc/intro.html#Normal [2]: http://vimdoc.sourceforge.net/htmldoc/windows.html#window [3]: http://vimdoc.sourceforge.net/htmldoc/windows.html#buffers [4]: http://vimdoc.sourceforge.net/htmldoc/editing.html#ZZ 5:
[6]: https://stackoverflow.com/a/11828573/2790048
图片胜过一千个Unix命令和选项。
[![在此输入图片描述][1]][1]
我每学期都会把这个画给我的学生看,他们看完后似乎就掌握了vi。
vi是一个【有限状态机】(https://en.wikipedia.org/wiki/Finite-state_machine),只有三种状态。
启动后,vi会进入COMMAND模式,你可以盲目地*输入简短的、很少的字符命令。 你知道你在做什么。 这不是为业余爱好者准备的。
当你想实际编辑文本时,你应该进入INSERT模式,输入一些单字符命令。
现在,回答这个问题。 退出:
你可以从EX模式退出vi。
w和x接受一个文件名参数。 如果你在启动vi时使用了一个文件名,你就不需要在这里再次给出它。
w
x
最后,最重要的。 如何达到EX模式?
EX模式是为长命令服务的,你可以看到在屏幕底行打字。 在COMMAND模式下,你按冒号,:,底行就会出现一个冒号,你可以在这里输入上述命令。
在INSERT模式下,你需要按ESC,即 Escape键,进入COMMAND模式,然后按.EX键,进入EX模式。 进入EX模式。
如果你不确定,按ESC,就会进入命令模式。
所以,稳健的方法是ESC-:-x-Enter,这样可以保存你的文件并退出。
[1]: https://i.stack.imgur.com/BN6vl.png
如果你想在Vim中不保存就退出,并让Vim返回一个非零的退出代码,你可以使用:cq。
我一直在使用这个方法,因为我不愿意为!做小指移位。我经常用管道将不需要保存在文件中的东西送到Vim。我们在工作中也有一个奇怪的SVN包装器,它必须以非零值退出才能中止签入。
!
这是在最坏的情况下退出Vim,如果你只是想退出,不知道你做了什么,而且你不关心你打开的文件会发生什么。
Ctrl-cEnterEnterCtrl-cCtrl-n:qa!Enter</kbd>。
:qa!
这应该能让你在大部分时间里出来。
一些有趣的情况下,你需要这样的东西。
iCtrl-ovg(你进入插入模式,然后是视觉模式,然后是操作者待定模式)
i
vg
QappendEnter
Qappend
iCtrl-ogQCtrl-r=Ctrl-k</kbd>。 (感谢porges提供这个案例)
gQ
=
:set insertmode (这是当Ctrl-nCtrl-n 返回正常模式时)
:set insertmode
编辑。 由于上述情况,这一答案已被更正。 以前是这样的。
EscEscEsc:qa!Enter</kbd>。
:qa!
但是,如果你已经进入了Ex模式,那就不行了。 在这种情况下,你需要做。
viEnter:qa!Enter</kbd>。
vi
所以一个完整的命令为"我不想知道我做了什么,我也不想保存任何东西,我只想现在就离开!"。 将是
viEnterEscEscEsc`:qa!Enter</kbd>。
如果你需要在**简易模式下退出Vim(同时使用-y选项),你可以通过点击Ctrl+L进入正常的Vim模式,然后任何正常的退出选项都可以发挥作用。
-y
Vim有三种操作模式。 输入模式,命令模式&。 Ex模式。
输入模式 - 你输入的所有内容,所有的按键都会在屏幕上回响。
命令模式或Escape模式--在此模式下,您输入的所有内容都被解释为一条命令。
Ex模式--这是另一个编辑器,ex。 这是一个行编辑器。 它可以按行或基于行的范围工作。 在此模式下,屏幕底部会出现: 出现在屏幕的底部。 这就是ex编辑器。
为了退出Vim,你可以在ex模式或命令模式下退出。 当你处于输入模式时,你不能退出Vim。
从ex模式退出
你需要确定你是在命令模式下。 要做到这一点,只需按Esc 键。
按:键进入ex模式。 键,进入ex模式。
在ex模式下使用以下任意组合退出。
:q - 退出 :q! - 不保存而退出。 :wq - 保存 & 退出或写入& 退出 :wq! - 与wq相同,但在文件权限为只读的情况下强制写入。 :x - 写 & 退出 :qa - 全部退出。 当打开多个文件时很有用,比如 vim abc.txt xyz.txt。
vim abc.txt xyz.txt
退出命令模式。
按回车键。 如果你是在命令模式下,你可能已经这样做了。
按大写ZZ(shift zz)--保存&。 退出
shift zz
按大写ZQ(shift zq)--退出而不保存。
shift zq
在点击ESC</kbd>。 或cmd
quit
你可能会发现机器不允许你退出,因为你的信息还没有被保存。 如果你'想退出,请在退出后直接输入!</kbd>。 直接在退出后输入(即 :quit!)。
我通过在Windows上安装Git客户端得到了Vim。 :q不会为我退出Vim。 :exit却能...
我想就此补充一下我的[两点意见][1]。 这个问题已在[这里][2]提出。
带数字的q命令在该位置关闭给定的分割。
q
:q<split position>或:<split position>q将关闭该位置的分割。
:q<split position>
:<split position>q
假设你的Vim窗口布局如下。
------------------------------------------------- | | | | ------------------------------------------------- | | | | | | | | | Split 1 | Split 2 | Split 3 | | | | | -------------------------------------------------
如果你运行q1命令,它将关闭第一次分割。 q2将关闭第二个分割,反之亦然。
q1
q2
退出命令中分割位置的顺序并不重要。 :2q或:q2将关闭第二个分割。
:2q
:q2
如果你传递给该命令的分割位置大于当前分割的数量,它将直接关闭最后一个分割。
例如,如果你在上面的窗口设置中运行q100,其中只有三个分割,它将关闭最后一个分割(第3个分割)。
q100
[1]: https://en.wiktionary.org/wiki/two_cents#Noun [2]: https://stackoverflow.com/questions/48757147/what-does-q1-do-in-vim/48757213#48757213
点击Esc键,进入"普通模式"。然后你可以输入
:
进入"命令行模式"。一个冒号(:
)将出现在屏幕的底部,你可以输入以下命令。要执行一个命令,按Enter键。:q
退出(简称`:退出')。:q!
退出而不保存(简称:quit!
):wq
写入并退出:wq!
写入并退出,即使文件只有读取权限(如果文件没有写入权限:强制写入)。:x
写入并退出(与:wq
类似,但只在有变化时写入)。:exit
写并退出 (与:x
相同):qa
退出所有(简称`:quitall')。:cq
退出而不保存,并使Vim返回非零错误(即以错误退出)。你也可以直接从"正常模式"退出Vim,输入
ZZ
保存并退出(与:x
相同)或ZQ
直接退出(与:q!
相同)。(注意,这里的大小写很重要,ZZ
和zz
的意思不一样)。)Vim有大量的帮助--你可以用
:help
命令访问--在那里你可以找到所有问题的答案和初学者的教程。在输入命令之前,按Esc 键。 输入后,点击Return 来确认。
Esc键。 完成当前命令,并将Vim切换到[正常模式][1]。 现在如果你按:,
:
将出现在屏幕的*底部。 这确认了你实际上是在输入一个命令,而不是在编辑文件。大多数命令都有缩写,可选部分用括号括起来。
c[ommand]
。标有'*'.的命令是Vim-only的(没有实现)。 的命令是Vim专用的(Vi中没有实现)。
安全退出(如果有未保存的更改则失败):。
:q[uit]
退出当前[窗口][2]。 如果这是最后一个窗口,则退出Vim。 当当前[buffer][3]中的更改已经完成时,该功能将失效。:qa[ll]
* 退出所有窗口和Vim,除非有一些缓冲区被修改。提示退出 (如果有未保存的更改,则提示退出)。
:conf[irm] q[uit]
* 退出,但当有一些缓冲区被更改时,会给出提示。:conf[irm] xa[ll]
* 写下所有修改过的缓冲区并退出 Vim。 当有些缓冲区无法写入时,会出现提示。写下(保存)更改并退出: *:wq` 写下所有更改并退出Vim。
:wq
写入当前文件(即使它没有被修改)并退出。 当文件为只读或缓冲区没有名字时,写入失败。:wqa[ll]
* 适用于所有窗口。:wq!
相同,但即使是只读文件也能写入。:wqa[ll]!
* 适用于所有窗口。:x[it]
,ZZ
(含[细节][4])。 只写文件如果它被改变并退出,:xa[ll]
*适用于所有窗口。放弃更改并退出: :q[uit]。
:q[uit]!
ZQ
* 不写就退出,也是在可见缓冲区有变化时退出。 当隐藏缓冲区有变化时,不退出。:qa[ll]!
/,:quita[ll][!]
退出Vim,缓冲区的所有变化(包括隐藏的)都会丢失。按Return 来确认命令.。
这个答案并没有参考所有Vim写和退出命令和参数。 事实上,它们在Vim文档中被引用。
Vim有广泛的内置帮助,键入Esc
:帮助
回车</kbd>。 来打开它。这个答案的灵感来自于[另一个][6],原作者是@dirvine,由其他SO用户编辑。 我'已经包含了更多来自Vim参考、SO评论和一些其他来源的信息。 也反映了Vi和Vim的差异。
[1]: http://vimdoc.sourceforge.net/htmldoc/intro.html#Normal [2]: http://vimdoc.sourceforge.net/htmldoc/windows.html#window [3]: http://vimdoc.sourceforge.net/htmldoc/windows.html#buffers [4]: http://vimdoc.sourceforge.net/htmldoc/editing.html#ZZ 5:
[6]: https://stackoverflow.com/a/11828573/2790048
图片胜过一千个Unix命令和选项。
[![在此输入图片描述][1]][1]
我每学期都会把这个画给我的学生看,他们看完后似乎就掌握了vi。
vi是一个【有限状态机】(https://en.wikipedia.org/wiki/Finite-state_machine),只有三种状态。
启动后,vi会进入COMMAND模式,你可以盲目地*输入简短的、很少的字符命令。 你知道你在做什么。 这不是为业余爱好者准备的。
当你想实际编辑文本时,你应该进入INSERT模式,输入一些单字符命令。
现在,回答这个问题。 退出:
你可以从EX模式退出vi。
w
和x
接受一个文件名参数。 如果你在启动vi时使用了一个文件名,你就不需要在这里再次给出它。最后,最重要的。 如何达到EX模式?
EX模式是为长命令服务的,你可以看到在屏幕底行打字。 在COMMAND模式下,你按冒号,
:
,底行就会出现一个冒号,你可以在这里输入上述命令。在INSERT模式下,你需要按ESC,即 Escape键,进入COMMAND模式,然后按.EX键,进入EX模式。 进入EX模式。
如果你不确定,按ESC,就会进入命令模式。
所以,稳健的方法是ESC-:-x-Enter,这样可以保存你的文件并退出。
[1]: https://i.stack.imgur.com/BN6vl.png
如果你想在Vim中不保存就退出,并让Vim返回一个非零的退出代码,你可以使用
:cq
。我一直在使用这个方法,因为我不愿意为
!
做小指移位。我经常用管道将不需要保存在文件中的东西送到Vim。我们在工作中也有一个奇怪的SVN包装器,它必须以非零值退出才能中止签入。这是在最坏的情况下退出Vim,如果你只是想退出,不知道你做了什么,而且你不关心你打开的文件会发生什么。
Ctrl-cEnterEnterCtrl-cCtrl-n
:qa!
Enter</kbd>。这应该能让你在大部分时间里出来。
一些有趣的情况下,你需要这样的东西。
i
Ctrl-ovg
(你进入插入模式,然后是视觉模式,然后是操作者待定模式)Qappend
Enteri
Ctrl-ogQ
Ctrl-r=
Ctrl-k</kbd>。 (感谢porges提供这个案例):set insertmode
(这是当Ctrl-nCtrl-n 返回正常模式时)编辑。 由于上述情况,这一答案已被更正。 以前是这样的。
EscEscEsc
:qa!
Enter</kbd>。但是,如果你已经进入了Ex模式,那就不行了。 在这种情况下,你需要做。
vi
Enter:qa!
Enter</kbd>。所以一个完整的命令为"我不想知道我做了什么,我也不想保存任何东西,我只想现在就离开!"。 将是
vi
EnterEscEscEsc`:qa!Enter</kbd>。如果你需要在**简易模式下退出Vim(同时使用
-y
选项),你可以通过点击Ctrl+L进入正常的Vim模式,然后任何正常的退出选项都可以发挥作用。Vim有三种操作模式。 输入模式,命令模式&。 Ex模式。
输入模式 - 你输入的所有内容,所有的按键都会在屏幕上回响。
命令模式或Escape模式--在此模式下,您输入的所有内容都被解释为一条命令。
Ex模式--这是另一个编辑器,ex。 这是一个行编辑器。 它可以按行或基于行的范围工作。 在此模式下,屏幕底部会出现: 出现在屏幕的底部。 这就是ex编辑器。
为了退出Vim,你可以在ex模式或命令模式下退出。 当你处于输入模式时,你不能退出Vim。
从ex模式退出
你需要确定你是在命令模式下。 要做到这一点,只需按Esc 键。
按:键进入ex模式。 键,进入ex模式。
在ex模式下使用以下任意组合退出。
:q
- 退出:q!
- 不保存而退出。:wq
- 保存 & 退出或写入& 退出:wq!
- 与wq相同,但在文件权限为只读的情况下强制写入。:x
- 写 & 退出:qa
- 全部退出。 当打开多个文件时很有用,比如vim abc.txt xyz.txt
。退出命令模式。
按回车键。 如果你是在命令模式下,你可能已经这样做了。
按大写ZZ(
shift zz
)--保存&。 退出按大写ZQ(
shift zq
)--退出而不保存。在点击ESC</kbd>。 或cmd
quit
。你可能会发现机器不允许你退出,因为你的信息还没有被保存。 如果你'想退出,请在退出后直接输入!</kbd>。 直接在退出后输入(即
:quit!
)。我通过在Windows上安装Git客户端得到了Vim。
:q
不会为我退出Vim。:exit
却能...我想就此补充一下我的[两点意见][1]。 这个问题已在[这里][2]提出。
带数字的
q
命令在该位置关闭给定的分割。:q<split position>
或:<split position>q
将关闭该位置的分割。假设你的Vim窗口布局如下。
如果你运行
q1
命令,它将关闭第一次分割。q2
将关闭第二个分割,反之亦然。退出命令中分割位置的顺序并不重要。
:2q
或:q2
将关闭第二个分割。如果你传递给该命令的分割位置大于当前分割的数量,它将直接关闭最后一个分割。
例如,如果你在上面的窗口设置中运行
q100
,其中只有三个分割,它将关闭最后一个分割(第3个分割)。[1]: https://en.wiktionary.org/wiki/two_cents#Noun [2]: https://stackoverflow.com/questions/48757147/what-does-q1-do-in-vim/48757213#48757213
退出Vim