使用vim编辑时,经常需要对好几行的大段代码进行操作,比如:缩进,删除,拷贝等等。比如拷贝,如果使用yy命令,还需要计算行数,十分不便。如果可以对位置进行标记,大段的代码就可以通过前后位置来标记。这样就方便多了。
vim的mark就是最好的解决方案。所谓mark,就是一个位置,包括行号和列号。要对一个位置进行标记,使用m[a-zA-Z]就可以了。这意味你可以标记多达72个位置。不过一般我们用不到那么多。小写的表示在本文件里面的位置,而大写则可用于vim当前打开的所有缓冲区(文件)里面的位置。在本文所列列举的几个应用场景里面,小写字母已经够用了。
对一个位置进行标记之后,我们就可以跳转到该位置,命令为`a,前面是一个反引号。这个命令会将光标跳转到该位置所在的行号和列号。如果只想跳到所在行的前面,可以使用'a,前面是一个单引号。对一个为位置进行标记后,比如你已经有了a和b两个位置,你就可以使用:'a,'b d来删除'a和'b之间所有的行。
要列出所有的标记,可以使用:mark来列出。除了用户可以自己定义的,vim还提供了一个预定义的位置,比如‘和'',即单引号和双引号,还有[和]等等。这些都可以用:mark列出来。