当前位置: 首页 > 工具软件 > vim-mode > 使用案例 >

vim python-mode_Vim插件之python-mode 设置

支智志
2023-12-01

python-mode这款插件应该是Vim上写Python最佳辅助型插件了,

Python-mode 的特性

它包含下面这些值得一提的特性:

支持 Python 2.6+ 至 Python 3.2 版本

语法高亮

提供 virtualenv 支持

支持 Python 式折叠

提供增强的 Python 缩进

能够在 Vim 中运行 Python 代码

能够添加/删除断点

支持 Python 代码的快捷移动和操作

能够在运行的同时检查代码(pylint、pyflakes、pylama ……)

支持自动修复 PEP8 错误

允许在 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 = 'r'

"不使用python-mode设置断点

let g:pymode_breakpoint = 0

"let g:pymode_breakpoint_bind = '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 = 'd'

"项目修改后重新生成缓存

let g:pymode_rope_regenerate_on_write = 1

"开启补全,并设置为默认快捷键

let g:pymode_rope_completion = 1

let g:pymode_rope_complete_on_dot = 1

let g:pymode_rope_completion_bind = ''

"g跳转到定义处,同时新建竖直窗口打开

let g:pymode_rope_goto_definition_bind = 'g'

let g:pymode_rope_goto_definition_cmd = 'vnew'

"重命名光标下的函数,方法,变量及类名

let g:pymode_rope_rename_bind = 'rr'

"重命名光标下的模块或包

let g:pymode_rope_rename_module_bind = '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)

[M

Jump to previous class or method (normal, visual, operator modes)

]M

Jump to next class or method (normal, visual, operator modes)

aC

Select a class. Ex: vaC, daC, yaC, caC (normal, operator modes)

iC

Select inner class. Ex: viC, diC, yiC, ciC (normal, operator modes)

aM

Select a function or method. Ex: vaM, daM, yaM, caM (normal, operator modes)

iM

Select 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 = 'r'

这里同样没有使用python-mode设置的debug方式,因为我用Vebuggerdebug,支持的语言比较多,语言切换不需要记其他的debug模式快捷键,如果你不用Vebugger,可以修改下面的设置启用python-mode的debug

"不使用python-mode设置断点

let g:pymode_breakpoint = 0

"let g:pymode_breakpoint_bind = '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中的错误。

 类似资料: