转载自:http://blog.csdn.net/bill200711022/article/details/6979119

从一种模式切换到另一种模式 *mode-switching*


如果因为某种原因你不知道处于哪种模式,你总是可以通过按两下 <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" 调用 VimVim 缺省进入该模式。
用 ":vi" 命令 |:visual| 退出 "Ex" 模式。
注意: 老版本的 Vim 里,"Q" 用来排版文本,现在那个功能
使用 |gq| 。但是如果你使用 |vimrc_example.vim|,那么
"Q" 会和 "gq" 一样。


*gQ*
gQ 同 "Q",切换到 "Ex" 模式,但与一条接一条的 ":" 命令相
当。所有的行编辑、补全等功能都可用。
用 ":vi" 命令 |:visual| 退出 "Ex" 模式。
{Vi 没有该功能}