可视模式
可视模式是与正常模式、插入模式一起并列的模式。它的作用就像图形化编辑器下用鼠标来选择一个块。
在vim下,使用正常模式和ex命令,连搜带跳行的,未必就比用鼠标慢。
我们先做一个例子找找感觉,体验一下vim中可视模式的用法。
我们假设这样一段代码:
#include <stdlib.h>
int main(int argc, char* argv[])
{
return 0;
}
假设我们想把这段代码全注释掉,该如何做?
1. 在第一行首先用Ctrl-v进入列选择模式
2. G跳到最后一行
3. I//<空格>
就变成了下面这样:
// #include <stdlib.h>
// int main(int argc, char* argv[])
// {
// return 0;
// }
是对所有行统一起作效果。
我们尝试再把注释删掉。
1. 第一行行首,0Ctrl-v
2. G跳到最后一行
3. 2l,向右移动两次
4. x, 将这一块全删除
还有更神奇的,假如我们想在每句话后面添点东西如何做?
我们来看看vim的黑科技:
1. 2G
2. 0
3. Ctrl-V
4. G
5. $
6. A // test
于是这段代码变成了这样:
#include <stdlib.h>
int main(int argc, char* argv[]) // test
{ // test
return 0; // test
} // test
$命令在列块模式下成为黑科技,虽然每行长短不一,但是它仍然是个块。
可视模式的三种模式
可视模式的三种子模式是:
* v: 字符模式
* V: 行模式
* Ctrl-v: 列块模式
另外,gv命令可以重做上次的选区,不分模式。
切换端点
在选择的时候,有时候会发现,移动到终点之后,起点选错了。这时我们可以用o命令切换端点,我们再回去移动到正确的起点就可以了。
可视模式下的a和i
在可视模式下,a和i已经失去了切换到插入模式的功能,主要被用于aw, iw, as, is之类的文本对象之中。
要切换到插入模式,I和A命令还是可以正常使用的。