vim Tabularize:如何忽略包含花括号的行

时间:2011-07-23 02:19:59

标签: regex vim tabular

考虑使用Tabularize vim插件来对齐CSS规则的属性。 e.g。

body {
  margin: 0;
  padding: 0;  
  font-family: arial, verdana;
}


在vim中,光标位于规则vi{ :Tab /:\zs内,结果为

body {
  margin:      0;
  padding:     0;  
  font-family: arial, verdana;
}


我想实现这个为整个css计算的Tabularization,而不是每个块,如图所示。

:%Tab \:\zs,规则名称会计入左列宽度,这是不可取的。

有些CSS规则包含多个:,所以我的问题是如何忽略包含花括号的行?

2 个答案:

答案 0 :(得分:3)

尝试下面列出的命令。

:%g/:.*{/s/^/:/ | exe'%Tab/^[^:]*:\zs' | %s/^:\s*//

您可以将此命令映射到快捷方式,或在保存期间自动运行 CSS文件。

:au BufWrite *.css %g/:.*{/s/^/:/ | exe'%Tab/^[^:]*:\zs' | %s/^:\s*//

答案 1 :(得分:1)

这里可以使用全局命令。我没有Tabularize,所以我的版本只是缩进所有的css块:

:%g/^.*{/+ | .,/}/->

“|”之后的最后一个命令是ex模式命令,用于将块从当前位置(每个左大括号下方的一行)缩进到右大括号上方的行。根据你所说的,我希望这可行,但我没有尝试过:

:%g/^.*{/+ | Tab /:\zs