如何使用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
我正在尝试在文本文件中不以字符 * 开头的所有行中插入字符(不包括引号)“*”。
以下 gvim 模式 'almost' 有效
%s/^[^*]/*/gc
问题是如果该行是
Bla bla bla
然后变成
* la bla bla
即第一个字符被替换覆盖。
我希望能够确认每次插入,因为文件中有些行我不想插入“*”。
我一直在寻找这种模式,但找不到任何答案。
你快到了。因为模式匹配第一个(非 *
)字符,但在替换中没有引用,所以它丢失了。您可以重新包含它(通过特殊的 &
符号,或 [=14=]
(cp. :help s/\&
):
%s/^[^*]/* &/gc
或者您更改模式以通过 \ze
将字符从实际匹配中排除(因此匹配实际上立即在行的开头结束,但它仍然断言有一个非 *
以下):
%s/^\ze[^*]/* /gc