59 用无名寄存器实现删除,复制粘贴 操作
xp: 交换光标后两个字符位置 ddp: 交换上下行
x 默认将内容添加到无名寄存器了,p默认从无名寄存器读取内容粘贴到光标后面,将它们组合到一起达到调换光标之后两个字符的效果,同样的道理ddp则可达到交换上下两行的效果。
但是:x.s,d,c,y默认都会将内容写入无名寄存器中,所以无名寄存器中内容容易被改写。
60 深入理解 vim寄存器
无名寄存器: “”如""p === p
复制专用寄存器: "0 只有复制时内容才会写入该寄存器
有名寄存器 "a-"z
如果使用有名寄存器就需要额外的按键,如我想将当前单词复制到a寄存器中:"adiw 复制:"ap
黑洞寄存器"_
当我们使用黑洞寄存器时,不会影响到无名寄存器,内容被永久丢失了
系统剪贴板"+与选择专用寄存器"*
"+ 与系统剪贴板等效,如windows中可以通过它与系统剪贴板交互 "* 对应主剪贴板,里面保存上次高亮选中的文本
表达式寄存器 "=
当我们从表达式寄存器中获取内容时,会跳到命令行模式,此时我们可以输入一段vim脚本并按enter键执行,如果返回的是字符,vim将使用它
其它寄存器
"% 当前文件名 "# 轮换文件名 ". 上次输入的文本 ": 上次执行的ex命令 "/ 上次查找 的模式
61 用寄存器中的内容替换高亮选区的文本
交换两个单词 首先定位到第一个单词复制,yiw, 定位到要交换的单词 ve 选中该单词, 粘贴 p.
62 把寄存器的内容粘贴出来
p将寄存器内容粘贴到之后,P将寄存器内容粘贴到之前。当寄存器中内容为字符,这里的之前/之后是相对当前字符,而如果寄存器是内容为行级内容,则之前/之后是相对当前行而言。
gp 与gP命令也可以将文本粘贴到当前行之前或者之后,但它会把光标移动到粘贴出来的文本的结尾而非开头。
63 与系统剪切板进行交互
在启用了autoindent选项后,从系统粘贴板中粘贴内容时就会出现缩进乱了的情况,此时可以设置paste选项: ex命令
:set paste
:set paste!
或者可以设置:set pastetoggle=
终级解决办法是:"+p 从系统寄存器中粘贴内容