vim:替换块

时间:2012-08-17 19:35:40

标签: vim

假设我有这样的文字:

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(更改)将我抛入插入模式,不允许我粘贴文本。

4 个答案:

答案 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