Emacs:最好的Python编辑器?

Posted 编程派

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Emacs:最好的Python编辑器?相关的知识,希望对你有一定的参考价值。


译者之前没有接触过Emacs,但是看完这篇文章之后,觉得与Vim和Sublime Text 3相比,最出彩的一个地方就是可以和IPython与Jupyter Notebook进行集成。按照本文的介绍配置完之后,确实会让Emacs成为一个异常强大的Python IDE。—EarlGrey@编程派


回复关键词"vim",查看Vim与Python真乃天作之合》

回复关键词"sublime",查看将Sublime Text 3打造为Python全栈开发环境



特别提醒:由于文章篇幅过长,在这篇微信图文中并没有加入实际的配置代码,需要参考的同学可以点击阅读原文查看。


1
安装与基础

安装


Emacs安装不是本文的重点,因此,这里推荐大家参考ErgoEmacs网站提供的安装指南,完成在Linux、Mac或Windows平台的基本安装。安装完成之后,打开应用,你就会看到默认设置下地Emacs界面。


Emacs:最好的Python编辑器?

Emacs基础


同样,本文也不会过多介绍Emacs使用的基础知识。学习Emacs最容易的方法,就是通过其自带的教程。本文介绍的内容并不要求你知道如何使用Emacs;相反,本文的每一部分讲述的都是你学习基础知识后可以使用的。


你可以使用方向键将光标移动到标有“Emacs Tutorial”字样的地方,然后按回车键,就可以打开自带教程。


接下来,本文还会继续出现类似C-x C-s等按键命令。这些命令表示,要同时按下Control键和x键,然后再同时按下Control和s键。这正是使用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仓库。本文中提到的所有插件包都将从该仓库获取并安装。


样式(主题&更多)


首先,建议安装better-defaults插件,它集合了一系列对Emacs默认配置的修改,为我们开始进一步自定义奠定了良好的基础。


主题插件中,我个人更喜欢的就是这个material-theme插件,所以本文中我们将一直使用这个插件。


完成样式配置之后,可以重启Emacs,观察变化。如果你将init.el文件放在了正确地路径中,Emacs将会自动加载该文件。


另外,你也可以在命令行输入emacs -q --load <path to init.el>命令,启动Emacs。配置文件加载完成后,我们之前见到的Emacs窗口会变得更好看:


Emacs:最好的Python编辑器?

下面这张图展示了一些Emacs本身自带的基础功能——包括简单的文件检索和Split Layouts。


Emacs:最好的Python编辑器?

我最喜欢的一个Emacs基础功能,就是可以进行快速的递归文本检索(recursive grep search)—— M-x rgrep。举个例子,假如你想在某个文件夹下以.md为扩展名的文件中,查找所有出现过python一词的段落:


Emacs:最好的Python编辑器?


完成基础配置之后,我们可以开始将Emacs配置为Python开发环境啦!


2
Elpy ——Python开发插件


Emacs自带的python模式(python.el)支持缩进和语法高亮功能。。但是如果要与专门针对Python设计的IDE竞争的话,我们肯定还需要添加更多的功能。elpy(Emacs Lisp Python Environment)插件可以说为我们提供了Python开发环境所需要的几乎全部功能,包括:

  • 自动缩进

  • 语法高亮

  • 自动补全

  • 语法检查

  • REPL集成

  • 虚拟环境支持,以及

  • 更多其他功能


要想安装并启用elpy插件,我们需要进行一些配置,并使用你自己喜欢的方式(例如,pip或conda)安装flake8和jedi这两个Python工具包。


安装完成之后的效果见下图。


Emacs:最好的Python编辑器?

上面这幅图中显示了以下几种功能:

  • 自动缩进

  • 语法高亮

  • 语法检查(第三行的错误提示)

  • 自动补全(第九行显示的列表方法)


另外,假设我们想要运行这个脚本。在Python自带的IDLE或Sublime Text中,你可以点击一个运行当前脚本的按钮。Emacs编辑器也是一样,不过我们只需要Python缓冲区按下C-c C-c即可。


