Windows上配置Emacs来开发Python及用Python扩展Emacs


Posted in Python onNovember 20, 2015

Windows下配置Emacs来开发Python
去年在网上偶然的一个机会知道了Emacs的存在,在周围前辈们都在夸赞Sublime好用的时候,喜欢跟大众唱反调的我,突然觉得如果能用Emacs来编代码,也许是个很牛的技能。
但是在看了一次Tutorial后,就因为复杂的快捷键和不同于一般编辑器的操作方式放弃了这个想法。
今年开始工作以后,公司还没有给我发配项目,让我有时间学了些Python入门。在寻找合适的编辑器的时候,搁置脑后许久的Emacs突然被揪了出来。
重新开始打开教程,耐着性子看完,并稍微记住了几个快捷键,总算能够磕磕绊绊的使用了。
然后在开始寻找Emacs上使用Python的方法的时候,才发现原来Emacs的插件配置对于新手这么棘手。中文的资料本来就少,而且大多数还是在Linux/Mac系统上的。向我们这样在Windows上使用Emacs的“少数人口”似乎很难入门。

今天在公司,花了一下午时间,各种搜索,各种尝试,各种折腾,总算是让Emacs用上了Python-mode插件。虽然似乎用的最多的和功能更全的是iPython插件,不过今天为止还没有弄明白。以后有机会再更新后续内容吧。今天就把再Window环境下Emacs配置Python-mode插件的方法记录下来。

Emacs的下载安装
下载
Emacs官方地址
http://www.gnu.org/software/emacs/

下载地址:(windows 版本)
http://ftp.gnu.org/gnu/emacs/windows/
下载最新版本的zip包就可以

安装
下载解压后,进入根目录下的bin文件夹,运行addpm.exe安装,安装后在开始菜单中会加入GNU Emacs项。
当然你也可以选择不安装,直接调用emacs.exe 或 runemacs.exe打开Emacs。

入门
运行Emacs后,点击Help菜单下的“Emacs Tutorial”进入Emacs自带的教程文档。(教程文档很高质量,向文档创建\译制者们致敬)还可以点击“Emacs Tutorial(choose language)”来选择不同的语言。
读完教程能帮助初学者快速入门和对Emacs最基本的概念进行理解,并能简单的进行Emacs的日常使用。
Emacs的功能十分强大,更多的应用还需要使用者日后不断地学习。

Python的安装
Python的安装请参考其他资料,为了编辑速度,这里先集中说明Emacs的配置。

Emacs配置使用Python-mode
Emacs配置
在很多有关Emacs配置的资料里,都会提到说“~/.emacs.d/”路径和“~/.emacs”文件,我折腾了很久没找到。后来才发现,“~”所指的HOME路径在window系统里是C:\Users\(username)\AppData\Roaming :

按Windows7系统本身的HOME目录配置的话,C:\Users\(username)\AppData\Roaming 这个HOME目录太深了,而且默认状态下AppData目录是隐藏的,最最关键的是:如果系统盘一旦出问题,之前的.emacs配置文件和.el的扩展都得重新配置和下载。接下来很多资料上会教你怎样更改HOME目录以更方便的使用它。但事实上,初次使用Emacs的用户如果没有经常要更改配置文件的需要的话,使用原本的目录就足够了,如果你的电脑已经设置显示隐藏文件的话,这个目录也不是特别难找。

~/.emacs 文件并不是一开始就存在的。在Emacs的Options菜单里随便设置一项,比如点选 Highlight Matching Parenthesis 然后选择 Save Options, mini缓冲区里就会显示 “Wrote c:/Users/(username)/AppData/Roaming/.emacs”这时进入HOME目录就能看到.emacs文件和.emacs.d目录了。

python-mode
python-mode下载:
https://launchpad.net/python-mode
下载解压,进入Python shell 运行

