如何在Vim中使用表格插件时忽略包含花括号的行



考虑使用Vim中的Tabular插件来对齐CSS文件中的属性。假设我们有以下CSS规则集:

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

游标在规则内,vi{后面跟着:Tab /:zs,结果是

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

然而,我想在所有规则集中的所有属性值在文件中一次对齐,而不仅仅是在一个规则集中。

对所有行(:%Tab /:zs)运行相同的Tabular命令确实达到了预期的效果,因为规则名称不必要地影响左列的宽度。此外,有些CSS规则中还包含多个:字符。

当运行这样的表格命令时,如何忽略包含花括号的行?

要解决这个问题,可以将有问题的行从通过添加第一列的前缀来影响该列的宽度分隔符在每一行的开始处。当对齐是完成后,这个额外的前缀可以很容易地删除。遵循以下方法我们将有三个命令,如下所示:

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

您可以将此命令映射到快捷方式,甚至可以自动运行它保存CSS文件时:

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

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

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

|之后的最后一个命令是Ex-mode命令,用于将块从当前位置(每个左括号下方一行)缩进到右括号上方一行。根据你所说的,我希望这能起作用,但我还没有试过:

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

最新更新