lifestyle | emacs productivity Oct 18, 2013 Kevin Ren

Preface

在过去的3个月里面我一直且仅仅使用Emacs, 在这之前当然我也尝试过各种Editor, 其中也有不乏优秀的Editor,如Sublime Text和SlickEdit,他们也是自己曾经钟情已久且 大力推荐的Editor。但是今天我却毅然的抛弃了他们,且绝不回头! 为什么是Emacs? 为什么不是VIM? 我曾经觉得VIM的几种模式是多么的逆天,而选择了Emacs! 现在看来当初是多么荒唐,然后VIM的几种模式和奇高的编辑效率则被后世标榜为人机交互 的典范。当然这里膜拜完了VIM有必要再赞扬一下Emacs了。Emacs是一种信仰! Emacs是一个伪装成编辑器的操作系统,他可以帮你做任何事,包括煮咖啡^_^

如果你看到这里有了学习Emacs的冲动,但是事实上学习他也不是一件简单的事情,不过 也不要有压力,比起VIM它入门会快得多,但是要想像神一样使用它,或许大部分人 都不会哟这么一天,因为大部分人都不是神! 我们只能去膜拜Richard StallmanLinux Torvalds 大神!1

Okay, 回到正题, 最近由于越来越多的Linux下面的开发,然后没有了sourceinsight, 没有了VS,没有了windows的各种"方便",唤起了大家学习VIMEmacs的热情. 所以趁此机会,分享一下个人的学习感悟,也希望能够让更多的人中毒, 这篇文章 主要讲述一下我是如何 使用Emacs更高效的Working,如何将我们大部分的Workflow 放到Emacs里面, 这里假设你已经了解了Emacs的一些基本知识2

Which Emacs version?

Emacs 如同大多数GNU软件一样具有良好的跨平台性,支援的平台包括GNU Linux, Mac OSX and MS Windows等, 最新的release 版本为24.3(March 11, 2003)。在Windows 平台上面虽然有 GNU Emacs for Windows,但是我强烈推荐GNU Emacs for Cygwin! 他们差异在于前者是 Windows本地编译生成的,而后者是依赖于Cygwin环境。原因在于后者可以获得和Linux/Unix下面统一 的使用体验,简单来说后者的shell为Cygwin下面的Bash,而前者则为windows的cmd。这样你也不会 受到windows的path和Posix path不兼容的问题困扰。

  • Windows下面安装Emacs的方法和安装Cygwin下面其他软件一样,通过Cygwin Setup,然后选取emacs-w32即可。 如果要安装GNU Emacs for Windows则可以通过GNU FTP3下载安装。
  • Linux下面安装,一般可以通过不同的Linux发行版的包管理器安装二进制包,或者通过源码编译进行安装(无网络的情况)。
  • Mac OSX下面有一个GNU Emacs for MacOSX的网站4,他上面帮你built好了二进制包,你可以直接下载下来安装, 而且除了提供release版本和Pretests版本外,他还有Nightlies的版本。让你随时可以用到最新的Emacs。 当然你可以通过Homebrew或者Macport等包管理器在命令行下面安装。

Make Emacs modernize

The Monokai theme and mordernize settings

作为一款现代的编辑器拥有一个漂亮的外表是必不可少的,由于之前使用Sublime Text和Textmate的缘故,对Monokai theme 非常钟情,所以Emacs里面仍然保持使用Monokai作为主题。当然看起来比较现代了还不行,还要改造一下Emacs默认 的一些设置,比如去掉Toolbox Scrollbar Menubar等等。除此之外配置一款等宽的适合编程的字体也必不可少,windows 下面推荐Consolas Mac OSX下面推荐Monokai

the_modernize_emacs.png

Manage packages

从Emacs 24开始已经内置了插件包管理工具elpa,这样你完全不必为寻找插件,升级插件,解决插件不兼容等问题而困惑了。安装 ,卸载和升级都灰常简单。

(when (>= emacs-major-version 24)
  (require 'package)
  (package-initialize)
  (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)
  )

emacs_elpa.png

File and Buffer and Window

IDO mode ervery, 使用ido mode + ibuffer mode可以让你打开文件,切换buffer变得非常的酷。并且支持模糊匹配!

C-x f    open file
C-x C-f  open file
C-x b    switch buffer
C-x k    kill buffer
C-x C-b  ibuffer list

emacs_file_open.png

可视化的切换窗口

C-x o    switch window

emacs_switch_window.png

Powerful Directory Management

Dired 是一个Emacs内置的目录和文件管理器,加上Dired+ Dired-x这两个插件他将变得更强大,这样你就很少 回去开windows explorer了,常用的功能包括:新建、删除、重命名、拷贝文件目录以及文件预览、打开、关闭、在目录树上下切换

emacs_dired.png

Emacs for Programming

Source code navigation

很多人不敢用VIM或者Emacs,或者说离不开source insight,是因为前者没有IDE的各种代码导航功能。 这里简单介绍使用Cscope+Projectile+Imenue进行项目文件内的代码导航功能。当然基本的语法高亮,符号自动匹配,智能缩进等就不说了。

C-c o    open file in project
C-x g    jump to function

emacs_open_in_project.png emacs_jump_func.png

C-.     goto global define
C-/     goto function called
C-,     back to the last postion
C-;     find all symbol
C-'     find all text
Auto Complete

使用Auto Completeyasnippts 可以构建一个强大的代码自动完成和模板系统的功能。

emacs_ac.png

Version control and diff

使用psvnmagit可以方便的在Emacs里面进行版本控制。

emacs_magit.png

使用ediff可以方便的对代码进行comparemerge

emacs_ediff.png

Org mode for Emacs

Org mode5 本来是Emacs的杀手锏功能。支持写 to-do 列表,日志管理,做笔记,做工程计划或者写网页。所以很多人用Org-mode来做GTD的工具。 我自己不是GTD的重度使用者,然后一般的文档我都偏爱用Markdown mode for Emacs6来写,所以Org mode实际没怎么使用。

Miscellaneous

日历,计算器以及一些小游戏。

emacs_misc.png

The End

上面简单介绍了我目前使用到的一些功能,当然这仅仅是Emacs的九牛一毛。你或许会不屑说着些功能你都可以windows上面的各种tool来代替,没错或许如此, 但是你试想一下,如果只给你一个telnet ssh到server上的terminal,你怎么进行软件开发? 没错,Emacs与生俱来的command line模式可以毫无压力的 搞定这些。你仅仅需要把你的emacs configure文件copy到你的home目录即可!

我自己的emacs configure文件经过近3个月的沉淀(基本上每周至少2次upate),其间参考了各个大神的配置,也经历了两次大的版本改动,目前在elpa的package管理 之下进行模块化,在目前的应用下面应该比较成熟。所以如果你刚开始Emacs推荐和欢迎 fork


  1. 更多使用Emacs的大牛列表请google 著名 Emacs 用户列表 

  2. 已经完整阅读和练习过Emacs Tour,在Emacs Reference Card的指引下能够操作Emacs 

  3. http://ftp.gnu.org/gnu/emacs/windows/ 

  4. http://emacsformacosx.com/ 

  5. http://orgmode.org/ 

  6. 本文即为Markdown格式创作,然后HTML发布。