>python setup.py install
安装。Python shell的进入方式在安装python的资料里都会有,大家自行参考。
然后将解压后的 python-mode.el 文件复制到HOME目录.emacs.d文件夹下。
打开.emacs文件, 添加如下内容:
(require 'python-mode)
(add-to-list 'auto-mode-alist '("\\.py'" . python-mode))

运行Emacs,便会自行配置好python-mode了。

运行
配置好python-mode后,用emacs打开任何.py文件,输入 M-x py-execute-buffer 来运行python代码。
使用快捷键 C-c C-c 也是一样的效果。

使用 python 扩展 emacs
Pymacs 可以使得emacs能和python程序进行交互,可以让emacs插件开发者尽量使用python进行开发。这里提供一个例子,在lisp中调用python的函数并将当前buffer的文件名传递给python,在emacs中输出python函数的返回值

安装
首先安装 python 包 Pymacs. 在 ubuntu 里面安装 pymacs 即可。

然后安装emacs插件pymacs, el-get-install 或者 package-install 都可以

写一个 python 模块
目录结构如下:

├── sample

│  └── __init__.py

└── setup.py

__init__.py 的内容:

from Pymacs import lisp
 
interactions = {}
 
def hello_word(filename):
  return 'Hello from python, file name is %s' % filename
 
 
interactions[hello_word] = ''

setup.py 的内容:

from setuptools import setup, find_packages
 
setup(
  name = "sample-pymacs",
  version = "0.1",
  packages = find_packages()
)

安装这个模块

python setup.py install

如果一切正常, 在 python 中可以 import sample

在lisp中调用python 模块
创建一个lisp文件:

(pymacs-load "sample")
(message (sample-hello-word buffer-file-name))

将光标移动到每一行上并使用 C-M-x 来执行该行 lisp 代码, 执行后会在emacs上看到输出。

Python 相关文章推荐
python基础教程之实现石头剪刀布游戏示例
Feb 11 Python
python发送邮件示例(支持中文邮件标题)
Feb 16 Python
mysql 之通过配置文件链接数据库
Aug 12 Python
Python使用numpy实现BP神经网络
Mar 10 Python
python3 图片referer防盗链的实现方法
Mar 12 Python
Python多重继承的方法解析执行顺序实例分析
May 26 Python
Python框架Flask的基本数据库操作方法分析
Jul 13 Python
Python设计模式之代理模式实例详解
Jan 19 Python
python可视化爬虫界面之天气查询
Jul 03 Python
python3的数据类型及数据类型转换实例详解
Aug 20 Python
Python模块 _winreg操作注册表
Feb 05 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
将Emacs打造成强大的Python代码编辑工具
Nov 20 #Python
Python聚类算法之DBSACN实例分析
Nov 20 #Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 #Python
Python聚类算法之基本K均值实例详解
Nov 20 #Python
Python实现将xml导入至excel
Nov 20 #Python
使用PyCharm配合部署Python的Django框架的配置纪实
Nov 19 #Python
详解在Python程序中解析并修改XML内容的方法
Nov 16 #Python
You might like
mysql 性能的检查和优化方法
2009/06/21 PHP
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
理解 JavaScript Scoping & Hoisting(二)
2015/11/18 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
BACKBONE.JS 简单入门范例
2017/10/17 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
Vue 样式切换及三元判断样式关联操作
2020/08/09 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
在Python的Django框架中创建语言文件
2015/07/27 Python
使用Python解析JSON数据的基本方法
2015/10/15 Python
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
分享给Python新手们的几道简单练习题
2017/09/21 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
英国外籍人士的在线超市:British Corner Shop
2019/06/03 全球购物
英国在线玫瑰专家:InterRose
2019/12/01 全球购物
欧姆龙医疗欧洲有限公司:Omron Healthcare Europe B.V
2020/06/13 全球购物
质量整改报告范文
2014/11/08 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书
三国演义读书笔记
2015/06/25 职场文书
竞聘书的秘诀
2019/04/02 职场文书
Java设计模式之享元模式示例详解
2022/03/03 Java/Android