摘要:這正是使用編輯器的基本形式。禁用啟動消息即顯示所有教程信息的頁面。因此,只使用編輯器并且完美支持所有這些語言將會大大提高工作效率。結語正如你所見,明顯是最好的編輯器。
安裝與基礎 安裝本文是realpython.com繼《將Sublime Text 3打造為Python全棧開發環境及》和《Vim與Python真乃天作之合》,又一篇關于如何配置Python IDE的文章。這一次,主角變成了與Vim同樣享有神器之稱的Emacs編輯器。譯者之前沒有接觸過Emacs,但是看完這篇文章之后,覺得與Vim和Sublime Text 3相比,最出彩的一個地方就是可以和IPython與Jupyter Notebook進行集成。按照本文的介紹配置完之后,確實會讓Emacs成為一個異常強大的Python IDE。
譯文鏈接:http://codingpy.com/article/emacs-the-best-python-editor/
Emacs安裝不是本文的重點,因此,這里推薦大家參考ErgoEmacs網站提供的安裝指南,完成在Linux、Mac或Windows平臺的基本安裝。安裝完成之后,打開應用,你就會看到默認設置下地Emacs界面。
Emacs基礎同樣,本文也不會過多介紹Emacs使用的基礎知識。學習Emacs最容易的方法,就是通過其自帶的教程。本文介紹的內容并不要求你知道如何使用Emacs;相反,本文的每一部分講述的都是你學習基礎知識后可以使用的。
你可以使用方向鍵將光標移動到標有“Emacs Tutorial”字樣的地方,然后按回車鍵,就可以打開自帶教程。然后,你將會看到下面這段話:
Emacs commands generally involve the CONTROL key (sometimes labeled CTRL or CTL) or the META key (sometimes labeled EDIT or ALT). Rather than write that in full each time, we"ll use the following abbreviations: C-means hold the CONTROL key while typing the character Thus, C-f would be: hold the CONTROL key and type f. M- means hold the META or EDIT or ALT key down while typing . If there is no META, EDIT or ALT key, instead press and release the ESC key and then type . We write for the ESC key.
接下來,本文還會繼續出現類似C-x C-s等按鍵命令。這些命令表示,要同時按下Control鍵和x鍵,然后再同時按下Control和s鍵。這正是使用Emacs編輯器的基本形式。了解更多基礎知識,你可以學習自帶教程或者GNU網站提供的這個教程Guided Tour of Emacs。
配置與插件包(packages)Emacs的好處之一,就是配置簡單。Emacs配置的核心則是初始化文件(Initialization File)—— init.el。
在Unix環境下,這個文件應該放置在$HOME/.emacs.d/init.el路徑。
$ touch ~/.emacs.d/init.el
同時,在Windows平臺,如果沒有設置HOME環境變量,該文件應該放置在C:/.emacs.d/init.el路徑。
本文將會與大家分享許多配置示例。那么如果你想繼續跟隨本文進行配置的話,請先創建init文件。如果不想的話,可以在結語部分直接查看最終的完整init文件。
插件包(packages)可以對Emacs進行自定義,需要從不同的代碼倉庫獲取。其中,最主要的Emacs插件包倉庫是MELPA倉庫。本文中提到的所有插件包都將從該倉庫獲取并安裝。
樣式(主題&更多)首先,下面是一個插件包安裝示例代碼,其中安裝了一個主題插件。
;; init.el --- Emacs configuration ;; INSTALL PACKAGES ;; -------------------------------------- (require "package) (add-to-list "package-archives "("melpa" . "http://melpa.org/packages/") t) (package-initialize) (when (not package-archive-contents) (package-refresh-contents)) (defvar myPackages "(better-defaults material-theme)) (mapc #"(lambda (package) (unless (package-installed-p package) (package-install package))) myPackages) ;; BASIC CUSTOMIZATION ;; -------------------------------------- (setq inhibit-startup-message t) ;; hide the startup message (load-theme "material t) ;; load material theme (global-linum-mode t) ;; enable line numbers globally ;; init.el ends here
配置示例代碼的第一部分是;; INSTALL PACKAGES,安裝了better-defaults和material-theme共兩個插件包。better-defaults插件集合了一系列對Emacs默認配置的修改,為我們開始進一步自定義奠定了良好的基礎。material-theme插件則提供了一組自定義的樣式。
主題插件中,我個人更喜歡的就是這個material-theme插件,所以本文中我們將一直使用這個插件。
第二部分則是;; BASIC CUSTOMIZATION(基本自定義)。
禁用啟動消息(即顯示所有教程信息的頁面)。在你更熟悉Emacs之前,你可以不禁用。
加載material主題。
啟用全局顯示行號
全局啟用意味著這個功能對于Emacs打開的所有緩沖區(buffers)都適用。所以,如果你打開了Python文件、markdown文件或者是純文本文件,它們都將顯示行號。你還可以根據不同的模式(mode)啟用不同的功能,——例如,python模式、markdown模式和純文本模式。稍后我們將Emacs配置為Python IDE時還會講到。
現在我們已經有了一個完整的基礎配置文件,可以重啟Emacs,觀察變化。如果你將init.el文件放在了正確地路徑中,Emacs將會自動加載該文件。
另外,你也可以在命令行輸入emacs -q --load
下面這張圖展示了一些Emacs本身自帶的基礎功能——包括簡單的文件檢索和Split Layouts。
我最喜歡的一個Emacs基礎功能,就是可以進行快速的遞歸文本檢索(recursive grep search)—— M-x rgrep。舉個例子,假如你想在某個文件夾下以.md為擴展名的文件中,查找所有出現過python一詞的段落:
完成基礎配置之后,我們可以開始將Emacs配置為Python開發環境啦!
Elpy ——Python開發Emacs自帶的python模式(python.el)支持縮進和語法高亮功能。。但是如果要與專門針對Python設計的IDE競爭的話,我們肯定還需要添加更多的功能。elpy(Emacs Lisp Python Environment)插件可以說為我們提供了Python開發環境所需要的幾乎全部功能,包括:
自動縮進
語法高亮
自動補全
語法檢查
REPL集成
虛擬環境支持,以及
更多其他功能
要想安裝并啟用elpy插件,我們需要進行一些配置,并使用你自己喜歡的方式(例如,pip或conda)安裝flake8和jedi這兩個Python工具包。
下面的配置可以安裝elpy插件包:
(defvar myPackages "(better-defaults elpy ;; add the elpy package material-theme))
現在我們這樣啟用這個插件:
(elpy-enable)
完成上面的配置之后,我們可以重啟Emacs,并打開一個Python文件,就可以查看新的配置是否生效。
上面這幅圖中顯示了以下幾種功能:
自動縮進
語法高亮
語法檢查(第三行的錯誤提示)
自動補全(第九行顯示的列表方法)
另外,假設我們想要運行這個腳本。在Python自帶的IDLE或Sublime Text中,你可以點擊一個運行當前腳本的按鈕。Emacs編輯器也是一樣,不過我們只需要Python緩沖區按下C-c C-c即可。
通常,我們會希望運行一個虛擬環境,然后再使用虛擬環境中安裝的工具包來執行代碼。要想在Emacs中使用虛擬環境,我們需要輸入M-x pyvenv-activate,然后根據提示操作。輸入M-x pyvenv-deactivate就可以關閉虛擬環境。Elpy插件還提供了調試虛擬環境、處理elpy插件可能出現的問題的接口。輸入M-x elpy-config,就會出現下面的信息,其中包含了有價值的調試信息。
到這里,我們已經介紹完在Emacs中實現Python IDE基礎功能的方法。接下來,我們來進一步完善Emacs的配置。
額外的Python功能除了上面介紹的基本IDE功能之外,Emacs還針對Python語言提供了一些額外的功能。在這一部分,我們無法介紹全部的額外功能,但是肯定會涉及PEP8、IPython/Jupyter集成。不過在此之前,我們要快速梳理一下語法檢查配置。
更好的語法檢查(Flycheck v. Flymake)默認情況下,安裝了Elpy插件的Emacs提供一個名叫Flymake的語法檢查插件。但是,我們還可以選擇另外一個名叫Flycheck的插件,后者支持實時語法檢查。幸運地是,從Flymake切換至Flycheck非常簡單:
(defvar myPackages "(better-defaults elpy flycheck ;; add the flycheck package material-theme))
以及
(when (require "flycheck nil t) (setq elpy-modules (delq "elpy-module-flymake elpy-modules)) (add-hook "elpy-mode-hook "flycheck-mode))
現在,我們就可以在編輯Python代碼的同時,獲得實時代碼檢查反饋了:
遵循PEP8規范不管你喜不喜歡,PEP8都不會消失。如果你想遵循PEP8標準的全部或部分規范,你大概希望能夠實現自動化合規。autopep8插件就是解決之道。這個插件與Emacs無縫集成,因此當你保存文件時——C-x C-s——autopep8插件就會自動格式化代碼,并糾正所有不符合PEP8標準的錯誤(排除你不希望檢查的錯誤)。
首先,你需要通過你喜歡的方式安裝autopep8這個Python工具包,然后添加下面的Emacs配置代碼:
(defvar myPackages "(better-defaults elpy flycheck material-theme py-autopep8)) ;; add the autopep8 package
以及
(require "py-autopep8) (add-hook "elpy-mode-hook "py-autopep8-enable-on-save)
現在我們保存Python示例文件,Autopep8插件就會自動糾正出現的錯誤:
IPython/Jupyter集成接下來這個功能尤其強大:將Emacs與IPython REPL和Jupyter Notebooks集成。首先,我們將Emacs中標準的Python REPL集成替換為IPython版本:
(elpy-use-ipython)
現在如果我們按下C-c C-c再次運行Python代碼,我們使用的將是IPython REPL:
盡管做到目前這樣已經非常有用了,但是真正的神奇之處還在Emacs與Jupyter notebook之間的集成。這里,我們假設你已經知道如何啟動Jupyter Notebook服務器。要實現前面提到的集成,我們只需要再添加一些配置即可:
(defvar myPackages "(better-defaults ein ;; add the ein package (Emacs ipython notebook) elpy flycheck material-theme py-autopep8))
Jupyter提供的notebook網絡接口很好,但是要求我們離開Emacs編輯器才能使用:
不過,我們可以通過在Emacs中直接連接notebook服務器,并與服務器進行直接交互的方式,就可以完成網絡接口所提供的功能。
其他Emacs功能前面我們已經介紹了所有Python IDE應具備的基礎功能(以及一些非常棒的額外功能),但是還有一些功能也是IDE需要支持的。首先就是git集成。
Git集成(Magit)Magit是MELPA倉庫中非常受歡迎的一個插件包,幾乎每一個使用Git的Emacs用戶都會安裝這個插件。這個插件極其強大,功能也特別全面,超出了本文的范圍。不過還好Mastering Emacs網站上有一篇介紹Magit的好文。下面這張圖就摘自Mastering Emacs網站的那篇文章,展示了Emacs中git集成的效果:
其他Emacs模式與使用只針對Python的IDE相比,使用Emacs的一大好處就是它還能夠支持除Python外的其他語言。工作的時候,我通常要使用Python、Golang、JavaScript、Markdown、JSON以及其他語言。因此,只使用Emacs編輯器并且完美支持所有這些語言將會大大提高工作效率。Emacs編輯器支持以下語言:
Python
Golang
Ruby
Puppet
Markdown
Dockerfile
YAML
Web (HTML/JS/CSS)
SASS
NginX Config
SQL
在終端使用Emacs按鍵組合學會使用Emacs之后,你會希望在其他地方也能夠使用Emacs按鍵組合。只需要在bash提示符之后輸入set -o emacs即可實現。但是,Emacs的一個強大之處就是你可以在終端下以headless模式運行Emacs編輯器。這也是我本人的默認終端環境。要開啟headless模式,只需要輸入emacs -nw即可。
結語正如你所見,Emacs明顯是最好的編輯器。老實說,市面上還有其他很好的Python IDE可供選擇,但是我會毫不猶豫地推薦你學習Vim或Emacs,因為基于這兩個編輯器配置的開發環境無疑是功能最為多樣化的。最后,為大家提供本文中完整的Emacs配置:
;; init.el --- Emacs configuration ;; INSTALL PACKAGES ;; -------------------------------------- (require "package) (add-to-list "package-archives "("melpa" . "http://melpa.org/packages/") t) (package-initialize) (when (not package-archive-contents) (package-refresh-contents)) (defvar myPackages "(better-defaults ein elpy flycheck material-theme py-autopep8)) (mapc #"(lambda (package) (unless (package-installed-p package) (package-install package))) myPackages) ;; BASIC CUSTOMIZATION ;; -------------------------------------- (setq inhibit-startup-message t) ;; hide the startup message (load-theme "material t) ;; load material theme (global-linum-mode t) ;; enable line numbers globally ;; PYTHON CONFIGURATION ;; -------------------------------------- (elpy-enable) (elpy-use-ipython) ;; use flycheck not flymake with elpy (when (require "flycheck nil t) (setq elpy-modules (delq "elpy-module-flymake elpy-modules)) (add-hook "elpy-mode-hook "flycheck-mode)) ;; enable autopep8 formatting on save (require "py-autopep8) (add-hook "elpy-mode-hook "py-autopep8-enable-on-save) ;; init.el ends here
希望這些配置能夠激起你學習并使用Emacs的熱情!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37680.html
摘要:另一個賦值語句將名稱關聯到出現在莎士比亞劇本中的所有去重詞匯的集合,總計個。表達式是一個復合表達式,計算出正序或倒序出現的莎士比亞詞匯集合。在意圖上并沒有按照莎士比亞或者回文來設計,但是它極大的靈活性讓我們用極少的代碼處理大量文本。 1.1 引言 來源:1.1 Introduction 譯者:飛龍 協議:CC BY-NC-SA 4.0 計算機科學是一個極其寬泛的學科。全球的分布...
摘要:如果你問一個年輕的前端開發人員,你在今后的年內如何提升自己的能力他可能會說我現在對前端比較熟悉,但我想深入了解,另外現在發展的很快我也想看一下。再舉一個例子,我會留意身邊的程序員所用的鍵盤。只有少部分的程序員會買高端的靜電容鍵盤,比如。 如果你問一個年輕的前端開發人員,你在今后的 3 年內如何提升自己的能力?他可能會說我現在對 Web 前端比較熟悉,但我想深入了解 AngularJS,...
摘要:在這個編輯器中,和是其中排名靠前的兩個。是一個免費的輕量級編輯器和,用于和開發。對于免費的代碼編輯器來說,是一個很好的選擇。可以安裝兩個命令行實用程序,用于從啟動編輯器,用于管理的軟件包。 對于JavaScript程序員來說,目前有很多很棒的工具可供選擇。本文將會討論10個優秀的支持javascript,HTML5和CSS開發,并且可以使用Markdown進行文檔編寫的文本編輯器。為什...
摘要:然而,每個人對編輯器的喜好各不相同,甚至引發出諸如神的編輯器與編輯器之神這種信仰之爭。我們用來寫的工具有兩類一種是被稱為的集成開發環境,它們為開發而生。但僅我上述提及的幾個其實也足夠用了。正如標題所說工欲善其事,必先利其器。 通常來說,每個程序員都有自己趁手的兵器: 代碼編輯器 。你要是讓他換個開發環境,恐怕開發效率至少下降三成。然而,每個人對編輯器的喜好各不相同,甚至引發出諸如神的編...
摘要:使用簡記后端掘金全稱為即消息隊列。優測優社區干貨精選老司機亂談編輯器之神掘金前言是一種信仰,我自從年有了這個信仰,已經個年頭了。 PHP 程序員進階學習書籍參考指南 - 后端 - 掘金PHP程序員進階學習書籍參考指南 @heiyeluren lastmodify: 2016/2/18 ... 當我們在談論前端加密時,我們在談些什么 - 前端 - 掘金潘建旭,豈安科技(www.bigse...
閱讀 1432·2021-11-22 15:24
閱讀 2523·2021-10-11 11:06
閱讀 2334·2021-10-09 09:45
閱讀 2532·2021-09-09 09:33
閱讀 639·2019-08-30 15:53
閱讀 1444·2019-08-30 12:48
閱讀 677·2019-08-29 13:47
閱讀 506·2019-08-26 18:27