python-mode这款插件应该是Vim上写Python最佳辅助型插件了,集成了语法高亮,文档查阅,语法检查,自动修正错误和重构等功能,相关的设置和快捷键也异常丰富繁多,这里从项目的文档中选取了大部分实用的设置并进行适当修改,如果你想要更详细地了解相关内容建议阅读文档,也建议阅读或者浏览一下文档
"python-mode "开启警告 let g:pymode_warnings = 0 "保存文件时自动删除无用空格 let g:pymode_trim_whitespaces = 1 let g:pymode_options = 1 "显示允许的最大长度的列 let g:pymode_options_colorcolumn = 1 "设置QuickFix窗口的最大,最小高度 let g:pymode_quickfix_minheight = 3 let g:pymode_quickfix_maxheight = 10 "使用python3 let g:pymode_python = 'python3' "使用PEP8风格的缩进 let g:pymode_indent = 1 "取消代码折叠 let g:pymode_folding = 0 "开启python-mode定义的移动方式 let g:pymode_motion = 1 "启用python-mode内置的python文档,使用K进行查找 let g:pymode_doc = 1 let g:pymode_doc_bind = 'K' "自动检测并启用virtualenv let g:pymode_virtualenv = 1 "不使用python-mode运行python代码 let g:pymode_run = 0 "let g:pymode_run_bind = '<Leader>r' "不使用python-mode设置断点 let g:pymode_breakpoint = 0 "let g:pymode_breakpoint_bind = '<leader>b' "启用python语法检查 let g:pymode_lint = 1 "修改后保存时进行检查 let g:pymode_lint_on_write = 0 "编辑时进行检查 let g:pymode_lint_on_fly = 0 let g:pymode_lint_checkers = ['pyflakes', 'pep8'] "发现错误时不自动打开QuickFix窗口 let g:pymode_lint_cwindow = 0 "侧边栏不显示python-mode相关的标志 let g:pymode_lint_signs = 0 "let g:pymode_lint_todo_symbol = 'WW' "let g:pymode_lint_comment_symbol = 'CC' "let g:pymode_lint_visual_symbol = 'RR' "let g:pymode_lint_error_symbol = 'EE' "let g:pymode_lint_info_symbol = 'II' "let g:pymode_lint_pyflakes_symbol = 'FF' "启用重构 let g:pymode_rope = 1 "不在父目录下查找.ropeproject,能提升响应速度 let g:pymode_rope_lookup_project = 0 "光标下单词查阅文档 let g:pymode_rope_show_doc_bind = '<C-c>d' "项目修改后重新生成缓存 let g:pymode_rope_regenerate_on_write = 1 "开启补全,并设置<C-Tab>为默认快捷键 let g:pymode_rope_completion = 1 let g:pymode_rope_complete_on_dot = 1 let g:pymode_rope_completion_bind = '<C-Tab>' "<C-c>g跳转到定义处,同时新建竖直窗口打开 let g:pymode_rope_goto_definition_bind = '<C-c>g' let g:pymode_rope_goto_definition_cmd = 'vnew' "重命名光标下的函数,方法,变量及类名 let g:pymode_rope_rename_bind = '<C-c>rr' "重命名光标下的模块或包 let g:pymode_rope_rename_module_bind = '<C-c>r1r' "开启python所有的语法高亮 let g:pymode_syntax = 1 let g:pymode_syntax_all = 1 "高亮缩进错误 let g:pymode_syntax_indent_errors = g:pymode_syntax_all "高亮空格错误 let g:pymode_syntax_space_errors = g:pymode_syntax_all下面是对上面设置的部分说明,
let g:pymode_options = 1也就是说启用了
setlocal complete+=t setlocal formatoptions-=t if v:version > 702 && !&relativenumber setlocal number endif setlocal nowrap setlocal textwidth=79 setlocal commentstring=#%s setlocal define=^\s*\\(def\\\\|class\\)上面启用了python-mode定义的Vim移动方式,也就是这句
"开启python-mode定义的移动方式 let g:pymode_motion = 1开启以后就可以使用下面的动作方便地跳转到函数,类和方法等
按键功能[[Jump to previous class or function (normal, visual, operator modes)]]Jump to next class or function (normal, visual, operator modes)[MJump to previous class or method (normal, visual, operator modes)]MJump to next class or method (normal, visual, operator modes)aCSelect a class. Ex: vaC, daC, yaC, caC (normal, operator modes)iCSelect inner class. Ex: viC, diC, yiC, ciC (normal, operator modes)aMSelect a function or method. Ex: vaM, daM, yaM, caM (normal, operator modes)iMSelect inner function or method. Ex: viM, diM, yiM, ciM (normal, operator modes)这里没有使用python-mode设置的快捷键运行Python是因为我在设置里已经绑定了F9运行Python代码,具体看这里,如果你想启用python-mode设置的python代码运行方式修改上面相关的设置即可,原始设置
"不使用python-mode运行python代码 let g:pymode_run = 0 "let g:pymode_run_bind = '<Leader>r'这里同样没有使用python-mode设置的debug方式,因为我用Vebuggerdebug,支持的语言比较多,语言切换不需要记其他的debug模式快捷键,如果你不用Vebugger,可以修改下面的设置启用python-mode的debug
"不使用python-mode设置断点 let g:pymode_breakpoint = 0 "let g:pymode_breakpoint_bind = '<leader>b'语法检查这一块,因为我用ale,它能在编辑时实时显示错误信息,也会有相关的标志提示,所以我取消了python-mode在这一块的设置,如果你想使用python-mode在这一块的设置,修改下面的设置
"启用python语法检查 let g:pymode_lint = 1 "修改后保存时进行检查 let g:pymode_lint_on_write = 0 "编辑时进行检查 let g:pymode_lint_on_fly = 0 let g:pymode_lint_checkers = ['pyflakes', 'pep8'] "发现错误时不自动打开QuickFix窗口 let g:pymode_lint_cwindow = 0 "侧边栏不显示python-mode相关的标志 let g:pymode_lint_signs = 0 "let g:pymode_lint_todo_symbol = 'WW' "let g:pymode_lint_comment_symbol = 'CC' "let g:pymode_lint_visual_symbol = 'RR' "let g:pymode_lint_error_symbol = 'EE' "let g:pymode_lint_info_symbol = 'II' "let g:pymode_lint_pyflakes_symbol = 'FF'语法检查的引擎支持pylint, pep257, pep8, pyflakes和mccabe ,我这里使用的是pyflakes和pep8,其中pyflakes负责检查语法错误,pep8检查代码风格,要使用这个必须先在系统上安装相应的包,在Debian上可以在终端执行
$ sudo aptitude install python-flake8 python3-flake8 flake flake8当然这里也可以使用其他的语法检查引擎,安装相应的包就可以了,特别要注意的一点是不要使用pylint因为它非常慢。而且发现错误后键入:PymodeLintAuto会根据PEP8标准自动修复当前buffer中的错误。