码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-07-12 17:10:23      阅读:340      评论:0      收藏:0      [点我收藏+]

标签:

 

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

 

高效的动态语言开发环境(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的快捷的文本操作,你就会发现,这编辑代码的过程是多么的流畅自如。

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上的文件浏览的插件,你想去哪,就能去哪)。

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开发环境,而且,还可以在不断的使用过程中 优化你的开发环境和习惯,因为,一切,都是可配置的。

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

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

Author: 行者知

Org version 7.9.3f with Emacs version 24

Validate XHTML 1.0

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

标签:

原文地址:http://www.cnblogs.com/jojolin/p/4641066.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!