Vim 如何删除字符直到数字后的结尾

Vim 如何删除字符直到数字后的结尾,vim,Vim,我的意见如下 1sum 2subtract 3multipy 4divide ... 预期产出: 1 2 3 4 ... 我尝试了%s/[0-9].//g 但它也在删除数字 我想保留数字..请帮助这个怎么样: :%s/\([0-9]\).*/\1 /g 这个怎么样: :%s/\([0-9]\).*/\1 /g 你在匹配所有东西,包括数字本身 一种简单的方法是使用\D匹配第一个非数字字符,然后删除到行尾: :%s/\D.*// 请注意,\D与[^0-9]相同,它是除数字以外的任何字符,因

我的意见如下

1sum
2subtract
3multipy
4divide
...
预期产出:

1
2
3
4
...
我尝试了
%s/[0-9].//g
但它也在删除数字 我想保留数字..请帮助

这个怎么样:

:%s/\([0-9]\).*/\1 /g
这个怎么样:

:%s/\([0-9]\).*/\1 /g

你在匹配所有东西,包括数字本身

一种简单的方法是使用
\D
匹配第一个非数字字符,然后删除到行尾:

:%s/\D.*//
请注意,
\D
[^0-9]
相同,它是除数字以外的任何字符,因此将插入符号添加到原始表达式也可以:

:%s/[^0-9].*//

您不需要在结尾处使用
/g
(即使它不会造成伤害),因为每行最多可以有一个匹配项,因为匹配项将一直消耗到行尾。

您正在匹配所有内容,包括数字本身

一种简单的方法是使用
\D
匹配第一个非数字字符,然后删除到行尾:

:%s/\D.*//
请注意,
\D
[^0-9]
相同,它是除数字以外的任何字符,因此将插入符号添加到原始表达式也可以:

:%s/[^0-9].*//

你不需要在结尾处使用
/g
(即使没有伤害),因为每行最多只能有一个匹配项,因为匹配项将一直消耗到行尾。

:%s/\zs.///g
@SergioAraujo是的,如果我想匹配数字,我肯定会使用
\zs
,即
:%s/[0-9]*\zs.///code>。我想得到一个解决方案,该解决方案可以处理两个或更多数字的数字,并且不会对没有数字的行产生误报(保留非数字)…
:%s/\zs.//g
@SergioAraujo是的,如果我想匹配数字,我肯定会使用
\zs
,即
:%s/[0-9]*\zs./
。我想得到一个解决方案,既能处理2位或更多位的数字,又不会对没有数字的行产生误报(保留非数字)。。。