2010-01-16

Vim的选择复制粘贴

在vim中选择文本要进入Visual mode(反白模式),有三种方法进入Visual模式,它们分别是:

v    以字符为单位进行选择
V    整行选择,以行为单位
C-V 块选择,以当前位置为端点作矩形选择

进入Visual模式后移动光标(参考这里)。选取内容后,再按y就可以复制选取的内容了。

y是vim的复制命令。在Visual模式中按y会复制选取的内容,而在Normal模式按y会复制当前字符,按yy会复制当前行。这又是vim古怪的地方,它可以不经选择直接复制。

在windows系统中复制内容A,再复制内容B,之后粘贴时,只能粘贴内容B,无法选择粘贴A或者AB一起粘贴。因为复制的内容存放到windows系统的粘贴板中,而系统粘贴板可能保存一次的内容。vim没有使用windows系统的粘贴板,而是使用自己的Register(寄存器),并且可以多个,可以自定义。

:reg    查看寄存器的内容
"a        定义一个名为a的寄存器。"表示定义寄存器,a是这个寄存器的名称,可以是[0-9,z-a]中的任一个字符。
"ay        表示定义寄存器a,并复制内容到寄存器a中。

有两个寄存器是比较特别的,要特别留意。

""    这是一个匿名的寄存器,当没有命名寄存器就直接使用复制/删除(如y或dd)命令时,删除或复制的内容将被存放到这个寄存器中。对,删除的内容了跑到寄存器中。

"+    这个寄存器事实上就是系统的粘贴板。如果要从vim中复制内容到其它程序中,就要指定把内容复制到这个寄存器中 ,即使用“"+y”命令。

p    是vim中的粘贴命令,相当于记事本中的ctrl+v,在Normal模式中按p将在当前字符后粘贴匿名寄存器的内容,如果要粘贴寄存器a中的内容,则要使用使命“"ap”。如果要粘贴系统粘贴板中的内容,则要使用命令“"+p”或“shift+insert”,后一个命令在所有模式都可以使用。

这样用起来很不方便,足以证明vim是个很差劲的编辑器。还好vim有键盘映射,可以在vimrc中绑定适合自己的按键。

(完)

没有评论:

留言须知:
0. 你有權保持沉默,但你所說的將作為此BLOG有人訪問的證據。
1. 支持的HTML標籤:<a href="" title=""> <b> <em> <i> <strong>。
2. 留言留名,不然易被无视。(在“评论”中选择“名称/网址”,网址可以不填)。
3. 原則上我不删除留言,除非那則留言侮辱到你。