搭建基于VIM的Python IDE

  mikeshi
  Python相关
  2011-04-18
  增加更多TAG »
  37,464次

(本文收录于go4pro.org

每次要Python开发点什么东西,总是觉得找不到称手的兵器,试过IDLE,试过PyWin32,也试过Netbeans和Eclipse的Python开发插件,老实说,基本没有什么打动我的。只有Komodo和WingIDE没试过了,但是都是商业软件,售价还挺辣手的,像Komodo的个人版售价就在382元,RMB的话也算不便宜了,偏偏还是美刀,真是刀刀见血啊,哈哈,

因为我是VIM的深度用户——就是属于那种无论做什么,都忍不住用VIM命令的那种,没办法,谁用熟了VIM都这样,特别是想按jk来上下移动——所以我也成了GMAIL的深度用户了,因为它支持JK键上下移动,哈哈。

在Google了不少关于谁时Python最NB的IDE的帖子后,毅然决然的还是选了VIM。

但是,就好像一个笑话说的——如果你要用VIM编程,首先,你就要下载无数的插件,然后在vimrc文件里写无数的指令,最后,你惊喜的喊道:我终于配置完了,可惜也已经忘了当初为什么要配置这个IDE了——当然,这个笑话最好笑的地方在于,这事实上不是笑话,而是真相,囧。(好吧,我和你一样,都在想,要是以后重装系统可怎么活啊???)

好吧,废话说了不少,Let’s ROCK!!!

首先,无论为什么语言设置IDE,这些都是必要的。

你必须写一个自己的vimrc,这个文件一般是用户目录下的.vimrc。当然还可以写在其他地方,参考的优先度有高低之分,可以在VIM里键入

set runtimepath

获得。

然后就是写一些基本配置了。我在MacBook Air上装了MacVim后发现很多高级功能都没有时(比如omnifunc的autocomplete功能),开始以为是MacVim不支持呢,心都凉了半截,后来才发现原来是必须要设置.vimrc文件呢。

第一呢,要打开语法高亮,输入“syntax on”即可。既然高亮了,就要选择一套高亮的方案,可以通过输入

:colorschema <TAB>

来遍历,这里<TAB>是指按下Tab键。我个人在命令行版本的vim中,比较喜欢evening,而在GUI版本的Vim中,比较喜欢torte。对了,如果你要对命令行和GUI版本设置不同的东西,你可以单独设置一个.gvimrc文件,这个文件只对GUI版的VIM起效。

选定了一套配色方案后,也可以写入.vimrc文件中。

接着就是设定是否显示行号了,这个看个人喜好,因为我不大喜欢,所以一般不设置,因为你要到哪一行去,在VIM中非常简单,或者是输入“:<行号>”,或者是输入行号,然后按g键。而如果真要显示行号,只要输入命令“:set number”(number可以简写为nu的,爽吧?)即可,去除行号就是“:set nonumber”(同理,nonumber可以简写为nonu)即可,简单吧?如果你很喜欢行号,就写入vimrc文件吧。

然后就是一些缩进的设置了,事实上,只要设置了下面的命令

filetype plugin indent on

就可以让VIM自动判断文件类型,然后进行响应的缩进设置了。

不过呢,缩进的方式还是要指定一下的。默认是使用Tab的,我个人更倾向于用空格,虽然会使文件大点儿,但是以我的经验,这是最能保证在各个IDE和编辑器中得到一致效果的方式。Python这个语言可不比其他语言,对缩进的严格近似变态啊。

可以通过下列方式进行设置,”之后是注释

set tabstop=4 “一个Tab键显示为几个空格,默认为8个太长了

set softtabstop=4 “在Insert模式下,按下Tab键输入几个空格长的空间。如果设置了expandtab,则全部为空格,否则用Tab和Space拼接而成

set shiftwidth=4 “VIM为你自动缩进时,或者你按<<或>>进行对齐时,每个缩进占几个空格

set expandtab “将所有的Tab都转换为响应的空格

这样,一个基本的Python编辑器就完成了,注意,只是编辑器,而不是IDE。

怎么算是个IDE呢?首先要有Project管理的功能,这个有很多插件可以选择,我用NERDtree,显得我很Nerd嘛。只要下载zip文件,然后解压缩到用户的.vim目录下就可以了。当然,就像之前所说,你可以按照自己喜好,放到任何一个runtimepath路径下。然后输入

:NERDTree

就出现Project Navigation窗口了,我喜欢这个插件的原因在于功能丰富啊,可以参见它的wiki

Project Navigation完了,就是Code Navigation了。要知道,编个程序,那跳来跳去是免不了的,要是全靠人工,那就傻了眼了。

这个功能的话,其实挺通用的,你要是找打造C语言IDE或者Java语言IDE,估计也只有这两个插件了,那就是exuberant-ctagsvim taglist plugin。基本这两个是不二之选啊。悲剧!exuberant-ctags木有MacOSX版,只有Ports的版本,作孽!

当然,自动完成功能是不能少的,虽然full vim已经自带了Python的omnifunction了,但是实在是单薄了点。这时就需要pydiction这个神器了。这家伙有3个组成部分。一个是插件本身python_pydiction.vim,另外一个是生成diction文件的python脚本pydiction.py,最后是一个自带的complete-dict文件,是Linux下生成的字典文件,包含了很多Python的知名工程,可惜因为是linux版的,所以很多windows相关的内容没有生成,需要自己来生成(其实自带的字典也够用了,如果你懒得自己生成的话,就凑合着用吧)

按照安装的介绍,如果你是windows,就把python_pydiction.vim放在vim runtimepath路径下的ftplugin目录下,然后在vimrc中加入“filetype plugin on”,最后,设定一个全局变量指向需要的字典文件

let g:pydiction_location = ‘C:/vim/vimfiles/ftplugin/pydiction/complete-dict’

如果是Unix like的系统,就把python_pydiction.vim放在runtimepath的after/ftplugin目录下,其他都一样。

如果你发现你要的python模块没有加入到字典文件中,比方说web.py就没有加入,那就跑到放complete-dict的目录下,执行

python pydiction.py web

搞掂!!!这样就可以自动完成web.py的class和method了。

还有人喜欢snipet功能,我平时不怎么用,就写到这里吧,累死我了,呃~~~


除非另有来自Go4Pro.org或原作者的显式声明,本站点所有文章都按照知识共享许可协议知识共享署名-非商业性使用-禁止演绎 3.0 未本地化版本许可协议进行许可。

Go4Pro.org,V3.0,2009-2014。本站点采用SymfonyBootstrapTwig等技术开发。