|
|
|
|
移动端

2.3.1 编写Python的vim插件

《Python Linux系统管理与自动化运维》第2章Python生态工具,在本章中,我们将依次介绍Python生态的各种工具,包括:Python内置的小工具(2.1节);包管理工具pip(2.2节);Linux和Windows下的Python编辑器(2.3节);Python交互式编程工具(2.4节);Python调试器(2.5节);Python代码规范检查工具(2.6节)。本节为大家介绍编写Python的vim插件。

作者:赖明星来源:机械工业出版社|2017-09-28 16:11

年前最后一场技术盛宴 | 1月27日与京东、日志易技术大咖畅聊智能化运维发展趋势!


2.3.1 编写Python的vim插件

vim是一个功能强大、高度可定制的文本编辑器,与Emacs一起成为Linux下最著名的文本编辑器。对于大多数用户来说,vim有一个比较陡峭的学习曲线,这意味着刚开始学习的时候可能会进展缓慢。但是,一旦掌握一些基本操作之后,vim能够大幅度提高编辑效率。本书不会介绍vim的使用方法,只会介绍使用vim编写Python的插件。如果读者还不熟悉vim,可以跳过这一小节,使用PyCharm编写Python代码。

vim最强大的地方在于快速移动和高度可定制,所以使用vim编写Python代码时,只需要进行简单的定制就能够大幅提高编码效率。下面就来看一下如何将vim打造成强大的Python编辑器。

1.一键执行

一键执行功能不是一个插件,而是自定义的vim配置。如果我们写的Python代码是一些较为简单的脚本,那么,这个一键执行的功能会非常实用。将下面的配置放在vim的配置文件当中,编写完Python代码以后,按F5就实现了一键执行功能。该功能最实用的是编写单元测试,写完测试不用退出vim,立即执行就能看到结果,非常方便。

  1. """"""""""""""""""""""  
  2. "Quickly Run  
  3. """"""""""""""""""""""  
  4. map <F5> :call CompileRunGcc()<CR> 
  5. func! CompileRunGcc()  
  6.     exec "w"  
  7.     if &filetype == 'c'  
  8.         exec "!g++ % -o %<"  
  9.         exec "!time ./%<"  
  10.     elseif &filetype == 'cpp'  
  11.         exec "!g++ % -o %<"  
  12.         exec "!time ./%<"  
  13.     elseif &filetype == 'java'  
  14.         exec "!javac %"  
  15.         exec "!time java %<"  
  16.     elseif &filetype == 'sh'  
  17.         :!time bash %  
  18.     elseif &filetype == 'python'  
  19.         exec "!time python2.7 %"  
  20.     elseif &filetype == 'html'  
  21.         exec "!firefox % &"  
  22.     elseif &filetype == 'go'  
  23. "        exec "!go build %<"  
  24.         exec "!time go run %"  
  25.     elseif &filetype == 'mkd'  
  26.         exec "!~/.vim/markdown.pl % > %.html &"  
  27.         exec "!firefox %.html &"  
  28.     endif  
  29. endfunc 

2.代码补全插件snipmate

代码补全能够显著减少敲键的次数,将我们从琐碎的语法中解放出来。毫不夸张地说,代码补全插件能够帮我们写一半的代码。例如,使用snipmate插件,输入ifmain后按tab键将会自动生成下面的代码:

  1. if __name__ == '__main__':  
  2.     main() 

输入for,再按tab键,生成如下代码:

  1. for needle in haystack:  
  2.     # code... 

snipmate里面还有很多功能需要读者自己去发掘,并且,snipmate支持不同的编程语言,也支持定制化实现。该插件对于语法繁琐的编程语言更加实用,真正实现了将工程师从繁琐的语法细节中解脱出来的目标。

3.语法检查插件Syntastic

Syntastic是一款强大的语法检查插件,当我们保存源文件时,它就会执行。执行完以后,会提示我们哪些代码存在语法错误,哪些代码不符合编码规范,并给出具体的提示信息。例如,Python代码风格默认设置为PEP 8,即使我们不太了解PEP 8的代码风格,只要使用了Syntastic插件,并根据它给出的提示进行修改,就能够写出完全符合PEP 8风格的代码。

4.编程提示插件jedi-vim

jedi-vim是基于jedi的自动补全插件,与snipmate不同的是,该插件更加智能。jedi-vim更贴切的称呼是“编程提示”,而不是代码补全插件。需要注意的是,使用jedi-vim插件前需要在电脑中安装jedi。jedi是一个自动补全和静态分析的Python库,直接使用pip安装即可:

  1. pip install jedi 

可以说,jedi-vim这个插件是使用vim写Python的标配,并且,真正让vim写Python变成一件轻松愉快的事情。图2-2给出了一个使用jedi-vim编写Python代码的效果图。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

基于Project2003的项目管理

本书的上一版本《基于Project 2002的项目管理》上市以后得到了读者的欢迎,为了更好地将Project 2003新版本的应用介绍给读者,我们重新进行...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