示例:我有一些文本,比如这个 php 代码
if(empty($condition)) {
// work here...
}
我的默认寄存器包含字符串“$NewCondition”。
我想将光标放在第一组 parens
(...)
内并执行将导致以下结果的命令:if($NewCondition) {
// work here...
}
所以我的问题是:有没有办法使用默认寄存器替换括号内的文本?
我发现的大多数建议 such as this one 在嵌套括号时失败。
我也知道我可以命名寄存器,例如
"ayi(
将括号中的所有文本猛拉到寄存器 a
中,但我不想每次猛拉时都必须输入两个额外的字符。这就是我询问默认寄存器的原因。在理想的解决方案中,当替换完成时,默认寄存器仍将包含“$NewCondition”。
最佳答案
vi("_dP
vi(
选择empty($condition)
"_d
将其删除到黑洞寄存器 P
将默认寄存器的内容放在光标之前,现在位于最后一个 )
我经常使用这个,所以我有这个映射来缩短整个事情:
vnoremap <Leader>p "_dP
所以(以
,
作为 map 领导者)我做 vi(,p
。附带说明一下,如果您的光标在第二组括号中,您可以执行
vi(i(
以提高一级,依此类推。关于vim - vim 可以用默认寄存器替换文本对象吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7747426/