假设我有这样的文字:
something "something else"
something here "just another quoted block"
我想用“只是另一个引用的块”替换“别的东西”,所以我这样做:
/quot<enter> (to jump to second quoted block searching for the string "quot")
yi" (to yank inner text for current quoted block)
?else<enter> (to jump back to the first quoted block wich contains "else")
vi" (to visually select the quoted block)
p (to paste yanked text)
这样可行,但我想知道最后两个步骤是否可以替换为单个步骤,以避免可视模式。我知道这不是一个巨大的收益击键,但我认为Vim哲学会鼓励我正在尝试做的事情,而且每次我这样做,我的思绪一直在寻求这个命令。 :-P
到目前为止我尝试了什么:
r(替换)只替换一个字符 c(更改)将我抛入插入模式,不允许我粘贴文本。
答案 0 :(得分:3)
"_di"P
删除黑洞寄存器的内部引号;粘贴在光标之前最后猛拉。
或者
ci"<Ctrl-R>0<ESC>
更改内部引号以检索上一次抽奖;离开插入模式。
答案 1 :(得分:2)
使用我的ReplaceWithRegister plugin,最后两个步骤为gri"
。它还提供grr
(替换当前/ [计数]行);虽然它只节省了一点点打字,但我发现这是不可或缺的。
答案 2 :(得分:2)
按键划分,j$yi"k
然后vi"p
实际上可能是最快的。但是,如果您绝对必须进入插入模式,则可以j$yi"k
然后"_ci"<C-r>"
或ci"<C-r>0
。 :help i_CTRL-R
运算符允许您将寄存器的内容置于插入模式。
答案 3 :(得分:0)
我通常会尝试保持简单,使用我认为每天命令更直观的内容:
j
yi"
k
ci"
<ESC>
p