- 1 前言
- 2 Why Emacs
- 3 安装Emacs
- 3.1 Homebrew
- 3.2 安装Emacs-plus
- 4 启动Emacs
- 5 Emacs的配置文件
- 6 Emacs的一些基本概念
- 7 Emacs的快捷键
1 前言 🔗
想做这个教程很久了,主要原因:
- Emacs实在是一个太强大的工具,不仅仅是对开发,对产品、运营等都很有用(甚至还有公司CEO在用Emacs的);
- Emacs并不是一个容易上手的工具,有一定的门槛,如果没有耐心,没有良好的引导,很容易中途放弃;
- Emacs使用较多的还是开发,因此很多教程大多从开发的角度来讲解,有一定的认知门槛;
- 产品经理是一个比较有代表性的群体,如果一个教程,产品经理能轻易的看懂学会,那其他人估计也不会太难;
声明一下:
- 我虽然很早就开始用Emacs(2008年),但中间很长时间因为职业的原因,中间大概有10年没有用过了,也是从2020年开始逐渐又用了起来。我并不是高手,在Emacs社区,我只是个幼儿园学生,甚至到今天依然不太懂
emacs-lisp
,但这并不妨碍我对Emacs的热爱和使用。所以这个教程的定位也只是入门,出错在所难免,如果发现有任何问题,请随时联系我。- Emacs是高度自由的,我的选择未必适合你,你可以参考,但不用盲从,在初识的时候,可以照抄,有了一定认识和思考后,请按照自己的喜好调教它,这也是Emacs的迷人之处。
2 Why Emacs 🔗
这是一个老生常谈的问题,Emacs这么古老的一个工具,至今已有近50年的高龄了。在21世纪的今天,为什么作为一个产品经理要使用Emacs呢?
- 公司会倒闭,作为自由软件代表的Emacs,一直活得很好;
- 你的投入永不过时,终生受用,有道友云“十年Linux,百年Emacs”,诚不欺我也;
- Emacs能带来快乐(或者说高效能带来快乐,而Emacs能带来高效);
- 文本即一切,文本永流传;
- Emacs对产品经理有用:
- 写文档(PRD):比 Word 什么的高效不知道多少倍
- 任务管理
- 画流程图
- 写脚本
- 写博客
- 记笔记
- …
3 安装Emacs 🔗
3.1 Homebrew 🔗
本教程以Mac环境为例,Linux用户想必比Mac用户更加硬核,更加不在话下。什么?你说Windows?抱歉,鄙人对Microsoft有偏见,不喜欢他家的东西。
在MacOS上安装Emacs,需要先配置完Homebrew,你当然也可以抬杠说不需要,好吧,你赢了,但是你还是装上吧。
安装非常简单,就一句命令的事:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
3.2 安装Emacs-plus 🔗
在MacOS上,当然是装Emacs-plus。当然,你也可以抬杠说装Emacs Mac Port,或者直接装GNU/Emacs,对,你说的对,但还是装Emacs-plus吧。
- Emacs Mac Port 默认会把
Command
键作为Meta
键,虽然可以通过改设置改回来,但是我就是不太喜欢!- GNU/Emacs当然是好的,但是,既然用Mac了,为啥不用针对Mac优化过打了一些补丁的Emacs-plus呢?
安装Emacs-plus很简单,也就两个命令的事:
brew tap d12frosted/emacs-plus
brew install emacs-plus@29 --with-xwidgets --with-imagemagick
当然,你也可以安装emacs-plus@30,或者安装当前的稳定版。你还可以加上其他的安装参数,具体请参考emacs-plus的Github页面。
4 启动Emacs 🔗
安装完毕后,按照命令行的提示,你可以在在「应用程序」里创建一个软链接:
ln -s /usr/local/opt/emacs-plus@29/Emacs.app /Applications
这样,你就可以在「Finder」的「应用程序」里找到Emacs,并启动它,当然你也可以在命令行里输入 emacs
来启动它,如果你用 Alfred
或者苹果自家的 splotlight
,你可以通过 Command
+ 空格
来启动Emacs,总之,你可以用各种姿势启动它。
一个刚刚安装完的全新的Emacs就长下面这样:
一个调教之后的Emacs可能长下面这样:
别急,下面跟着我的脚步,我们一步一步来学习使用Emacs。5 Emacs的配置文件 🔗
Emacs的配置文件有过一定的演进历程,我记得10几年前,大家伙大多数还都把配置文件放在 ~/.emacs
这个文件里,但现在已经基本上不这么干了。
现在最主流的做法是把Emacs所有配置相关的文件、插件等都统一放在 ~/.emacs.d/
这个文件夹下面,Emacs启动的时候会去找这个文件夹下的 init.el
文件。
在一个完全体的Emacs配置里,大概是下面这样的,不用被这个配置结构先吓到。在这个阶段,你只需要知道,所有的配置先都丢到 ~/.emacs.d/init.el
里就可以了。
/Users/randolph/.emacs.d/
├── README.org
├── emacs-config.org
├── custom.el
├── early-init.el
├── etc
│ ├── abbrev.el
│ ├── bookmarks.el
│ ├── eshell
│ ├── gnus
│ ├── hunspell_dict.txt
│ ├── mc-list.el
│ └── yasnippet
├── init.el
├── lisp
│ ├── hack
│ ├── init-base.el
│ ├── init-browser.el
│ ├── init-completion.el
│ ├── init-dev.el
│ ├── init-dired.el
│ ├── init-edit.el
│ ├── init-ibuffer.el
│ ├── init-irc.el
│ ├── init-linux.el
...
在后面,我们还会学习到如何通过Org-mode来管理配置文件,在这一节里,先有个大致的概念即可。
6 Emacs的一些基本概念 🔗
Emacs因为其悠久的历史,它里面有些概念跟现代编辑器相比,可能会有一些出入,但熟悉之后就很好理解了,在这个阶段,可以先简单了解以下几个专有名词的含义就可以。
- buffer
- 缓冲区,Emacs里最重要的组成部分,可以理解为Emacs的一个编辑区域,这个区域可能是打开某个文件后生成的区域,也可能是用户自己创建的一个区域。
- frame
- 窗体,Emacs的整个窗口。
- window
- 分屏,Emacs可以支持在一个frame下,通过
C-x 2
或C-x 3
等命令创建多个分屏。window和frame的概念尤其需要理解和区分,跟传统GUI的概念有所不同。 - file
- 文件,顾名思义。
- major mode
- 主模式,Emacs每个缓冲区都有一个主模式,这个模式会有独特的配置,如语法高亮、快捷键等。
- minor mode
- 副模式,Emacs每个缓冲区都可能有多个副模式,副模式可以协助Emacs主模式一起实现某些功能。
- mode line
- 模式栏,Emacs用来显示模式信息的行,除了模式信息,还可以显示行号、列号、文件名等各种信息。
以上是我自己对这些概念的理解,不一定准确,如需要查看准确的定义,可以在Emacs里按下
C-h i
键,进入Emacs自带的 info 文档界面,找到 Emacs > Intro 进行阅读即可。
7 Emacs的快捷键 🔗
Emacs的快捷键很多,但作为初学者,不用记很多,在我看来,只需要记住以下核心的快捷键即可。后续我们可以通过 which-key 插件来辅助我们记住快捷键。
统一说明:在Emacs的世界里,我们描述快捷键默认按照下面的规则:
- C-f
- 代表按住
Control
后再按f
键- S-f
- 代表按住
Shift
后再按f
键- M-f
- 代表按住
Meta
后再按f
键(在MacOS版的emacs-plus里Meta
键就是Option
键)- s-f
- 代表按住
Command
后再按f
键- C-c n f
- 代表按住
Control
后按c
键,然后松开手指,再依次按下n
和f
键- SPC
- 代表
空格
键- TAB
- 代表
Tab
键- RET
- 代表
回车
键- escape
- 代表
Esc
键
在这一阶段需要记住的快捷键如下:
按键 | 命令 | 含义 |
---|---|---|
C-f | forward-char | 光标向前移动一个字符 |
C-b | backward-char | 光标向后移动一个字符 |
C-n | next-line | 光标向下移动一行 |
C-p | previous-line | 光标向上移动一行 |
C-v | scroll-up | 光标向下移动一屏 |
M-v | scroll-down | 光标向上移动一屏 |
按键 | 命令 | 含义 |
---|---|---|
C-x C-f | find-file | 打开文件 |
C-x C-s | save-buffer | 保存文件 |
按键 | 命令 | 含义 |
---|---|---|
C-/ | undo | 撤销 |
C-g | keyboard-quit | 中断任何操作(使用非常频繁的按键) |
M-x | execute-extended-command | 执行交互式命令 |
C-x C-c | save-buffers-kill-terminal | 退出Emacs |
按键 | 命令 | 含义 |
---|---|---|
C-s | isearch-forward | 向下查找文本 |
C-r | isearch-backward | 向上查找文本 |
M-% | query-replace | 替换文本,每次替换前询问,按 ! 将替换所有 |
按键 | 命令 | 含义 |
---|---|---|
M-w | kill-ring-save | 拷贝选中的文本 |
C-w | kill-region | 剪切选中的文本 |
C-y | yank | 粘贴剪贴板里的文本 |
掌握了以上的快捷键(一点儿也不多,是不是特别容易记住 😄),就可以使用Emacs进行基本的文本编辑操作了。打开某个 txt
文件,查看、查找、替换内容都可以做到了。
恭喜你,迈出了坚实的第一步!