在Vim中进行垂直编辑-替换文本

11
如果我想在多行中输入相同的文本,我会使用:ctrl-v,然后I,开始打字,esc 这样我就可以快速更改:
aaa
bbb
ccc
ddd
...

至:

123aaa
123bbb
123ccc
123ddd
...

但是如果在打字时使用 del,它就不起作用。 我必须分两步进行列替换:从列中删除不需要的字符(ctrl-v+x),然后像上面那样打字。

有没有可能改进编辑并在单个操作中完成呢? 类似这样的:

aaa
bbb
ccc
ddd
...

致:

123aa
123bb
123cc
123dd
...

正则表达式怎么样:使用这个 %s/\v(\w\w)\w/123\1/g - PKumar
1
正则表达式在这里会很麻烦(打字速度较慢,不太舒适)。 - Sławomir Lenart
1个回答

18

您可以选择第一列,然后执行c123<Esc>

[a]aa
[b]bb
[c]cc
[d]dd

c123<Esc>

123aa
123bb
123cc
123dd
在可视化块模式下,s 等同于 c。你也可以使用 dx 来剪切选定内容,rx 可以将选定范围内的每个字符替换为 x,当然也可以使用 y 来拷贝整个块。你也可以使用 p 来粘贴,但需要注意你所粘贴的内容。

为了更清晰,请在您的回答的第一句话末尾添加"<esc>:",这样它就会变成"您可以选择第一列并执行c123<esc>:"。 - Rob Bar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接