Emacs 降魔篇 ——製作 Python IDE

來源:互聯網
上載者:User

標籤:github   lisp   scheme   


個人的武裝配置比較搓。希望大神指正下。

我們先去這裡收集主人公闖關道具 —— 昊天塔 emacs for windows:http://ftp.gnu.org/gnu/emacs/windows/

我使用的是冥界版 24.3。


釋放 emacs 的靈壓,將其解壓在你需要的目錄下,在產生的 bin 目錄下,點擊 addpm.exe,

會在 "C:\Users\Administrator\AppData\Roaming" 目錄下生產 “.emacs.d” 子目錄。

接著在解壓的 bin 目錄下,點擊 runemacs 之後,就能看到昊天塔現身了!



為了試探出 ".emacs" 設定檔這個妖孽到底藏身何處,所以先隨意配置下 emacs 的介面樣式,亂其陣腳,

我習慣性用“courier new bold 12 號”字型,所以先在 opition 下 set default font,然後一定要 save opitions.

接著發現 emacs 下面的 buffer 有了 .emacs 這個鬼怪的藏身蹤跡:



然後用記事本或者其他什麼神器開啟它,會看到這些鬼畫符,據說這是一個叫 Lisp 的古老種族遺留下的古迹,

至於它到底在闡述什麼奧義,who 造呢:


但是這個時候神器昊天塔 emacs 的外觀似乎不太和諧,有點嚇人,

需要設定一下長寬,在 .emacs 設定檔中添加如下咒語:

( setq default-frame-alist ‘( ( height . 32 ) ( width . 80 ) ( menubar-lines . 20 ) ) )


在 C:\Users\Administrator\AppData\Roaming\.emacs.d 目錄下面,

建立一個 plugins 子目錄(auto-save-list 是自動產生的,不用管它)。



先配置 ecb, 這個神器是用來瀏覽檔案的,也就是瀏覽代碼的三界眾生的,

ecb 需要用到 cedet 這個做祭祀,但是冥界版的 24.3 內建了 cedet,所以就不用去探索 cedet 的遺迹了:

去三寶殿: https://github.com/emacsmirror/ecb 下載 ecb,

在 plugins 目錄下,建立 ecb 子目錄,將 ecb 的靈壓釋放在裡面:



在 .emacs 設定檔裡面寫如下咒語,並儲存:

;;;;;;;;;;;;;;;;;;;;; begin ecb ;;;;;;;;;;;;;;;;;;;;;;;
(add-to-list ‘load-path "~/.emacs.d/plugins/ecb")
(require ‘ecb)
(setq ecb-auto-activate t
      ecb-tip-of-the-day nil)
;;;;;;;;;;;;;;;;;;;;;  end ecb  ;;;;;;;;;;;;;;;;;;;;;;;


然後召喚昊天塔 emacs 會看到這個介面的時候,證明 ecb 配置好了:



不過這時候這個 ecb 比較強,不是很配合,比如用滑鼠左擊一些檔案會點不開,所以需要念咒語,重新改造:

M-x ecb-customize-most-important 

(M-x 在 windows 是按 Alt + x,然後在下面的 buffer 中輸入ecb-customize-most-important )

會看到這個鬼,然後選中Primary: mouse-1, secondary: mouse -2,最後記得儲存下,發現滑鼠左擊可以用了:


好吧,先關閉 emacs。。。。我們的神器得休息一下。


下面召喚 yasnippet 這個殭屍:這個殭屍有製作代碼模板的黑魔法。

當然,我們得先去魔巢 github 探索下:https://github.com/capitaomorte/yasnippet,

然後在 plugins 目錄下再建立 yasnippet 子目錄後,釋放yasnippet 的妖氣:


在 .emacs 設定檔中寫如下咒語來召喚 yasnippet  這個鬼:

;;;;;;;;;;;;;;;;;;;; begin yasnippet ;;;;;;;;;;;;;;;;;;;;;
(add-to-list ‘load-path "~/.emacs.d/plugins/yasnippet")
(require ‘yasnippet)
(setq yas/prompt-functions 
   ‘(yas/dropdown-prompt yas/x-prompt yas/completing-prompt   
    yas/ido-prompt yas/no-prompt))
