using emacs under mac

在mac下折腾了emacs有一段时间了,写点经验分享一下,顺便一提,mac下cocoa应用全局的emacs按键绑定太舒服了。

安装Emacs

mac默认安装了emacs的,不过版本比较旧(22.x),而且只能在终端下使用,这里选用homebrew来安装Emacs, 首先安装homebrew

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
# --cocoa选项表示安装带图形化界面的emacs
brew install emacs --cocoa

安装后brew会提示你可以运行一个命令将emacs 24.3版本链接到/Applications下,这样在应用程序中可以直接双击打开emacs。

Mac下的设置

使用emacs可能会遇到键位设置的问题,有些键盘上没有option键只有alt键,使用发现alt键不起作用,用来运用M-x的绑定变成了Esc-x。解决方法如下:

在自带的终端下使用: 偏好设置 -> 设置 -> 键盘 -> 勾上使用option键作为meta键

在iterm2下使用:Preferences -> Profiles -> 选择配置文件 -> keys -> 在Left/Right option key acts 选项选择 +Esc

在图形化界面下设置需要在emacs初始文件(~/.emacs.d/init.el)中加上:

(when (eq system-type 'darwin)
	;; use option key as meta key
	(setq mac-option-modifier 'meta))

以daemon的方式使用emacs

双击Emacs.app每次都会重新打开一个新的进程来跑emacs, 我更喜欢emacs server + emacs client的方式。用emacs --daemon的方式找开一个后台跑的emacs服务进程,再来emacsclient来连接。

在~/.bash_profile(使用zsh的话就是~/.zshrc)中加入以下alias

# 启动emacs后台进程
alias emdaemon="emacs --daemon"
# 结束emacs后台进程
alias emkill="emacsclient -e '(kill-emacs)'"
# 新建emacs窗口来编辑文件
alias ec="emacsclient -c $@"

在init.el中加上

(setq window-system-default-frame-alist
  '(
    ;; if frame created on Macintosh Cocoa display
    (ns
     (menu-bar-lines . 1)
     (tool-bar-lines . nil)
     ;; mouse
     (mouse-wheel-mode . 1)
     (mouse-wheel-follow-mouse . t)
     (mouse-avoidance-mode . 'exile)
     ;; face
     (font . "Monaco 12")
     ;; frame size
     (width . 96)
     (height . 60)
     )
    ;; if on term
    (nil
     (menu-bar-lines . 0)
     (tool-bar-lines . 0)
     ;; (background-color . "black")
     ;; (foreground-color . "white")
     )
    )
  )

Emacs中文网这篇文章有更详细的介绍关于emacsclient新建frame设置的介绍。

参考文章