大家都知道 Vim 中有不同的模式(可参考:Vim 模式是什么?如何更改?),今天我们来讨论下其中的视觉模式(visual mode)。
Vim 中的视觉模式是什么
在Vim中,视觉模式用于选择文本。这相当于在GUI文本编辑器中通过鼠标点击并拖动来选择文本的操作。如下图所示:

视觉模式下的子模式
Vim 的视觉模式可以让你选择文本,其下的不同子模式有时候也挺有用的,这要看你想要怎样选择文本。其有三种子模式:
1)视觉[字符]模式(Visual [Character]):用于选择单个字符;
2)视觉行模式(Visual Line):用于一次选择整行;
3)视觉块模式(Visual Block):用于选择矩形块区域的文本。
切换到视觉模式
我们先前有一篇文章介绍 Vim 中的各个模式,以及如何在各个模式之间进行切换,大家有兴趣可参考:Vim 模式是什么?如何更改?
如果想要切换到视觉模式,首先当前要处于正常(Normal)模式:
1)视觉模式(Visual):v(小写的 v)
2)视觉行模式(Visual Line):V(大写的V)
3)视觉块模式(Visual Block):Ctrl + v
使用视觉模式
当你切换到视觉模式后,vim 会显示一些信息,比如你当前所处的模式,以及你选择的文本数量。
在视觉模式中,选择文本从光标所处的位置开始,然后使用导航键 h/j/k/l 来移动光标。
当你选择完文本后,就可以执行删除、拖动、替换等操作。
视觉[字符]模式(Visual [Character])
如上所述,光标是在单个字符上移动的,但它不仅限于选择单个字符,就像在普通模式一样,可以使用 w/e/b 键跳过单词,和使用 k/j 键上下跳转。
如下图:

如果你仔细观察,就会发现在编辑器底部就会显示一些信息。在左边显示 --VISUAL--,表示当前处于视觉[字符]模式,然后右侧,显示当前选择了多少个字符。
视觉行模式(Visual Line)
这个模式用来选择一整行文本。在视觉行模式中,你不能选择单个字符或单个单词,而只能选择整行。如果当前选择的行不是最后一行,那么“换行符”也会被选中。
如下图:

如上图例子中所演示的,在同一行来回移动光标不会对文本的选择产生什么变化,只要光标停留在这一行上,那么这一整行就会处于被选中的状态。
和视觉模式一样,在最下面会显示 --VISUAL LINE--,但是在右侧不会显示选中的字符数,而是显示选中的行数。
视觉块模式(Visual Block)
我觉得,这个是视觉模式中最有意思的子模式了,它可以对多行进行矩形选择。
来看一下如何使用其他文本替换选中的文本。在下面的例子中,我们将演示如何选中加号,然后使用乘号替换,以让等式成立。

在这个模式下,左下角显示模式名称,--VISUAL BLOCK--,然后右下角不再显示选中的字符数或者行数,而是显示选中的范围,包括行数和列数(行数 × 列数)。




