vim-gitgutter 是一款在 Vim 内集成 flake8 (由 Python 官方发布的一款辅助检测 Python 代码是否规范的工具,整合了 PyFlakes 和 PEP 8 两个代码检查软件的功能) 的代码检测功能的 Vim 插件,可用于对 Vim 打开的当前 Python 代码进行静态的语法检查和格式检测。

This “gutter” is called the signs column. (See :help signs for more information.) The highlight group associated with this column is called SignColumn, and can be set like this (using the example from the help section):

https://stackoverflow.com/questions/15277241/changing-vim-gutter-color

vim-flake8 插件依赖 flake8 包,Linux 终端下可通过 pip install flake8 命令安装 flake8 及其依赖包。

如果当前使用的 Vim 已经安装了 vim-flake8 插件,但是当前使用的系统并未安装 flake8,则在 Vim 内部使用 vim-flake8 插件时会报以下类似错误:

1
2
3
处理 function flake8#Flake8..<SNR>45_Flake8 时发生错误:
第 7 行:
File flake8 not found. Please install it first.

vim-flake8运行错误

1. vim-flake8插件安装方法

与普通的 Vim 插件安装类似,vim-flake8 插件可通过多种方法进行安装。

若使用 vundle 安装,只需要在 Vim 配置文件 ~/.vimrc 中增加 Plugin 'nvie/vim-flake8' 并使用 :PluginInstall 进行安装即可。

若使用 vim-plug 安装,需要在 Vim 配置文件 ~/.vimrc 中增加 Plug 'nvie/vim-flake8' 并在 Vim 命令行模式执行 :PlugInstall 即可完成安装。

若选择手工安装 vim-flake8 插件,在 Linux 系统下执行下述命令,将 flake8.vim 文件下载到本地的 ~/.vim/plugin/ 路径下即可。

1
curl -fLo ~/.vim/plugin/flake8.vim --create-dirs https://raw.githubusercontent.com/nvie/vim-flake8/master/autoload/flake8.vim`

2. vim-flake8插件使用方法

vim-flake8 只是一个在 Vim 内部集成了调用 flake8 工具以及展示 flake8 检测结果的 Vim 插件 (vim-flake8 “just” invokes flake8 and deals with showing the output in Vim’s quickfix window),在 Linux 终端下直接使用 flake8 命令也可以达到同样的效果。关于 flake8 的使用和配置,推荐阅读http://flake8.pycqa.org,本文不再赘述。

安装好 vim-flake8 插件后,在使用 Vim 打开的任何 Python 源码文件内,Vim 普通模式下按 F7 便可以直接启动 flake8 对当前文件进行语法和格式检查。当检测到任何警告或错误时,Vim 会通过 quickfix 窗口 显示对应的错误信息。若没有检测到任何错误,vim-flake8 插件会显示 Flake8 check OK

vim-flake8配置

3. vim-flake8插件配置

如果不希望使用 F7 来启动 flake8 进行 Python 语法和格式检查,可以通过vim的按键映射功能设置为其他快键键。例如,如果希望使用 F3 来触发 flake8 检测,可以在 Vim 配置文件 ~/.vimrc 中增加以下配置:

1
autocmd FileType python map <buffer> <F3> :call flake8#Flake8()<CR>

:上述配置使用了 Vim 的 autocmd命令,仅针对 Python 文件进行按键映射。

如果希望在每次保存 Python 文件时都执行 flake8 检测,可以增加以下配置:

1
autocmd BufWritePost *.py call flake8#Flake8()

如果系统安装的 flake8 不是在默认位置 (/usr/local/bin/flake8),可通过 g:flake8_cmd 选项指定 flake8 二进制的具体路径,例如:let g:flake8_cmd="/home/vimjc.com/bin/flake8"

如果想定制显示 flake8 检测结果的 quickfix 窗口位置,可通过 g:flake8_quickfix_location 选项,例如:let g:flake8_quickfix_location="topleft"

如果想定制各种类型的检测结果 (如 error、warning、complexity等)的缩写形式,可分别使用 flake8_error_markerflake8_warning_markerflake8_pyflake_marker· flake8_complexity_markerflake8_naming_marker 等配置项。例如,flake8_error_marker='EE' 表示使用 EE 来标识 error 类型的检测结果。

最新的 vim-flake8 插件已经不支持直接对某些语法错误进行过滤设置 (即 g:flake8_ignore 选项已废弃),而是推荐在 flake8 的配置文件 (~/.config/flake8) 中进行配置。

更多的配置,请参考 vim-flake8 插件托管在 GitHub 上的官方介绍

《女程序员说》

原创不易,希望能给小女子的公众号加个关注~