Css 使用vi,如何删除包含[searchterm]的所有行?

Css 使用vi,如何删除包含[searchterm]的所有行?,css,regex,vim,pattern-matching,Css,Regex,Vim,Pattern Matching,我想删除CSS文件中包含单词color的所有行 这将包括: body {background-color:#000;} div {color:#fff;} 您将如何使用:%s/命令执行此操作?这为我带来了窍门: :%s/.*color.*\n// 标准ex序列: :/color/d 应该是 :g/color/d 给你一个完全不同的答案: :%!grep -v color : 这暗示了更大的功能;您可以应用*nix命令行过滤器的知识来编辑代码。要按字母顺序排序的枚举列表吗?视觉选择,

我想删除CSS文件中包含单词color的所有行

这将包括:

body {background-color:#000;}
div {color:#fff;}

您将如何使用:%s/命令执行此操作?

这为我带来了窍门:

:%s/.*color.*\n//
标准ex序列:

  :/color/d
应该是

:g/color/d

给你一个完全不同的答案:

:%!grep -v color
:

这暗示了更大的功能;您可以应用*nix命令行过滤器的知识来编辑代码。要按字母顺序排序的枚举列表吗?视觉选择,:!排序,然后就完成了


您可以使用uniq、tac等。这是一个明智的想法吗?如果你的CSS有这样的部分,你可能会做一些你不想做的事情

body {background-color: #000;
  font-size: large;
}

p {
  color: #fff; float: left;
  } 
最好只删除包含颜色的属性

s/\\w\\\-\*颜色\w*\s*:.\{-}\|$\//

更新:
正如php所指出的,正则表达式I并不完全有效。我已经修好了,但需要维姆。伪造一个只删除vi中有问题的属性的正则表达式是不可行的。因为没有字符类,所以您必须用\a\|b\|c\|d\|Z\

替换\w,但正则表达式在vim中不起作用!它甚至在Perl中都不起作用。