VIM中yiw复制后di"操作覆盖缓冲区的问题咨询
简化Vim复制替换操作的方法
针对你遇到的di"会覆盖默认寄存器导致无法直接粘贴的问题,这里有几个更简便的解决方案:
方法一:利用黑洞寄存器避免污染默认寄存器
- 光标定位到「dog」上,执行
yiw将单词复制到默认寄存器 - 移动光标到任意一个引号内的「cat」上,执行
"_di"("_指定使用黑洞寄存器删除,不会修改默认寄存器里的内容) - 执行
P粘贴「dog」,之后用.命令重复删除+粘贴操作,快速处理剩下的条目
方法二:结合ci"与寄存器粘贴,一步完成删除替换
- 同样先执行
yiw复制「dog」到默认寄存器 - 光标移到引号内的「cat」上,执行
ci"<C-r>0:ci"会删除引号内的内容并自动进入插入模式<C-r>0是在插入模式下粘贴默认寄存器(0号寄存器,存储最近一次yank的内容)里的「dog」
- 按
Esc退出插入模式,之后用.命令重复整个替换操作
方法三:全局替换(适合批量处理所有条目)
如果需要一次性替换所有debugPrint("cat")里的内容:
- 先
yiw复制「dog」 - 执行全局替换命令:
:g/debugPrint/s/"cat"/"\=getreg(0)"/g:g/debugPrint匹配所有包含debugPrint的行s/"cat"/"\=getreg(0)"/g把行内的"cat"替换为默认寄存器里的内容(getreg(0)获取0号寄存器的值)
内容的提问来源于stack exchange,提问作者Waldson Fagundes
相关产品推荐
相关产品推荐

