如何使用gvim在不包含字符的行首插入

How to insert at beginning of line not containing character using gvim

我正在尝试在文本文件中不以字符 * 开头的所有行中插入字符(不包括引号)“*”。

以下 gvim 模式 'almost' 有效

%s/^[^*]/*/gc

问题是如果该行是

Bla bla bla

然后变成

* la bla bla

即第一个字符被替换覆盖。

我希望能够确认每次插入,因为文件中有些行我不想插入“*”。

我一直在寻找这种模式,但找不到任何答案。

你快到了。因为模式匹配第一个(非 *)字符,但在替换中没有引用,所以它丢失了。您可以重新包含它(通过特殊的 & 符号,或 [=14=] (cp. :help s/\&):

%s/^[^*]/* &/gc

或者您更改模式以通过 \ze 将字符从实际匹配中排除(因此匹配实际上立即在行的开头结束,但它仍然断言有一个非 * 以下):

%s/^\ze[^*]/* /gc