最近偶然间发现了这篇文章 Vim and Python - a Match Made in Heaven ,标题读起来还挺押韵的哈。里面主要介绍了使用Vim编辑Python时的一些配置和插件,我试过后发现,的确很提高工作效率~当然,在折腾的过程中,我也遇到了一些问题,就记录在下面啦。
Python由于对缩进要求非常严格,所以在Vim中实现代码折叠只需要如下配置即可:
set foldmethod=indent
set foldlevel=99
nnoremap <space> za
这样,在需要折叠的函数里,Vim的normal模式下,按下空格键,就可以将这个函数折叠起来了,好清爽~
def handle(self, *app_labels, **options):
+--- 11 lines: from django.apps import apps------------------
再按下空格,又可以将函数展开。
这篇文章 中说,上面这种折叠方式有时会比预期中折叠更多的代码,所以推荐使用插件SimpylFold插件。但是我发现:
所以这个插件的安装请慎重。
Vundle是Vim管理插件的插件,和pathogen各有优劣。
Vundle的安装也很简单,首先:
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
然后,在.vimrc文件的开头加入如下配置:
set nocompatible " required
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'
" Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin)
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
之后,添加插件只需要在vimrc中添加Plugin行即可。安装的话,也只需要打开Vim,输入:PluginInstall就可以自动安装啦。
神器插件YouCompleteMe出场~
实不相瞒,我之前写Python时用的自动补全都是Vim的Ctrl+n,非常原始吧。但是当我用了YCM之后,顿时就有鸟枪换炮的感觉!
首先使用Vundle安装YCM:
Bundle 'Valloric/YouCompleteMe'
然后在Vim中调用:PluginInstall,这里会卡在processing xxx一段时间,这时可以去泡杯咖啡,刷刷知乎^_^
这一步完成后,需要进入~/.vim/bundle/YouCompleteMe这个目录下面,然后通过插件提供的脚本进行编译安装。
./install.py --clang-completer
其中clang-completer表示对C-family语言的支持(可选)。
这时,你可能会和我一样,遇到如下错误信息:
subprocess.CalledProcessError: Command '['/usr/bin/python2', u'/home/yubo/.vim/bundle/YouCompleteMe/third_party/ycmd/build.py', '--clang-completer']' returned non-zero exit status 1
别着急,这是因为你没装cmake。直接通过apt-get安装cmake即可解决。
安装完成后,在.vimrc中进行如下配置:
nnoremap gl :YcmCompleter GoToDeclaration<CR>
nnoremap gf :YcmCompleter GoToDefinition<CR>
nnoremap gg :YcmCompleter GoToDefinitionElseDeclaration<CR>
这样,就可以通过快捷键gl、gf、gg进行各种定义跳转,比ctags准三条长安街~
最牛的是,现在在可以弹出自动补全列表的同时,还会在Vim中生成一个预览框,让我看到这个函数的用法!
YCM还提供了对其他语言的自动补全支持,详细配置可以参考 这篇文章 ,它对于C/C++的自动补全也是很出色的~
首先使用pip安装flake8模块,然后使用Vundle安装如下两个插件:
Plugin 'scrooloose/syntastic'
Plugin 'nvie/vim-flake8'
之后使用Vim编辑Python文件就会自动检测是否符合PEP8已经简单的语法错误咯。
我的一个简单的.vimrc文件放在 我的GitHub ,有兴趣的读者可以自行查看。
转载请注明出处: http://blog.guoyb.com/2016/07/17/python-vim/ 。
欢迎使用微信扫描下方二维码,关注我的微信公众号TechTalking,技术·生活·思考: