使用vi,我如何将CSS规则制作成一个衬里?

mag*_*ger 9 css regex vim replace

示例坏:

#main {
      padding:0;
      margin: 10px auto;
}
Run Code Online (Sandbox Code Playgroud)

示例好:

#main {padding:0;margin:10px auto;}
Run Code Online (Sandbox Code Playgroud)

我有很多CSS规则占用太多行.我无法弄清楚:%s/要使用的命令.

ram*_*ion 16

这是一个单行:

:%s/{\_.\{-}}/\=substitute(submatch(0), '\n', '', 'g')/
Run Code Online (Sandbox Code Playgroud)

\_.匹配任何字符,包括换行符,并且\{-}是非贪婪版本*,因此{\_.\{-}}匹配一对匹配的花括号之间的所有内容.

\=允许替换Vim表达式,我们在这里用它来去掉所有换行符的结果'\n'从匹配的文本(在submatch(0)使用)substitute()功能.

逆(将单行版本转换为多行版本)也可以作为一个班轮来完成:

:%s/{\_.\{-}}/\=substitute(submatch(0), '[{;]', '\0\r', 'g')/
Run Code Online (Sandbox Code Playgroud)

  • 您不需要使用\ =来执行相反的操作.一个简单的:%s/[{;] /&\ r/g | gg = G绰绰有余. (2认同)

sth*_*sth 11

如果您位于规则的开头或结尾,V%J则将其加入一行:

  • 转到开口(或收盘)支架
  • 点击V进入视觉模式
  • 点击%以匹配其他大括号,选择整个规则
  • 点击J加入线条