我最近从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上...谢谢。
答案 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)
这与cindent
和smartindent
有关。其中一个会导致这种行为。
我忘记了哪一个(可能都是这两个?),但是我从~/.vimrc
文件中删除了它们,只保留了autoindent