VIM:删除直到找不到f命令

时间:2016-05-03 12:27:10

标签: vim

例如,我有以下文字:

black brown cat bla bla_____
black brown cat bla bla__
black brown cat bla bla_______
black brown cat bla bla___
black brown cat bla bla_____
black brown cat bla bla

每行都有不同长度的下划线(可以是任何其他字符) 我想要使​​用f命令删除行末尾的下划线,使用x删除,直到找不到模式并转到下一行。

预期结果是没有下划线符号的行:

black brown cat bla bla
black brown cat bla bla
black brown cat bla bla
black brown cat bla bla
black brown cat bla bla

我该怎么做?

2 个答案:

答案 0 :(得分:2)

最简单的是:

%s/_*$//

f/F非常方便,但不适用于此用例,它会引导您进入行中的下一个x字符,但不会检查是否存在连续x或如果x旁边的字符是[^x]

只说到您的示例,如果您必须使用f/F类型的命令,则可以执行$vTax,此处我使用了硬编码a,因为您始终a_____$但我认为你的真实文本不会像它一样。

答案 1 :(得分:1)

使用宏录制......

首先,记录您的宏:

qq
f_
D
q

然后,在[range]

的行上播放
:[range]norm @q

可替换地:

:[range]norm f_D

替换......

:[range]s/_\+$