在Vim中使用CSS缩进烦恼

时间:2010-03-25 21:13:05

标签: css vim textmate indentation

我最近从TextMate搬到了Vim,我真的很喜欢这个开关。但是,关于Vim使用CSS语法处理花括号中的缩进的方式,我有一个痒。我使用的是simple_pairs.vim,它可能与我的问题有关,也可能没有,但我不这么认为,因为PHP,JavaScript等工作正常。让我解释一下......

我通常使用缩进按上下文对CSS规则进行分组,如下所示:

ul#nav {
  margin: 10px;
}
  ul#nav li {
    float: left;
    margin-right: 4px;
  }

这意味着当我键入ul#nav li规则,然后是{(自动插入相应的})并按Enter键时,我希望右括号处于同一缩进处等级ul#…,但我得到这样的东西:

ul#nav {
  margin: 10px;
}
  ul#nav li {
}

所以我必须手动缩进额外的步骤。就像我说的,在PHP,JavaScript等中做同样的事情,效果很好。有谁知道我怎么解决这个问题?我不太了解Vim的语法定义文件,因为我能够弄清楚PHP语法文件中的哪些内容使其工作,并将其移植到CSS上...谢谢。

3 个答案:

答案 0 :(得分:11)

我在这里找到了一个非常好的嵌套花括号缩进代码:

https://gist.github.com/762326/bcbd35239db7f26447f1c2323037d20a5219471d

你可以将它保存在.vim / indent / css.vim中,它可以比默认情况下更好地缩进CSS。

此外,它也适用于.less文件,但您可能必须在.vimrc文件中将它们与它相关联。

github上的脚本与官方css.vim的脚本相同,只有6年的新版本。他们有几条不同的路线。

答案 1 :(得分:3)

我为css文件做了这个:

au BufEnter *.css set nocindent
au BufLeave *.css set cindent

我没有smartindent设置,但你也可以添加它。

这表示当您输入.css文件的缓冲区时,应取消设置cindent,并在离开缓冲区时将其设置回来。

答案 2 :(得分:0)

这与cindentsmartindent有关。其中一个会导致这种行为。

我忘记了哪一个(可能都是这两个?),但是我从~/.vimrc文件中删除了它们,只保留了autoindent