面向产品经理的Emacs教程:1. Emacs初识

· 2947字 · 6分钟

1 前言 🔗

想做这个教程很久了,主要原因:

  1. Emacs实在是一个太强大的工具,不仅仅是对开发,对产品、运营等都很有用(甚至还有公司CEO在用Emacs的);
  2. Emacs并不是一个容易上手的工具,有一定的门槛,如果没有耐心,没有良好的引导,很容易中途放弃;
  3. Emacs使用较多的还是开发,因此很多教程大多从开发的角度来讲解,有一定的认知门槛;
  4. 产品经理是一个比较有代表性的群体,如果一个教程,产品经理能轻易的看懂学会,那其他人估计也不会太难;

声明一下:

  1. 我虽然很早就开始用Emacs(2008年),但中间很长时间因为职业的原因,中间大概有10年没有用过了,也是从2020年开始逐渐又用了起来。我并不是高手,在Emacs社区,我只是个幼儿园学生,甚至到今天依然不太懂 emacs-lisp ,但这并不妨碍我对Emacs的热爱和使用。所以这个教程的定位也只是入门,出错在所难免,如果发现有任何问题,请随时联系我
  2. Emacs是高度自由的,我的选择未必适合你,你可以参考,但不用盲从,在初识的时候,可以照抄,有了一定认识和思考后,请按照自己的喜好调教它,这也是Emacs的迷人之处。

2 Why Emacs 🔗

这是一个老生常谈的问题,Emacs这么古老的一个工具,至今已有近50年的高龄了。在21世纪的今天,为什么作为一个产品经理要使用Emacs呢?

  1. 公司会倒闭,作为自由软件代表的Emacs,一直活得很好;
  2. 你的投入永不过时,终生受用,有道友云“十年Linux,百年Emacs”,诚不欺我也;
  3. Emacs能带来快乐(或者说高效能带来快乐,而Emacs能带来高效);
  4. 文本即一切,文本永流传;
  5. 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吧。

  1. Emacs Mac Port 默认会把 Command 键作为 Meta 键,虽然可以通过改设置改回来,但是我就是不太喜欢!
  2. 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可能长下面这样:

img_20221219_212613.png 别急,下面跟着我的脚步,我们一步一步来学习使用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 2C-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 键,然后松开手指,再依次按下 nf
SPC
代表 空格
TAB
代表 Tab
RET
代表 回车
escape
代表 Esc

在这一阶段需要记住的快捷键如下:

表 1: 移动类快捷键
按键 命令 含义
C-f forward-char 光标向前移动一个字符
C-b backward-char 光标向后移动一个字符
C-n next-line 光标向下移动一行
C-p previous-line 光标向上移动一行
C-v scroll-up 光标向下移动一屏
M-v scroll-down 光标向上移动一屏

表 2: 文件操作类快捷键
按键 命令 含义
C-x C-f find-file 打开文件
C-x C-s save-buffer 保存文件

表 3: 撤销等基础快捷键
按键 命令 含义
C-/ undo 撤销
C-g keyboard-quit 中断任何操作(使用非常频繁的按键)
M-x execute-extended-command 执行交互式命令
C-x C-c save-buffers-kill-terminal 退出Emacs

表 4: 查找替换类快捷键
按键 命令 含义
C-s isearch-forward 向下查找文本
C-r isearch-backward 向上查找文本
M-% query-replace 替换文本,每次替换前询问,按 ! 将替换所有

表 5: 复制粘贴类快捷键
按键 命令 含义
M-w kill-ring-save 拷贝选中的文本
C-w kill-region 剪切选中的文本
C-y yank 粘贴剪贴板里的文本

掌握了以上的快捷键(一点儿也不多,是不是特别容易记住 😄),就可以使用Emacs进行基本的文本编辑操作了。打开某个 txt 文件,查看、查找、替换内容都可以做到了。

恭喜你,迈出了坚实的第一步!