仅在 vim 中添加带有文本的行

Rob*_*Rob 5 vim

我有一个如下列表:

words
more words
here's more

skip space
words here
bananza!


D: look
more spaces
and words!
Run Code Online (Sandbox Code Playgroud)

如何仅在那些带有文本的行的开头插入内容?:%norm 0i*会放得很*好,但是因为它会处理所有行,所以它也会得到空行。有没有什么办法可以做到这一点而不必回去清除那些空格(我知道它们只是*,所以应该不难做到,但这是额外的工作)

小智 10

这样的事情应该工作:

:%s/^\(.*[^\n]\)$/* \1/
Run Code Online (Sandbox Code Playgroud)

编辑由于您要求对正则表达式进行细分:

:% 所有线路

s/替代命令的开始;开始模式

^ 行首

\(我们要保留的组的开头。这将在以后很重要。

.* 任意数量的字符

[^\n] 除了换行符之外的一些字符

\) 组结束

$ 行结束

/ 模式结束,替换开始

* \1插入*,然后是我们在左侧选择的第一组。

/ 替换和命令结束

  • 这太复杂了,这有效::%s/^./* &/ (4认同)