Vim查找和替换等号后面直到行末($)的所有内容

6
我有一行字符串(10到20个):
title = models.CharField(max_length=250)
...
field20 = models.DateField()

我可以使用Vim的查找和替换功能来删除等号后面的所有内容直到行末, 以便将文本转换为:
title
...
field20

我熟悉通过可视化选择查找替换(:s/\%Vfoo/bar/g)的方法,因此我想做类似于(:s/\%V< = until $>//g)的操作,但我不确定如何在Vim中实现:

 = until $

我查看了vimregex维基,并尝试了以下内容,但没有成功:

:s/\%V = (.*?)$//g
1个回答

18

您正在寻找这个吗:

:%s/=.*/

这与

相同。

:%s/=.*//

但结尾的 / 可以省略。你不需要 g,因为模式 到行尾 只匹配一次。

如果你还想删除 = 前面的空格,请使用:

:%s/[[:blank:]]*=.*/
注意:如果你认为[[:blank:]]很难打,你可以用\s代替。两者都表示空格或制表符。

1
\s is a much shorter version of [[:blank:]] - sidyll
2
[[:blank:]] 另一方面更明确,但打起来更费劲。 ;) - hek2mgl
@sidyll的\s[[:space:]]的缩写,而[[:blank:]]则是[\t<space>]的“短”版本。 - hek2mgl
1
不用担心,无需更改答案。但如果您最终决定这样做,请保留两个版本。谢谢!vimdoc关于[:blank:]whitespace的说明。 - sidyll
1
顺便提一下,虽然 [:space:] 本身包括换行符,但为了与 Vi 兼容,集合 [] 不包括换行符,除非在其前面加上 \_ 或者显式地包含 \n。因此,实际上 [[:space:]] 表示的是除了换行符之外的所有空白字符。而 \_[[:space:]] 表示的是所有空白字符。此外,还有 \_x 系列,它总是将一个 \x 转换为换行符,比如 \_s 表示 \s(空格和制表符)加上一个换行符。 - sidyll
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接