将寄存器与各种删除、复制、粘贴命令组合使用,能够大大提高编辑文本的效率。
1) 复制粘贴基本命令
| yy | 复制游标所在行整行。或大写一个Y |
| 2yy或y2y | 复制两行 |
| y^ | 复制至行首,或y0 |
| y$ | 复制至行尾。含游标所在处字元 |
| yw | 复制一个word |
| y2w | 复制两个字(单词) |
| yG | 复制至档尾 |
| y1G | 复制至档首 |
| p | 小写p代表贴至游标后(下) |
| P | 大写P代表贴至游标前(上) |
2) 系统剪贴板的使用
- 从系统剪贴板粘贴:
Shift+Insert; - 选择全文:
gg shift+V shift+g; - 复制到系统剪贴板
"+y 把选中内容复制到系统剪贴板
"+p 把系统剪贴板里的内容粘贴到vim
- 将Vim默认剪贴板设为系统剪贴板:
set clipboard=unnameplus
3) 制定寄存器
在复制或删除文本时,可以使用"register命令将文本放入指定的寄存器中。例如一下
命令,将复制的文本放到寄存器a中,同时文本也会被放入未命名寄存器中。
"ayy
如果在使用相应的大写字母来指定寄存器,那么将当前行内容追加到寄存器a中,这时
该寄存器中就有了两行文本。
"Ayy
4) 查看寄存器
使用registers name命令,可以查看特定寄存器中的内容:
如果想要查看所有寄存器中的内容,可以使用如下命令:
:registers
5) 寄存器类别
寄存器可以分为一下9类:
| 类别 | 符号 | 描述 |
|---|---|---|
| 未命名寄存器 | " | 上一次复制或删除的文本 |
| 数字寄存器 | 0-9 | 文本删除历史 |
| 短删除寄存器 | - | 删除少于一行的文本 |
| 命名寄存器 | a-z,A-Z | 存放文本 |
| 只读寄存器 | % | 当前文件的名字 |
| # | 交替文件的名字 | |
| . | 上一次插入的文本 | |
| : | 上一次执行的命令 | |
| 表达式寄存器 | = | 返回表达式结果 |
| 选择和拖拽寄存器 | \* | 系统剪切板 |
| + | 系统剪切板(X11) | |
| ~ | 拖拽的文本 | |
| 黑洞寄存器 | \_ | 永久删除的文本 |
| 搜索模式寄存器 | / | 搜索模式 |
未命名寄存器(The Unnamed Register) 当使用y命令复制文本,或使用d、c、s、x命令删除文本时,文本将自动被放入 ""未命名寄存器。 即使你在复制或删除文本时,已经指定了寄存器(例如使用"xdd命令), 这些文本也将会被同时放入"x和""寄存器。
数字寄存器(The Numbered Registers)
"0始终存放最近删除
的文本。"1
也包含上次删除的文本。区别在于:"0不断被删除的文本所覆盖;而如果删除文本时,
指定了寄存器或者文本小于一行,那么"1将不会被更新。 数字寄存器1-9可以看作是
删除历史, 你可以从中找到早先删除的文本。比如你使用了三次dd命令,那么这三行文
本被分别存放在寄存器1,2,3中,可以通过命令"1P,
"2P,"3P将这些文本
再粘贴回来。
短删除寄存器(The Small Delete Register) 当删除少于一行的文本时,除非指定了某个寄存器,否则这些内容将会被放入 "-短删除寄存 器中。
命名寄存器(The Named Registers) 当文本被放入以小写字母命名的寄存器(例如"a)时, 该寄存器原有的内容将被覆盖;而使用以大写字母命名的 寄存器(例如"A)时, 将会把文本追加到原有内容之后。
只读寄存器(The Read-Only Registers) 你只能从4个只读寄存器中粘贴内容,而不能放入文本。 "% 包含当前文件名;"# 包含交替文件名;". 包含最近插入的文本;": 包含上次执行的命令行。
表达式寄存器(The Expression Register)
当我们输入"=,
就会在Vim底部显示一个以“=”开始的提示行,可以在这里输入表达式并按回车键确认。
随后使用命令p将表达式的结果粘贴到文本中。例如要
在文本中插入38\*56的值,首先进入命令模式,输入"=,
在屏幕底部的提示行中输入“38\*56”并按回车,然后输入命令p,这样就可以将计算结果插入文本中了。
在表达式寄存器中,不仅可以使用通常的算术运算符,还可以使用Vim特定的函数和运算符。例如通过
表达式寄存器来得到环境变量的值(例如"=$HOME)。如果没有输入任何表达式而直接按回车键,
那么Vim将执行最近使用过的表达式。
选择和拖拽寄存器(The Selection and Drop Registers)
有3个寄存器用于保存选中的文本:"*
用于访问系统剪切板。在Windows下,"*和"+相同;
在Linux下,"+包含选中的文本,"\*包含复制的文本。使用"+y命令,
可以将当前选中的文本复制到系统剪切板中。而"+p命令,
则可以粘贴系统剪切板中的内容。通过剪切板寄存器,能够在不同的Vim编辑器或者是其他应用程序之间,
进行文本交换。"~包含上次从其它应
用程序拖拽到Gvim中的文本。
黑洞寄存器(The Black Hole Register)
任何放入"_中
的文本都将不复存在。如果想要永久删除某些文本而不是将他放入1-9中的某个寄存中,就可以使用黑洞寄存器。
例如:命令dd将删除一行文本并将其放入寄存器1中;而命令"_dd
则将该行文本放入黑洞寄存器中,这些文本也就会永久消失了,而寄存器1中的文本
会保持不变。
搜索模式寄存器(Search Pattern Register) 当你通过/命令进行搜索时,所使用的模式将自动被放入"/ 寄存器。
”
6) 粘贴寄存器
命令:put会将寄存中的内容粘贴到指定的文本行后面。使用以下命令,可以将寄存器 中的内容粘贴到第五行的后面:
:5put a
如果要将文本放在这一行的前面,可以用一下命令:
:5put! a
你也可以使用p命令,将x寄存中的文本粘贴到光标之后:
"xp
而P命令,则将x寄存器中的文本粘贴到光标之前:
"xP
如果直接使用p或P命令,而没有特定寄存器,那么将粘贴未命名寄存器中的内容。
使用一下命令,可以粘贴上次插入的文本,方便你录入重复的内容:
".p
如果要粘贴系统剪切板中的内容,在Insert mode下可以利用快捷键Shift+Insert,
而在Normal mode下,可以使用以下命令:
"*p
