6. 从一种模式切换到另一种模式
*mode-switching*
如果因为某种原因你不知道处于哪种模式,你总是可以通过按两下 <Esc> 返回普通
模式。不过不能在 Ex 模式里这么做,那里,用 ":visual" 返回普通模式。
如果在你按下 <Esc> 后发现屏幕闪烁或者听到响声,这证明你已经回到普通模式。
然而,在插入模式里按下 CTRL-O 后再按下 <Esc> 也会听到喇叭的响声,但是你仍然处
于插入模式,再按一下 <Esc> 即可。
-- 不可能
*1 从普通模式切换到插入模式可以用这些命令:"i"、"I"、"a"、"A"、"o"、 "O"
"c"、"C"、"s" 或 S"。
*2 从可视模式切换到普通模式可以使用一个不移动光标的命令,这样命令执行后就会返
回普通模式。也可以使用 <Esc> "v"、"V" 或 "CTRL-V" (见 |v_v|),这几个命令可
以没有副作用地终止可视模式。
*3 从命令行模式切换至普通模式:
- 敲 <CR> 或 <NL>,使得键入的命令得以执行。
- 删除整行 (例如,用 CTRL-U) 最后再按一下 <BS>。
- 敲 CTRL-C 或 <Esc> 可以退出命令行模式而不执行已经键入的命令。
在最后一种情况里,<Esc> 可能被 'wildchar' 定义,这样 <Esc> 就会作为命令行模
式里的命令补全键。你可以再按一下 <Esc> 忽略补全的命令。{Vi: 当敲 <Esc> 的时
候命令行会被执行。大多数人对此感觉不爽;因此 Vim 进行了改动。但是如果 <Esc>
是映射的一部分,命令行仍然会执行。如果你想使用 Vi 的特性包括输入的 <Esc> 的
这种反应,那么可以使用 ":cmap ^V<Esc> ^V^M" }
*4 从普通模式切换到选择模式:
- 如果 'selectmode' 里包含 "mouse",当使用鼠标选择文本时即可切换。
- 如果 'selectmode' 里包含 "key",那么按住 Shift 键然后用不可显示的命令来移
动光标。
- 如果 'selectmode' 包含 "cmd",那么用 "v"、"V" 或 "CTRL-V"
- 使用 "gh"、"gH" 或 "g CTRL-H"
*5 使用不可显示的命令移动光标 (不要按 Shift) 可以从选择模式转到普通模式。
*6 输入一个可显示字符可以从选择模式切换到插入模式。插入该字符的同时删除被选择
的部分。
如果打开了 'insertmode' 选项,编辑文件时将直接进入插入模式。
*CTRL-\_CTRL-N* *i_CTRL-\_CTRL-N* *c_CTRL-\_CTRL-N* *v_CTRL-\_CTRL-N*
另外,CTRL-\ CTRL-N 或 <C-\><C-N> 可以用来从其它模式切换到普通模式。这样可以确
保 Vim 处于普通模式而不会像 <Esc> 那样产生响声。然而,它不能用在 Ex 模式。当用
在一个需要参数的命令,诸如 |f| 、|m| 等之后,等待时间由 'ttimeoutlen' 决定。
*CTRL-\_CTRL-G* *i_CTRL-\_CTRL-G* *c_CTRL-\_CTRL-G* *v_CTRL-\_CTRL-G*
如果置位了 'insertmode',则 CTRL-\ CTRL-G 或 <C-\><C-G> 切换到插入模式,否则切
换至普通模式。这可以让 Vim 处于 'insertmode' 所指定的模式,而不必关心当前的模
式。
*Q* *mode-Ex* *Ex-mode* *Ex* *EX* *E501*
Q 切换至 "Ex" 模式。有点像一个接一个的 ":" 命令,除了:
- 你不需要输入 ":"。
- 屏幕不会在每个命令执行完后更新。
- 没有正常的命令行编辑。
- 映射和缩写无效。
实际上,你正在使用一个 "标准的" 行编辑器。(<Del> 或
<BS> 删除一个字符,CTRL-U 删除整行)。
如果使用 "ex" 调用 Vim,Vim 缺省进入该模式。
用 ":vi" 命令 |:visual| 退出 "Ex" 模式。
注意: 老版本的 Vim 里,"Q" 用来排版文本,现在那个功能
使用 |gq| 。但是如果你使用 |vimrc_example.vim|,那么
"Q" 会和 "gq" 一样。
*gQ*
gQ 同 "Q",切换到 "Ex" 模式,但与一条接一条的 ":" 命令相
当。所有的行编辑、补全等功能都可用。
用 ":vi" 命令 |:visual| 退出 "Ex" 模式。
{Vi 没有该功能}
如果因为某种原因你不知道处于哪种模式,你总是可以通过按两下 <Esc> 返回普通
模式。不过不能在 Ex 模式里这么做,那里,用 ":visual" 返回普通模式。
如果在你按下 <Esc> 后发现屏幕闪烁或者听到响声,这证明你已经回到普通模式。
然而,在插入模式里按下 CTRL-O 后再按下 <Esc> 也会听到喇叭的响声,但是你仍然处
于插入模式,再按一下 <Esc> 即可。
*i_esc*
切换 到模式
从普通 普通 可视 选择 插入 替换 命令行 Ex
普通 v V ^V *4 *1 R gR : / ? ! Q
可视 *2 ^G *6 -- --
选择 *5 ^O ^G *6 -- -- --
插入 <Esc> -- -- <Insert> -- --
替换 <Esc> -- -- <Insert> -- --
命令行 *3 -- -- :start -- --
Ex :vi -- -- -- -- --
-- 不可能
*1 从普通模式切换到插入模式可以用这些命令:"i"、"I"、"a"、"A"、"o"、 "O"
"c"、"C"、"s" 或 S"。
*2 从可视模式切换到普通模式可以使用一个不移动光标的命令,这样命令执行后就会返
回普通模式。也可以使用 <Esc> "v"、"V" 或 "CTRL-V" (见 |v_v|),这几个命令可
以没有副作用地终止可视模式。
*3 从命令行模式切换至普通模式:
- 敲 <CR> 或 <NL>,使得键入的命令得以执行。
- 删除整行 (例如,用 CTRL-U) 最后再按一下 <BS>。
- 敲 CTRL-C 或 <Esc> 可以退出命令行模式而不执行已经键入的命令。
在最后一种情况里,<Esc> 可能被 'wildchar' 定义,这样 <Esc> 就会作为命令行模
式里的命令补全键。你可以再按一下 <Esc> 忽略补全的命令。{Vi: 当敲 <Esc> 的时
候命令行会被执行。大多数人对此感觉不爽;因此 Vim 进行了改动。但是如果 <Esc>
是映射的一部分,命令行仍然会执行。如果你想使用 Vi 的特性包括输入的 <Esc> 的
这种反应,那么可以使用 ":cmap ^V<Esc> ^V^M" }
*4 从普通模式切换到选择模式:
- 如果 'selectmode' 里包含 "mouse",当使用鼠标选择文本时即可切换。
- 如果 'selectmode' 里包含 "key",那么按住 Shift 键然后用不可显示的命令来移
动光标。
- 如果 'selectmode' 包含 "cmd",那么用 "v"、"V" 或 "CTRL-V"
- 使用 "gh"、"gH" 或 "g CTRL-H"
*5 使用不可显示的命令移动光标 (不要按 Shift) 可以从选择模式转到普通模式。
*6 输入一个可显示字符可以从选择模式切换到插入模式。插入该字符的同时删除被选择
的部分。
如果打开了 'insertmode' 选项,编辑文件时将直接进入插入模式。
*CTRL-\_CTRL-N* *i_CTRL-\_CTRL-N* *c_CTRL-\_CTRL-N* *v_CTRL-\_CTRL-N*
另外,CTRL-\ CTRL-N 或 <C-\><C-N> 可以用来从其它模式切换到普通模式。这样可以确
保 Vim 处于普通模式而不会像 <Esc> 那样产生响声。然而,它不能用在 Ex 模式。当用
在一个需要参数的命令,诸如 |f| 、|m| 等之后,等待时间由 'ttimeoutlen' 决定。
*CTRL-\_CTRL-G* *i_CTRL-\_CTRL-G* *c_CTRL-\_CTRL-G* *v_CTRL-\_CTRL-G*
如果置位了 'insertmode',则 CTRL-\ CTRL-G 或 <C-\><C-G> 切换到插入模式,否则切
换至普通模式。这可以让 Vim 处于 'insertmode' 所指定的模式,而不必关心当前的模
式。
*Q* *mode-Ex* *Ex-mode* *Ex* *EX* *E501*
Q 切换至 "Ex" 模式。有点像一个接一个的 ":" 命令,除了:
- 你不需要输入 ":"。
- 屏幕不会在每个命令执行完后更新。
- 没有正常的命令行编辑。
- 映射和缩写无效。
实际上,你正在使用一个 "标准的" 行编辑器。(<Del> 或
<BS> 删除一个字符,CTRL-U 删除整行)。
如果使用 "ex" 调用 Vim,Vim 缺省进入该模式。
用 ":vi" 命令 |:visual| 退出 "Ex" 模式。
注意: 老版本的 Vim 里,"Q" 用来排版文本,现在那个功能
使用 |gq| 。但是如果你使用 |vimrc_example.vim|,那么
"Q" 会和 "gq" 一样。
*gQ*
gQ 同 "Q",切换到 "Ex" 模式,但与一条接一条的 ":" 命令相
当。所有的行编辑、补全等功能都可用。
用 ":vi" 命令 |:visual| 退出 "Ex" 模式。
{Vi 没有该功能}