VIM寄存器
VIM的复制、粘贴功能是通过VIM寄存器和系统剪切板实现的。
Vim共有9类寄存器:
1. unamed register “”
存储最近被删除(使用命令d、c、s、x)或复制(命令y)的内容,当使用命令p进行粘贴时(未指定寄存器),默认使用的是这个寄存器的内容。
2. 10 numberd register “0 to “9
这些寄存器存储的是最近删除或复制的内容。如果复制命令y没有指定寄存器的话,内容被存于register0;如果删除或修改命令没有指定寄存器或者内容大于一行的话,内容被存于register1;在每个删除或修改操作成功完成时,内容都会从register1转存到register2,register2转存到register3,依次类推。
3. delete register “-
这个寄存器存储被删除的少于一行的内容,除非删除命令指定了其它寄存器。
4. 26 named register “a to “z or “A to “Z
这些寄存器只有在被指定的时候,才会存储相关内容。小写表示覆盖原有
内容,大写表示追加内容。
5. 4 readonly register “:,”.,”#,and “%
这几个为只读寄存器
“. 存储最近被插入的内容
“:存储命令行中最近被执行的命令
“%存储当前文件名
“# 存储替换文件名(不太理解)
6. expression register “=
表达式寄存器
7. selection and drop register “*,”+ and “~
这几个寄存器是用来存储与恢复图形界面上选取的内容。如果系统剪切板不可用的话,就用unamed register代替。
8. black hole register “_
黑洞寄存器,往这个寄存器写内容是不起作用的;从这个寄存器读内容也没有任何返回。这个寄存器主要用于删除内容而又不想影响其它正常的寄存器的情况
9. search pattern register “/
存储最近的搜索模式
操作寄存器的命令
:reg 显示所有寄存器的内容
:reg {arg} 显示参数arg所指定寄存器的内容
:dis {arg} 用法与reg相同
:[line]put [x] 将寄存器x的内容放在LINE行之后
:[line]put![x] 将寄存器x的内容放在LINE行之前
:let @{reg-name} = {exprl} 将exprl写入reg-name.
系统剪切板
Linux系统中有一个选择缓冲区与剪切板,所有程序可以共用,相当于一个全局变量。Vim中“* 与”+ 分别与之对应,通过这两个寄存器VIM可与其它程序进行数据交换。如查在VIM的寄存器列表中未看到这两个寄存器,则可能是未安装VIM图形界面所致,可以通过vim –version来查看是否有clipboard选项,+clipboard表示选项开启,-clipboard表示未开启。
复制字符
1.yl复制光标后的字符
2.yh复制光标前的字符
3.#yl、#yh复制多个字符(#为数字)
复制单词
1. yw复制当前单词(不带空格)
2. ye复制当前单词(带空格)
3. yb复制前一个单词
4. #yw、#ye、#yb复制多个单词(#为数字)
W、E、B(大写)以空格分隔的字符串;w、e、b(小写)以非字母字符分隔的字符串。
复制行
1.yy、Y复制一行
2.#yy、#Y复制多行(#为数字)
3.命令行模式下,输入
:#1,#2 co #3 (#为行号,表示把#1行到#2行的内容复制到#3行)
4.光标移到起始行,输入ma;光标移到结束行,输入mb;光标移到粘贴行,输入mc,然后 :’a,b’ co ‘c (表示将a行到b行的内容复制到c行)
复制选择内容
进入normal mode,然后按v(字符选择模式,可以使用上下左右键进行选择)或V(行选择模式,使用上下键选择行)或CTRL+V(块选择模式),进入visual mode,然后就可以移动方向键选中文本,按y拷贝,按p粘贴。
鼠标复制
The mouse can be enabled for different modes:
n Normal mode
v Visual mode
i Insert mode
c Command-line mode
h all previous modes when editing a help file
a all previous modes
r for |hit-enter| and |more-prompt| prompt
Normally you would enable the mouse in all four modes with:
:set mouse=a
When the mouse is not enabled, the GUI will still use the mouse for
modeless selection. This doesn't move the text cursor:set mouse=a 在所有模式下开启鼠标右键功能,同时屏敝了右键复制的功能。
:set mouse=”” 或 :set mouse=v 可以使用右键功能。
粘贴
P(大写)粘贴到光标前(上);p(小写)粘贴到光标后(下)。