高效的動態語言開發環境(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
相關文章
相關標籤/搜索