热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Emacs降魔系列之制作PythonIDE

个人的武装配置比较搓。希望大神指正下。我们先去这里收集主人公闯关道具——昊天塔emacsforwindows:http:ftp.gnu.orggnuemacs


个人的武装配置比较搓。希望大神指正下。

我们先去这里收集主人公闯关道具 —— 昊天塔 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( emacs-code-browse ), 这个神器是用来浏览文件的,也就是浏览代码的三界众生的,

ecb 需要用到 cedet 这个做祭祀,但是冥界版的 24.3 内置了 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-xwindows 是按 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] ,直接跳到 In[4] 这样诡异的 repl 提示,

elpy 发功的时候走火入魔了,还是其它什么原因已无从考证。


不过介于flake8 这个八婆会不断的提示你代码有问题,可以选择炒它鱿鱼:

elpy 中选择configuration(稍等一会儿会出现)

python check command 的 flake8 改成 nil 即可(虽然不知道这样做正不正宗,不过是起作用的)。



好吧,其实没写完,先这么多吧。





推荐阅读
  • Python学习:环境配置与安装指南
    Python作为一种跨平台的编程语言,适用于Windows、Linux和macOS等多种操作系统。为了确保本地已成功安装Python,用户可以通过终端或命令行界面输入`python`或`python3`命令进行验证。此外,建议使用虚拟环境管理工具如`venv`或`conda`,以便更好地隔离不同项目依赖,提高开发效率。 ... [详细]
  • Django框架下的对象关系映射(ORM)详解
    在Django框架中,对象关系映射(ORM)技术是解决面向对象编程与关系型数据库之间不兼容问题的关键工具。通过将数据库表结构映射到Python类,ORM使得开发者能够以面向对象的方式操作数据库,从而简化了数据访问和管理的复杂性。这种技术不仅提高了代码的可读性和可维护性,还增强了应用程序的灵活性和扩展性。 ... [详细]
  • voc生成xml 代码
    目录 lxmlwindows安装 读取示例 可视化 生成示例 上面是代码,下面有调用示例 api调用代码,其实只有几行:这个生成代码也很简 ... [详细]
  • 使用 MyEclipse 和 TestNG 测试框架在 Java 中高效进行单元测试
    通过MyEclipse集成TestNG测试框架,可以在Java开发中高效地进行单元测试。本文介绍了在JDK 1.8.0_121和MyEclipse 10.0离线环境下配置和使用TestNG的具体步骤,帮助开发者提高测试效率和代码质量。 ... [详细]
  • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
  • 本文首先对信息漏洞的基础知识进行了概述,重点介绍了几种常见的信息泄露途径。具体包括目录遍历、PHPINFO信息泄露以及备份文件的不当下载。其中,备份文件下载涉及网站源代码、`.bak`文件、Vim缓存文件和`DS_Store`文件等。目录遍历漏洞的详细分析为后续深入研究奠定了基础。 ... [详细]
  • Python网络爬虫入门:利用urllib库进行数据抓取
    Python网络爬虫入门:利用urllib库进行数据抓取在数据科学和Web开发领域,Python凭借其简洁高效的特性成为首选语言。本文主要介绍了如何在Windows环境下使用Python的urllib库进行基本的网络数据抓取。考虑到命令行操作的不便,作者选择了Jupyter Notebook作为开发环境,不仅简化了配置过程,还提供了直观的数据处理和可视化功能。通过实例演示,读者可以轻松掌握urllib的基本用法,为深入学习网络爬虫技术打下坚实基础。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 本文深入探讨了 Python Watchdog 库的使用方法和应用场景。通过详细的代码示例,展示了如何利用 Watchdog 监控文件系统的变化,包括文件的创建、修改和删除等操作。文章不仅介绍了 Watchdog 的基本功能,还探讨了其在实际项目中的高级应用,如日志监控和自动化任务触发。读者将能够全面了解 Watchdog 的工作原理及其在不同场景下的应用技巧。 ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • Android 图像色彩处理技术详解
    本文详细探讨了 Android 平台上的图像色彩处理技术,重点介绍了如何通过模仿美图秀秀的交互方式,利用 SeekBar 实现对图片颜色的精细调整。文章展示了具体的布局设计和代码实现,帮助开发者更好地理解和应用图像处理技术。 ... [详细]
  • 本文详细介绍了使用响应文件在静默模式下安装和配置Oracle 11g的方法。硬件要求包括:内存至少1GB,具体可通过命令`grep -i memtotal /proc/meminfo`进行检查。此外,还提供了详细的步骤和注意事项,确保安装过程顺利进行。 ... [详细]
  • 本文深入探讨了 MXOTDLL.dll 在 C# 环境中的应用与优化策略。针对近期公司从某生物技术供应商采购的指纹识别设备,该设备提供的 DLL 文件是用 C 语言编写的。为了更好地集成到现有的 C# 系统中,我们对原生的 C 语言 DLL 进行了封装,并利用 C# 的互操作性功能实现了高效调用。此外,文章还详细分析了在实际应用中可能遇到的性能瓶颈,并提出了一系列优化措施,以确保系统的稳定性和高效运行。 ... [详细]
  • 本文深入探讨了 Vue.js 中异步组件的应用与优化策略。首先,文章介绍了异步组件的基本概念及其在现代前端开发中的重要性。为了确保最佳实践,建议使用 Webpack 作为模块打包工具,因为 Browserify 默认不支持异步组件的加载。接着,详细解释了异步组件的使用方法,并提供了官方文档的相关链接以供参考。此外,文章还讨论了多种优化技巧,包括代码分割、懒加载和性能调优,以提升应用的整体性能和用户体验。 ... [详细]
author-avatar
卢太爽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有