以前我的脚本语言主要涉及到shell,awk,perl这三种,最近2年开始写python,发现python确实是一门不错的脚本语言,真是居家旅行之必备,慢慢的也开始推荐身边的人开始使用。但是由于python格式不像其他语言那么随意,所以也遇到了一个麻烦。
为了保证在任何一台机器上写的python脚本在其他机器上看上去格式都一样那么需要把TAB键替换成空格,一般的用vim来写python脚本都会在~/.vimrc这个脚本里做如下设置:
set tabstop=4
set softtabstop=4
set shiftwidth=4
set smarttab
set expandtab
如上设置后就可以在输入tab键的时候自动替换成4个空格,这样就能达到上述目的,但是这样替换后也会存在其他的问题,在linux机器上,可能多个人共用一个账号(这在公司里很常见)但是在同一个用户下只能有一个vimrc,即使没有共用用,如果TAB替换成空格后那么在自己编写makefile文件需要TAB键的时候也会遇到麻烦,这些个问题困扰了我挺久的,今天下决心学习下vim的一个插件希望能解决这个问题。
从vim help里可以看到有一章是 :
|usr_05.txt| Set your settings
进入到这一章可以看到有一节 :
|05.4| Adding a plugin
这个也许就是我要的东西了,在这一节里很快可以看到有一个tag :
|add-filetype-plugin|
这个正是我需要的——能够根据不同的文件类型来定制不同的文法风格。
要添加插件,那么在使用之前就应该让vim知道怎么识别使用哪个插件从help文档中可以看到有这么一个命令:
:filetype plugin on
这个命令是说开启文件类型的插件,这样vim就自动识别当前编辑的文件的类型然后调用对应的插件。执行这个命令后vim就会去找对应的插件,那么它是怎么进行查找的呢?在用vim打开一个文件后进入命令模式 软后输入命令:
:set runtimepath
然后就可以得到如下一条信息:
runtimepath=~/.vim,/usr/share/vim/vimfiles,/usr/share/vim/vim70,/usr/share/vim/vimfiles/after,~/.vim/after
这个runtimepath就是vim查找插件的顺序,如果在不同的两个路径下找到了同样名字的插件,那么就会以后面的为准来执行。一般来说推荐将自己的插件放到 ~/.vim/after/目录下,这样不容易出现问题。而不要去改系统中自带的插件。
现在为了解决我的问题,创建 ~/.vim/after/ftplugin/目录,然后在这个目录了下创建一个python.vim插件文件,然后在这个文件中设置好我的命令如下:
set softtabstop=4
set shiftwidth=4
set smarttab
set expandtab
如上设置并保存后就能解决python的TAB键问题了。需要注意的是,现在这样的话,媒体打开文件后都需要运行一遍 :filetype plugin on 这个命令,为了省事可以直接在vimrc中配置如下命令,这样每次启动后就自动加载插件了
if has("autocmd")
filetype plugin indent on
endif
到此只需要每次修改python.vim来定制自己的代码风格就行了,其他语言也是类似的方法。