\t or space * 4?不纠结,vim的modeline帮你统一
用vim的pythoner总会被缩进虐一次。当多个人同时修改一个py,或者一个人在不同的环境中修改同一个py时,可能会遇到当前用户的vimrc设置不同,导致py代码中的缩进不统一,那结果肯定是运行不能了。
不过缩进这东西就跟大括号该怎么写是一类问题,就是个习惯。有的人习惯是\t做缩进,有人就是4个空格,还有是8个空格的。不能通过每个人的vimrc配置相同来统一缩进问题(不太人性化),可以在文件级别来约定。这里我们使用“modeline”功能。这个功能可以使得无论谁拿来这个文件,不用更改自己的个性化设置,就可以安装原来的文件所需设置来编辑,比如不同的缩进方式。
vim的modeline可以让你针对每个文件进行文件级别的设置,这些设置是覆盖当前用户的vimrc中的设置的。vim默认关闭modeline,开启的话需要在你的home下的.vimrc文件中增加一行:
1 set modeline
然后source一下或者重新登陆就可以生效了。
然后创建或打开一个文件,在文件的首行/尾行(必须),写一行当前这个文件里面语言所支持的注释,例如写python就是#,写php就//或/**/,然后在里面加上modeline识别的固定格式,举例:
1 # vim: set expandtab ts=4 sts=4 sw=4 :
这句注释中,'#'后面、"vim:"前面的空格是必须的,结尾的':'也是必须的,这些是modeline所识别的。中间就是你所熟悉的vimrc中的设置了。上面这样的设置使得这个文件在打开编辑时默认为使用空格展开\t,并且一个\t输出的长度为4个空格。
再举例一个thrift类型的文件设置:
1 /** vim: set filetype=java ts=2 sts=2 sw=2 fdm=indent et : */
因为vim暂时没有支持.thrift这个filetype,并且thrift中的习惯缩进长度一般为2。设置成java的filetype来编辑thrift文件还不错,/**/注释在回车时还能自动生成*号。后面set的一串2,就能满足thrift的缩进习惯。
暂时先研究到这了,有需要再深入~
参考:http://vim.wikia.com/wiki/Modeline_magic