安装

# 安装命令
# org-mode 显示 inline image 时需要 imagemagick@6

brew tap d12frosted/emacs-plus
brew install emacs-plus
brew install sbcl # 顺便把 common lisp 也装上

# 以下是旧方法,brew 已经移除了编译选项
brew install emacs --with-cocoa --with-dbus --with-librsvg --with-imagemagick@6 --with-mailutils

  • https://emacs.stackexchange.com/questions/30559/org-mode-inline-image-display-size/30560
  • https://www.reddit.com/r/emacs/comments/bhjtf9/now_that_homebrew_has_removed_build_options_how/
(image-type-available-p 'imagemagick)

其实 Mac 是有自带 Emacs 的,位置是/usr/bin/emacs,只是版本非常旧,通过brew安装的位置在/usr/local/bin/emacs,可以通过下面的命令删除 Mac 自带的 Emacs:

sudo rm /usr/bin/emacs
sudo rm -rf /usr/share/emacs

键位映射

为了保证在远端服务器与本地开发的一致行,我希望在终端里面运行 emacs,而非 GUI 版本,但是这样也带来一个严重的问题,终端不支持一些特殊的键位组合,对于 Emacs 来说主要是一些 escape code,需要手动进行映射,解决方法可以参考 Stackoverflow 上的这个问题How do I bind C-= in emacs

iTerm2 键位映射

还有一点需要注意,Mac 自身有一些快捷键可能与 Emacs 冲突,主要是 Mission Control,我直接取消掉了。

关闭 Mission Control

如果上述方案无法解决你的问题,Google emacs + input-decode-map 关键字即可。Emacs China 也是一个好地方, 由于 Emacs 的使用门槛,决定了其社区的高质量,我的提问很快就得到了准确的解答。

或许我的配置文件也能给你一些启发:

(defun my/global-map-and-set-key (key command &optional prefix suffix)
   "`my/map-key' KEY then `global-set-key' KEY with COMMAND.
 PREFIX or SUFFIX can wrap the key when passing to `global-set-key'."
   (my/map-key key)
   (global-set-key (kbd (concat prefix key suffix)) command))

 (defun my/map-key (key)
   "Map KEY from escape sequence \"\e[emacs-KEY\."
   (define-key function-key-map (concat "\e[emacs-" key) (kbd key)))

(global-set-key (kbd "C-c l") 'mc/edit-lines)
;; 需要配合 iTerm2 进行 key mapping
;; https://stackoverflow.com/a/40222318/2163429
(my/global-map-and-set-key "C-=" 'er/expand-region)
(my/global-map-and-set-key "C--" 'er/contract-region)
(my/global-map-and-set-key "C->" 'mc/mark-next-like-this)
(my/global-map-and-set-key "C-<" 'mc/mark-previous-like-this)
(my/global-map-and-set-key "C-c C->" 'mc/mark-all-like-this)

这里有一些参考文章: