删除Vim中包含模式的行

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

有一个css文件,我想做两件事:

1)删除所有Webkit关键帧和周围的空白字符,例如:

@keyframes outToLeft {
    to {
        opacity: 0;
        -webkit-transform: translate3d(-100%, 0, 0);
        transform: translate3d(-100%, 0, 0);
    }
}

2)删除所有webkit前缀属性和周围的空格字符,例如:

-webkit-transform: translate3d(100%, 0, 0);

我尝试使用%s,但是它不起作用(也许我的构造不正确)

最佳方法是什么?

css vim
2个回答
1
投票

解决方案是全局:g命令。

对于您的第一部分,它看起来像这样:

:g/@^keyframes/norm d}

这意味着在匹配模式^@keyframes的每一行上执行norm d}norm允许给该块一个普通命令。 d}删除整个块。

对于第二个示例,它甚至更容易,我们可以将:g命令与d标志一起使用:

:g/^-webkit/d

[d仅表示删除。

由于您提到了空格,所以这些行可能看起来像这样:

:g/@^keyframes/norm d}dk

删除块之前和之后的行,或保留一行:

:g/@^keyframes/norm d}dd

第二个示例也是如此:

:g/^-webkit/norm dj

如果您也想删除以下行。


1
投票

不可能,IdeaVim不支持全局g:命令。

请参见https://youtrack.jetbrains.com/issue/VIM-831以获取更多信息和更新状态。

如果将其替换为空行很好,则可以执行类似:%s/.*-webkit.*//g的操作

© www.soinside.com 2019 - 2024. All rights reserved.