使用 vim 从文件中删除模式

问题描述 投票:0回答:2

我正在尝试从文件中删除模式。

Edge[15] = 415 
Edge[16] = 65 
Edge[17] = 835 
Edge[18] = 951 
Edge[19] = 999 
Edge[20] = 887 ...

如何删除数字之前的所有内容,即直到 = ,即我只想要数字,然后想使用 ,.

加入

[415,65,835,...]

vim
2个回答
2
投票

好吧,所以你需要的是一句话,而不是你给出的多个步骤。当然还有很多其他方法,这里是一个:

:%s/.*=\s*\(\d\+\)\n/\1, / | normal! $xr]^OI[

这会通过仅捕获数字来删除

=
之前的内容以及与 :substitute 的行的
joining
(调整
:%
范围以满足您的需要)。然后,我使用普通模式命令去掉尾随逗号并添加方括号。 (在 Windows 上,输入
^O
为 Ctrl-V Ctrl-O;Ctrl-Q CTRL-O。)如果您有 surround.vim 插件,这可以进一步简化。人们还可以使用第二个
:.substitute
来实现相同的目的。

实际上,我可能会使用视觉分块模式、特殊的

J
映射和普通模式来实现这一点。


0
投票

您可以使用两个正则表达式

:%s/.*\( \d\+\).*\n/\1,/g

:%s/^ \(.*\),.\{-}$/[\1]

输出:

[415, 65, 835, 951, 999, 887]
© www.soinside.com 2019 - 2024. All rights reserved.