Emacs有这些配置足矣

前言

Emacs 是最为强大的开源编辑器之一(另一个地球人都知道),它的强大扩展能力让不少用户爱不释手,不过,过于羞涩的配置和复杂的按键组合,也让它备受争议。Linus就曾说Emacs是Evil,也还有人开发出各种Evil插入,将Emacs变成Vim,Emacs真是让人又爱又恨。

Emacs 虽然功能强大,但毕竟已经年代久远,与Sublime Text、Atom等新生代相比,却还是少了一些现代感,易用性也有所不如。不过,能够称霸编辑器界几十年,Emacs是不会轻易退出舞台的。我的网站就是用Emacs来编辑的,下面就分享我用的几个简单的配置,让Emacs看起来更现代,更好用。

包管理

第一需要的就是包管理,现在包管理基本成了各种软件或系统的标配,对于Emacs这种以扩展性强的软件来说,包管理必不可少。不过,默认的包仓库数量有限,必须加附加的仓库(Emacs为什么不能一次到位呢?哎~)。

在配置~/.emacs.d/init中(没错,init没el后缀也行),添加

(require 'package) ;; You might already have this line
(add-to-list 'package-archives
    '("melpa-stable" . "https://stable.melpa.org/packages/") t)
(add-to-list 'package-archives
    '("marmalade" . "http://marmalade-repo.org/packages/") t)
(package-initialize)

上面是分别添加melpa和marmalade两个仓库.

工具栏

对于Emacs来说,工具栏基本没用,我的工具栏就从来没用过,还占用空间,工具栏简直就是Emacs最差的设计之一。既然不需要,那就没有必要留着,去掉它,腾出空间。在配置~/.emacs.d/init中添加

(tool-bar-mode 0)

行列显示

对于一个现代编辑器来说,在侧边显示行号是必须的。在底下状态栏显示行列信息,也是必须的。括号匹配和当前行高亮显示,这些都是必须的。但对于Emacs来说,默认这些都是没有的,让人怎么说呀。在配置上加上

(global-linum-mode t) ;侧边显示行号
(column-number-mode t) ;状态栏显示行列信息
(show-paren-mode t) ;括号匹配高亮
(global-hl-line-mode 1) ;当前行高亮

统计选择的字符数

在状态栏上显示当前选择的字符数,我认为也是必须的。不过Emacs并没有开启,默认也没带。需要从包管理中下载modeline-posn,然后在配置中设置

(require 'modeline-posn)
(size-indication-mode 1)

当选择一段文字,会在状态栏中把这段文字的字数统计下来,支持中文和英文。不过这个插件和smart-mode-line会冲突,所以不能安装smart-mode-line

统计选中的字数
统计选中的字数

多处同时编辑

多处同时编辑这个功能,简直就是太太有范了,我喜欢上Sublime Text,没别的,就是这个功能。所以,这个功能必须有。我在我的另一篇文章《Emacs中多处同时编辑》也有介绍过。从包管理上安装multiple-cursors,然后在配置中配置

(require 'multiple-cursors)
(global-unset-key (kbd "M-<down-mouse-1>"))
(global-set-key (kbd "M-<mouse-1>") 'mc/add-cursor-on-click)

(global-set-key (kbd "C-S-c C-S-c") 'mc/edit-lines)

(global-set-key (kbd "C->") 'mc/mark-next-like-this)
(global-set-key (kbd "C-<") 'mc/mark-previous-like-this)
(global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this)

重启后,按住M键(Alt),用鼠标点击试一下,退出同时编辑,按一下C-g

多处同时编辑
多处同时编辑

自动保存

自动保存,会隔一个时间,帮你把文件保存起来,不用每次按C-x和C-s,这个功能和Emacs自带那个生成自动保存文件和备份文件,是两回事。我个人决定这个自动保存更加人心化,更加好用,而Emacs自带的那个生成保存文件和备份文件,基本没用,每次都是把它们给关闭。可惜的是,这么好的功能,在包管理竟然找不到,需要另外下载(在这里auto-save),下载后放到.emacs.d/3rds目录下,在配置文件中这样设置

(add-to-list
    'load-path 
    (expand-file-name "3rds" user-emacs-directory)) ;把3rds目录加到加载目录中

(setq auto-save-default nil) ;不生成那个讨厌的##文件
(setq backup-by-copying nil) ;不生成那个讨厌的~文件

(require 'auto-save)            ;; 加载自动保存模块
(auto-save-enable)              ;; 开启自动保存功能
(setq auto-save-slient t)       ;; 自动保存的时候静悄悄的, 不要打扰我

自动保存功能真的很好用,据说有人用这个功能,都10年不用按C-x和C-s了。

启动回到原来的界面

Emacs关闭或退出后,重启还想回到原来的界面,这个功能必须有,不过,默尔也没有。需要从包管理中下载session,然后在配置中配置

(require 'session)
(add-hook 'after-init-hook 'session-initialize)
(desktop-save-mode t)

第一次退出的时候,会提示是否保存回话,回答yes,下次就不需要了。有了这个功能,启动Emacs就能回到上次退出时的状态。

现代风格

Emacs的界面已经几十年不变了,所以换一个清新的界面,也是必须的。在这里,我推荐Atom风格的,也可以使用Sublime Text风格的,我自己使用的是Atom风格,在包管理中下载atom-one-dark(如果是想用Sublime Text的,就下载monokai),然后在配置中设置

(load-theme 'atom-one-dark t)

这个时候,Emacs跟Atom是不是很像了,很有现代感吧~。配置界面风格,还有color-theme,不过不推荐,原因,color-theme的种类虽多,但也不用天天换,另外一个最重要原因,就是慢!到这里,给大家看一张我的Emacs截图。

我的Emacs
我的Emacs

总结

在这边文章里,我跟大家分享了我认为Emacs必须具备的功能和配置,有这些功能配置,Emacs就已经很好看很好用了。对于另外一些功能,如org,helm,虽然很酷,很有范,但是如果你不做这类工作(如GTD等),那么这些功能是没有用的。因此,从简单实用的角度出发,只说必须有的,不必须有的,就不在这介绍了。本人水平有限,如果有什么不对的,也请大家指正。

推荐阅读更多精彩内容