1

假设我有这段文字:

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

4 回答 4

3
"_di"P

删除黑洞寄存器的内部引号;在光标之前粘贴最后一次拉动。

或者

ci"<Ctrl-R>0<ESC>

更改内部引号以检索最后一个 yank;离开插入模式。

于 2012-08-17T19:43:14.203 回答
2

使用我的ReplaceWithRegister 插件,最后两个步骤将是gri"。它还提供grr(替换当前/ [count] 行);虽然它只节省了一点打字,但我觉得这是必不可少的。

于 2012-08-17T19:47:55.913 回答
2

击键明智,j$yi"k然后vi"p实际上可能是最快的。但是,如果您绝对必须进入插入模式,那么您可以j$yi"k使用"_ci"<C-r>"ci"<C-r>0. 运算符允许您将:help i_CTRL-R寄存器的内容置于插入模式。

于 2012-08-17T20:11:51.780 回答
0

我通常会尽量保持简单,使用我觉得对日常命令更直观的方式:

j
yi"
k
ci"
<ESC>
p
于 2012-09-03T10:37:21.683 回答