(yas/global-mode 1)
(yas/minor-mode-on)
;;;;;;;;;;;;;;;;;;;; end yasnippet ;;;;;;;;;;;;;;;;;;;;;

好吧,再次召喚 emacs,建立一個 test.py 檔案,會發現yasnippet 如約而至:



整頓 elpy,話說這個鬼是捉妖師 ——橙月·離雪 幫我捉回來的。

據妖俠寶典上記載:elpy 的魔法值比auto-complete + pymacs + pyrope + ropemacs + pycomplete 這幾隻怪物加起來要高。

不過在此之前得先收集 python 的四大神器!一起念咒吧:

pip install rope

pip install jedi

pip install flake8

pip install importmagic

好,施法完畢,開啟 .emacs 設定檔,添加如下代碼

( require ‘package )
( add-to-list ‘package-archives
             ‘( "elpy" . "http://jorgenschaefer.github.io/packages/" ) )

然後開啟昊天塔 emacs:

寫上咒語: M-x package-refresh-contents

按下斷行符號之後再輸入:M-x package-install

斷行符號後再輸入elpy

由於 elpy 是大魔頭,所以用昊天塔鎮壓它需要一點時間,等待 1分鐘。

然後發現 .emacs.d 目錄下多出了 elpa 子目錄,裡面還多了很多亂七八糟的怪獸,可以先無視。



刪掉原本在 .emacs 設定檔中的代碼

( require ‘package )
( add-to-list ‘package-archives
             ‘( "elpy" . "http://jorgenschaefer.github.io/packages/" ) )

並添加如下代碼:

;;;;;;;;;;;;;;;;;;;;;;;;; begin elpy ;;;;;;;;;;;;;;;;;;;;;;;
(package-initialize)
(elpy-enable)
;;;;;;;;;;;;;;;;;;;;;;;;; end elpy ;;;;;;;;;;;;;;;;;;;;;;;;;

重啟 emacs,建立 python 檔案,輸入關鍵字會發現有提示,包括庫中的函數:


yasnippet  這個時也可以用了,輸入關鍵字,比如輸入 class 後按下斷行符號,

等 elpy 的提示消失之後,按下 tab 鍵就可以了。



按下 ctrl + x 2 出現兩個編輯區,在上面的編輯區按下 ctrl + c,ctrl + c,python 的代碼就會在下面執行。

但是介於內建的這個貨色有點醜,就整合 ipython吧。

先念咒語 pip install ipython。

之後,在 .emacs 設定檔中編輯如下咒語:

;;;;;;;;;;;;;;;;;;;;;;; begin python ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
( require ‘python )
;; use ipython 
(setq python-command "ipython") 
(setq 
      python-shell-interpreter "ipython" 
      python-shell-interpreter-args "" 
      python-shell-prompt-regexp "In \\[[0-9]+\\]: " 
      python-shell-prompt-output-regexp "Out\\[[0-9]+\\]: " 
      python-shell-completion-setup-code "from IPython.core.completerlib import module_completion" 
      python-shell-completion-string-code "‘;‘.join(__IP.complete(‘‘‘%s‘‘‘p))\n" 
      python-shell-completion-module-string-code "" ) 
( add-hook ‘python-mode-hook
    ( lambda ()
        ( set-variable ‘indent-tabs-mode nil )
      ( define-key python-mode-map ( kbd "RET" ) ‘newline-and-indent ) ) )
;;;;;;;;;;;;;;;;;;;;;;;; end python ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


重啟 emacs,再次編輯 python 會發現支援自動縮排,而且再次運行,就可以看到 ipython:



至於為什麼前面會出現In[1], In[2], In[3] 這樣詭異的 repl 提示,

是 elpy 發功的時候走火入魔了,還是其它什麼原因已無從考證。


不過介於 flake8 這個八婆會不斷的提示你代碼有問題,可以選擇炒它魷魚:

在 elpy 中選擇 configuration(稍等一會兒會出現)

將 python check command 的 flake8 改成 nil 即可(雖然不知道這樣做正不正宗,不過是起作用的)。



好吧,其實沒寫完,先這麼多吧。




Emacs 降魔篇 ——製作 Python IDE

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.