Emacs:最好的Python编辑器?

通常,我们会希望运行一个虚拟环境,然后再使用虚拟环境中安装的工具包来执行代码。要想在Emacs中使用虚拟环境,我们需要输入M-x pyvenv-activate,然后根据提示操作。输入M-x pyvenv-deactivate就可以关闭虚拟环境。Elpy插件还提供了调试虚拟环境、处理elpy插件可能出现的问题的接口。输入M-x elpy-config,就会出现下面的信息,其中包含了有价值的调试信息。


Emacs:最好的Python编辑器?

到这里,我们已经介绍完在Emacs中实现Python IDE基础功能的方法。接下来,我们来进一步完善Emacs的配置。


回复关键词"vim",查看Vim与Python真乃天作之合》

回复关键词"sublime",查看将Sublime Text 3打造为Python全栈开发环境

额外的Python功能


除了上面介绍的基本IDE功能之外,Emacs还针对Python语言提供了一些额外的功能。在这一部分,我们无法介绍全部的额外功能,但是肯定会涉及PEP8、IPython/Jupyter集成。不过在此之前,我们要快速梳理一下语法检查配置。


更好的语法检查(Flycheck v. Flymake)


默认情况下,安装了Elpy插件的Emacs提供一个名叫Flymake的语法检查插件。但是,我们还可以选择另外一个名叫Flycheck的插件,后者支持实时语法检查。


安装了Flycheck之后,我们就可以在编辑Python代码的同时,获得实时代码检查反馈了:


Emacs:最好的Python编辑器?


遵循PEP8规范


不管你喜不喜欢,PEP8都不会消失。如果你想遵循PEP8标准的全部或部分规范,你大概希望能够实现自动化合规。autopep8插件就是解决之道。这个插件与Emacs无缝集成,因此当你保存文件时——C-x C-s——autopep8插件就会自动格式化代码,并纠正所有不符合PEP8标准的错误(排除你不希望检查的错误)。


首先,你需要通过你喜欢的方式安装autopep8这个Python工具包,然后再近些Emacs配置。


现在我们保存Python示例文件,Autopep8插件就会自动纠正出现的错误:


Emacs:最好的Python编辑器?

IPython/Jupyter集成


接下来这个功能尤其强大:将Emacs与IPython REPL和Jupyter Notebooks集成。首先,我们将Emacs中标准的Python REPL集成替换为IPython版本:


(elpy-use-ipython)


现在如果我们按下C-c C-c再次运行Python代码,我们使用的将是IPython REPL:


Emacs:最好的Python编辑器?

尽管做到目前这样已经非常有用了,但是真正的神奇之处还在Emacs与Jupyter notebook之间的集成。这里,我们假设你已经知道如何启动Jupyter Notebook服务器。


Jupyter提供的notebook网络接口很好,但是要求我们离开Emacs编辑器才能使用:


Emacs:最好的Python编辑器?


不过,我们可以通过在Emacs中直接连接notebook服务器,并与服务器进行直接交互的方式,就可以完成网络接口所提供的功能。



4
其他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即可。


5
结语


正如你所见,Emacs明显是最好的编辑器。老实说,市面上还有其他很好的Python IDE可供选择,但是我会毫不犹豫地推荐你学习Vim或Emacs,因为基于这两个编辑器配置的开发环境无疑是功能最为多样化的。


希望这些配置能够激起你学习并使用Emacs的热情!


回复关键词"vim",查看Vim与Python真乃天作之合》

回复关键词"sublime",查看将Sublime Text 3打造为Python全栈开发环境


以上是关于Emacs:最好的Python编辑器?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 Python 文档字符串的 Emacs 字体?

Emacs是最好的编辑器~~

Emacs 中的 Python 高亮显示

6 件你应该用 Emacs 做的事

6 件你应该用 Emacs 做的事 | Linux 中国

请教,关于emacs写lisp自动补全的设置