内容简介:写完这些天写了些代码,对插件使用也更有体会了,今天主要讲讲和代码格式有关的一些插件。其实也有很多同学提供了其他Python IDE,那为什么我还要坚持用Vim?大概有这几方面原因:
写完 《将Vim打造成Python IDE(一):解决80%的问题》 这篇文章后,不代表我就完全会使用Vim编写 Python 代码了,只是一个入门,了解了某些插件能解决的问题,以及这些插件的大概用法,如果要真正掌握,还得实践。
这些天写了些代码,对插件使用也更有体会了,今天主要讲讲和代码格式有关的一些插件。
其实也有很多同学提供了其他Python IDE,那为什么我还要坚持用Vim?大概有这几方面原因:
1:Vim是所有平台上直接支持的软件,尤其和 Linux 联系的非常紧密,大部分软件,只要涉及到文件操作,都可以通过Vim打开,也就是说通用性非常好。
2:经常使用ssh命令行操作Linux,没有桌面环境,在这种情况下,Vim就显得优势非常大了,拿来即用。
3:Vim本身性能,功能方面也非常完善,确实是一个很好的软件,而且是命令行方式的,很多操作和 Shell 很相似,比如正则表达式的操作,通过它能够以一种更好的方式掌握编程。
4:不要浅尝辄止,如果觉得Vim有用,那就精益求精,不说掌握100%,也应该掌握50%,系统性的学习能够更深入的理解原理,这样再去学其他的IDE,就会更有心得,也就是说,不管学什么,在内心总要留下一点印记。
接下去步入正题,在Python编码中,很重要的就是代码的样式和语法,写出规范的代码很重要,是否能够找出一些语法和样式错误?如果有插件能解决这二个问题,那是极好的。
在Vim插件中,目前我使用了三个插件,分别是是vim-flake8 【1】,vim-syntastic 【2】,vim-autoformat 【3】,前二个插件功能是相识的,就是告诉你代码样式和语法哪儿有问题,最后那个插件是自动格式化代码样式(不能修复语法错误)。另外需要注意的是,代码缩进不属于样式问题,所以没有办法自动修复。错误语法和样式的概念也比较宽泛,比如 import 一个模块,但这个模块没有用到,也会警告你。
vim-flake8,vim-syntastic这二个插件最后我选择的是vim-syntastic,主要是这个插件能够应用于很多开发语言(比如Java,PHP),而vim-flake8是专用于Python的。
vim-flake8依赖于Flake8工具,Flake8包装了PyFlakes和PEP8,PyFlakes是Python 中的一个静态语法和样式检查工具,PEP8是语法检查工具。
vim-flake8替代了vim-pyflakes,vim-pep8这二个插件。
了解了这些背景后,看看vim-flake8有什么功能,这在上一篇中讲过:
#F2显示语法错误 autocmd FileType python map <buffer> <F2> :call Flake8()<CR> #保存文件的时候显示错误 autocmd BufWritePost *.py call flake8#Flake8() #是否显示标记 let g:flake8_show_in_file=1
接下去描述vim-syntastic,这个插件功能比较齐全,通过外部工具,能够检查各种开发语言的语法和样式问题。
这个 工具 会在屏幕中以各种形式显示错误,如下图:
-
location list(也有叫法 errors list )显示各类错误
-
如果鼠标悬浮在错误行上,详细的错误信息会在 command window 显示
-
错误行会打上 Signs 标记
-
statusline flag 会显示从哪行开始有错误,应该有多少个错误。
vim-syntastic官方使用Pathogen插件管理器演示如何安装,在上文中我使用Vundle安装 Pathogen,其实从Vim 7.4以后无需第三方插件管理器就能安装插件了。
vim打开一个Python文件,然后在编辑模式下输入:SyntasticInfo
可以看到目前处理的文件类型是 python,将自动(主动模式)检测语法和样式错误,使用的检测工具是flake8, 支持的检查工具包括flake8,pyflakes等等,上述内容对于理解vim-syntastic很有帮助。
接下去说说vim-syntastic的一些用法,其实我琢磨了很久,可见官方也没有说清楚。
vim-syntastic有两种模式,主动模式和被动模式。所谓主动模式,就是会主动运行 vim-syntastic进行语法和样式检测,比如打开文件,或者:w保存文件的时候会主动检测。
如果不想打开文件的时候就主动进行检测(但也处于主动模式之下),可以编辑 ~/.vimrc:
let g:syntastic_check_on_open = 0
其实如果一个文件错误太多,location list窗口就会很大,看上去很不舒服(至少我是这样的),那么可以通过两种方法关闭它,第一就是编辑 ~/.vimrc:
let g:syntastic_auto_loc_list = 0
或者在Vim编辑模式下输入:lclose关闭它,如果还想打开,可以输入:Error。
接下去说说被动模式,可以编辑~/.vimrc设置快捷键:
map <Leader>s :SyntasticToggleMode<CR>
这样按 +s 键就会在主动和被动模式之间切换(也可以手动输入:SyntasticToggleMode),在 command window上会显示:
Syntastic: passive mode enabled
在被动模式下,你必须手动输入:SyntasticCheck flake8 手动检测语法和格式。
另外vim-syntastic用法非常多,输入:help syntastic 可以查看详细信息(shift + * 可以跳转)。
vim-autoformat插件是最有用的,可以自动格式化代码,它也依赖于第三方格式化工具,比如 autopep8(pip3 install autopep8)。
也可以使用yapf(pip3 install yapf)进行格式化,如果在待检查文件的目录中存在.style.yapf或setup.cfg文件,就会使用 yapf格式化
配置~/.vimrc,选择特定的格式化样式:
let g:formatter_yapf_style = 'pep8' #也可以是google, facebook, chromium
vim-autoformat支持部分代码格式化(但我没试出来,是整个文件格式化),也可以对特定目录的文件进行格式化,比如配置~/.vimrc:
let g:formatterpath = ['folder1', 'folder2']
在 《将Vim打造成Python IDE(一):解决80%的问题》 这篇文章提到过,如果用vim8格式化代码会保存,为解决这问题,我还专门了提了个issue 【4】,作者认为不是vim-autoformat的问题,而是vim的问题,不过使用vim7.4不会有问题。
考虑到vim7也能运行python3,而且pep8在python2或python3 上也没有太大问题,所以就凑合用吧,遗留的一个问题就是vim8内置的 python3 到底有何用处呢?
-
[1] https://github.com/nvie/vim-flake8
-
[2] https://github.com/vim-syntastic/syntastic
-
[3] https://github.com/Chiel92/vim-autoformat
-
[4] https://github.com/Chiel92/vim-autoformat/issues/266
如果觉得写的还不错,希望大家以 各种形式 多多支持。。。
以上所述就是小编给大家介绍的《将Vim打造成Python IDE(二):代码格式化的一些问题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。