我有一个要替换前两个字符的项目列表:

a) item 1
b) item 2
c) item 3


最快的方法是什么:

* item 1
* item 2
* item 3


我有一种可视模式方法(Ctr-v,jjj,但需要执行两个替换命令。irc,此替换可以用1个命令完成)

评论

像。,。+ 2s /^../*/(或等效地在视觉选择中)?为什么要使用两个替换命令? 2c将替换两个字符。

有时只更改视觉选择中的第一行,然后使用重复。其他的行把事情弄糟了。

@poseid您是否习惯按Ctrl-C而不是Esc?这尤其防止了将更改应用于可视块选择的每一行。

那可能是造成混乱的主要原因!谢谢!

#1 楼

可视块选择:

<C-v>
jjl
c*
<Esc>


:normal

:,+2norm! cE*


:,+2s/^.\{2}/*


点公式:

cE*<Esc>
j.
j.


评论


疯狂的方法:使用textobj-word-column.vim可以执行ciC * 并完成。注意:此插件是“按我的意思做”的插件,因此它在意外的地方和方式中均会失败,但是在诸如此类的一些简单情况下,该插件仍然有用。

– Peter Rincker
2015年2月20日在23:55



有趣的法线和点公式!

–poseid
15年2月21日在9:40

请注意,对于Visual-block解决方案,您只会在第一行看到键入的文本。按下后,它将填充剩余的行。

–tommcdo
18年2月27日在12:04

关于记住c将替代的方法有什么建议吗?就像ctrl + D(own)

–乔丹·麦基(Jordan Mackie)
19 Mar 28 '19在16:06

@JordanMackie c用于“更改”。

– romainl
19年3月30日在16:24

#2 楼

这是执行此操作的更有效方法:


将光标置于第一项和第一个字母(0)上,进入“逐块”可视模式Ctrl + v并选择您的第一列当前的段落由}(如果您的列表以新行结束),否则请使用其他方法,例如箭头键(在所选内容中移动)或模式搜索/ c,其中c是最后一个元素)。
移至用k和l(或使用箭头键)显示列表的最后一个符号,因此选择了要更改的两列。
通过按c并输入项目符号(*)来更改选定的文本,最后按按下Esc键。

可以更有效地工作,尤其是在较长的列表中。