高效的动态语言开发环境(python: linux + emacs + evil + *.el)

 

高效的动态语言开发环境(python: linux + emacs + evil + *.el)html

 

高效的动态语言开发环境(python: linux + emacs + evil + *.el)

1 前言

 

1.1 动态语言

  • 这里专指动态语言。像某位达人说的,若是你用java,最好的选择是eclipse或者Intellij, 若是你用net,最好的选择就是visual studio。动态语言的一个明显的开发优点就是解析运行。你能够在开发 过程当中不断往运行环境中添加类或函数。也能够在不一样的地方分享同一个运行环境(本文以python做为例子)。

1.2 高效

  • 这里指高效编辑,快速测试。

1.3 linux

  • shell,任什么时候候,当你厌倦重复的输入指令(尤为是在一个项目里面),就地写一个脚本,而后 就实现了自动化。
  • 进程间合做。这个“Unix编程艺术”中常常提到的,这里强调后端服务器与前端合做在开发中的好处 (能够看下面例子)。

1.4 emacs+evil

  • evil是啥?它是emacs上的vim模拟器,安装上这个插件,你就能够在emacs上用上vim的全部快捷键从而达到 至关高效的编辑,具体能够看看这个:高效文本编辑的7个习惯。至于vim的概念和操做,光是一本中文手册 就有2000多页,可见其功能有多强大!
  • 为何是emacs?强大,丰富的插件,彻底的可定制,牛人都喜欢用它!记得有达人说过,你用emacs,就像 在调教本身的小孩(好像是这样说的)。
  • emacs的server+client:经过client链接到server,任什么时候候均可以拥有server已经搭建的开发环境,这对 快速测试开发是至关方便的。

2 搭建环境

详细的配置能够参考个人另外一篇博客`个人linux探索之路 中关于python的配置。前端

2.1 python-mode

  • 这个是emacs自带的python开发模式。有两个至关方便的命令:'eval buffer, 'eval region。 运行M-x run-python后,基本上你就不须要离开当前的编辑buffer了,全部的语句,均可以直接send到 后台运行的python解析器中去(后端与前端合做的一个完美的例子)。 若是你打开两个窗口,就能够一边编辑,一边看到结果。固然,有这两个指令仍是有些不足, 我更多的时候是写完一个语句,而后想立刻知道结果是啥,因此,我在init-python-mode.el 中添加下面的代码(ok,如今只需按下“\C-c \C-l”,光标下的语句就本身send到python运行环境中, 结果也能够立刻看到了,在这以前,我必须把这个语句先选上,而后再eval region,而后再取消选择。 emacs的可定制因而可知)
    (eval-after-load 'python
      `(progn
          (defun python-shell-eval-current-line ()
               "Eval current line."
             (interactive)
             (python-shell-send-region (line-beginning-position) (line-end-position)))
             (define-key python-mode-map (kbd "C-c C-l") nil)
             (define-key python-mode-map (kbd "C-c C-l") 'python-shell-eval-current-line)))
    

    若是你再配合上vim的快捷的文本操做,你就会发现,这编辑代码的过程是多么的流畅自如。java

2.2 jedi

  • 这个是python的后端补全工具包,这个是文档中的原话:
    Jedi.el is a Python auto-completion package for Emacs.
    It aims at helping your Python coding in a non-destructive way.
    It also helps you to find information about Python objects, such as docstring,
    function arguments and code location.
    

    有了这个强大的后端(另外一个完美的先后端的例子),你就有了自动补全,查看参数,跳到变量定义的地方, 可以自由地在python的编程环境中遨游。好比说我最近在使用scrapy,当我不知道某个函数的用法时, 按下“\S-c .”,我就能够轻松去到scrapy的源代码,直接阅读源代码中的具体实现 (若是你再配合上emacs上的文件浏览的插件,你想去哪,就能去哪)。python

2.3 pep8,pylint,flycheck

  • 这几个插件联合起来,基本就能够完美的搞掂python代码中的语法错误和格式规范化。一旦代码中有错误, 就可以马上在mini buffer中看到哪里出错。

2.4 pylookup

  • 这个插件用于查询python官方手册,对于内建的类库或函数,执行命令'pylookup-lookup, 就能够在浏览器中查看对应的模块的说明了。

2.5 ein

  • emacs做为ipython notebook的一个前端,能够直接到ipython notebook的服务器上,而后就能够 实现通话了。并且拥有了ipython的全套指令(又是一个后端前端合做的例子)。

3 调试

  • 能够在emacs中直接运行pdb进行调试。

4 图示

  • 图示的是emacs + pymongo(mongodb的python驱动程序)的开发环境。编辑.py的文件,经过run python打开一个 python 运行环境,经过eval current buffer 链接到mongodb,经过emacsclient(需启动emacs server) 打开另外一个.py文件,经过eval current line 直接进入到server的python运行环境中。

5 后记

  • 仍是喜欢《unix编程艺术》中的那句话:
    有严格的工具套装,彼此合做,组合起来成为强大的系统
    
  • 经过上面的配置,就能够搭建一个至关高效方便的python开发环境,并且,还能够在不断的使用过程当中 优化你的开发环境和习惯,由于,一切,都是可配置的。

(谢谢阅读,欢迎指正,欢迎交流)linux

Date: 2015-07-12T15:52+0800mongodb

Author: 行者知shell

Org version 7.9.3f with Emacs version 24编程

Validate XHTML 1.0
相关文章
相关标签/搜索