如果我有多行换行符:
length = 1;
keys = NewKey(value);
gt_backref = NULL;
ls_backref = NULL;
我需要在每个代码段之间粘贴一个(<ctrl>-V+y
)node->
:
node->length = 1;
node->keys = NewKey(value);
node->gt_backref = NULL;
node->ls_backref = NULL;
如何在几个连续的行中粘贴被拉动的文本?像<ctrl>-V+<shift>-I
这样的东西,但是用于粘贴,而不是用于键入文本。
答案 0 :(得分:3)
<C-v>{motion}I<C-r>"<Esc>
<C-v>
进入可视屏蔽模式。I
进入插入模式。<C-r>"
以插入未命名寄存器的内容。<Esc>
将更改应用于所有选定的行。或:normal
:
:[range]norm I<C-r>"<CR>
答案 1 :(得分:1)
好吧,如果您使用Shift-V选择文本,那么请执行正则表达式
:'<,'>s/.*/node->&/
将添加node-&gt;到选定的行。
或者我猜甚至是简单的
:'<,'>s/^/node->/
如果它更复杂,也许您会创建某种宏来搜索以找到要替换的行的类型,并在每行上运行相同的正则表达式替换
答案 2 :(得分:0)
这个答案基于@ Shaun的回答。这真的需要一个宏。但是正确的正则表达式是
:'<,'>s/\(^\s\+\)/\1node->/
因为我需要考虑缩进。 但这种方法并不普遍。对于每个特定情况,我们都需要新的正则表达式。