Emacs Workflow - 准备工作
文章目录
众所周知,emacs以学习曲线陡峭著称,所以在开始介绍workflow前,得做些准备工作。这篇文章主要介绍emacs的安装、基础概念、基础配置和使用emacs的基础知识。
安装
Emacs的安装非常简单,各个平台的安装方法详见官网。我使用的是MacOS,通过homebrew安装 emacs-plus 27,支持xwidget webkit。安装代码如下:
|
|
MacOS Homebrew 的安装方法见 brew.sh 。
快捷键
Emacs和其他编辑器的相比一个重要的优势就是全键盘操作。所以在使用emacs之前,先通过按键 C-h t
查看内置的快捷键教程是一个较好的开端。下面对基本快捷键做简要介绍:
Emacs的快捷键都是组合键,由前缀键加上字母或数字组成。常见的前缀键有:
M
对应Alt
键C
对应Control
键S
对应Shift
键
形如 C-x C-f
的快捷键表示按住 Ctrl
键时按下字母 X
, 再按住 Ctrl
键同时按下字母 F
。
下面是一些常用快捷键:
快捷键 | 功能 | 快捷键 | 功能 |
---|---|---|---|
C-x C-c |
关闭Emacs | 编辑 | |
C-g |
取消当前按键输入 | C-@ 或 C-SPC |
设置mark |
M-w |
复制 | ||
移动 | C-w |
剪切 | |
C-p |
光标上移 | C-y |
粘贴 |
C-n |
光标下移 | C-x h |
全选 |
C-b |
光标左移 | C-x C-q |
切换只读/编辑模式 |
C-f |
光标右移 | C-/ |
撤销上一步操作 |
C-a |
光标移到行首 | ||
C-e |
光标移到行尾 | 缓冲区 | |
M-b |
光标前移一个单词 | C-x b |
切换buffer |
M-f |
光标后移一个单词 | C-x k |
关闭buffer |
C-v |
向下翻页 | C-x C-b |
查看所有打开的缓冲区 |
M-v |
向上翻页 | ||
C-l |
光标移到屏幕上/中/下部 | 窗口 | |
C-x [ |
光标跳到文首 | C-x 2 |
在下面分割一个窗口 |
C-x ] |
光标跳到文末 | C-x 3 |
在右边分割一个窗口 |
C-x 0 |
关闭当前窗口 | ||
文件 | C-x 1 |
关闭其它窗口 | |
C-x C-f |
打开(创建)文件 | C-x o |
依次切换窗口 |
C-x C-s |
保存文件 |
最小配置
Emacs使用Emacs-Lisp作为配置语言,通过添加配置可以使emacs符合个人的使用习惯和实现各种功能。通常,emacs的配置文件放置在用户根目录的 .emacs.d
文件夹中。其中的 init.el
作为配置的入口文件。
下面提供了一段最小配置(参考 better-defaults ),直接将它复制粘贴到 init.el
文件中后,重启emacs。
|
|
包管理
Emacs的package(也就是我们通常说的"包"或"插件")可以为emacs拓展丰富多样的功能。为了能够使用这些package,需要配置获取package的源。在init.el的最后加上以下代码:
|
|
配置好源后,按键 M-x list-packages
可以查看所有已发布的package。按键 M-x package-install
后输入package名字可以直接安装,同理使用 package-delete
删除。使用package,需要先在配置文件中写入 (require '<package-name>)
这个过程相当于导入(import)。再加上必要的自定义配置便可使用该package所有的功能。
以上的包管理方案由emacs内置的 package.el
提供。但内置的不一定是最好的。因此,有一些package专门提供了更加灵活、自动化的包管理方案。常用的有 use-package
quelpa
straight
el-get
等,我使用的是 use-package 结合 git submodule
。下面的代码用于初始化 use-package ,加入init.el结尾。
|
|
写完配置代码后,在最后一个括号后面按键 C-x C-e
(eval-last-sexp)即可执行配置,安装package。也可以重启emacs,再次打开时emacs会自动加载所有配置。
配置管理
值得注意的是,我们将上面的配置代码统统写入了init.el文件中。可以预见,当安装许多package时,配置代码将会增多,init.el的内容会变得复杂无比,难以阅读和维护。我们需要一种合理的组织配置文件的方式。
解决方法是将每一种workflow的配置代码写在单独的文件中,然后在init.el中引入该文件。操作如下:
- 在.emacs.d文件夹下创建elisp文件夹。
- 在init.el中添加代码
(add-to-list 'load-path (concat user-emacs-directory "elisp"))
。 - 在elisp文件夹下创建
init-better.el
,将“最小配置”的代码粘贴进去。 - 在
init-better.el
最后加上代码(provide 'init-better)
。 - 在
init.el
最后加上代码(require 'init-better)
根据字面意思也不难理解:步骤2的代码将elisp文件夹下的所有文件加入配置加载路径;步骤4的provide提供文件名,使其可以被引入;步骤5的require引入了该文件。这样我们就将最小配置的代码引入到init.el中了。以后的各种workflow我们也将使用这种方式来组织配置文件。
实用package
介绍一些对于新手实用的package,直接将下面的配置粘贴到elisp文件夹下的 init-utils.el
文件中。
|
|
同理,在配置init-utils.el文件结尾加上 (provide 'init-utils)
,然后在init.el中引入 (require 'init-utils)
。
emacs主题
选择一个简洁、美观的主题不仅可以缓解眼睛疲劳,还可以提高使用emacs的效率。emacs的主题分为亮色和暗色两种,我的使用习惯是白天使用亮色主题,晚上使用暗色主题。也可以选择喜欢的第三方主题安装。我最喜欢的亮色主题是leuven(内置),暗色主题是dracula(第三方)。
全部配置代码
我建议你按照教程的步骤,一步步拷贝、粘贴、执行代码。这个过程中,你会了解到如何从零配置一个功能强大的emacs编辑器,如何像搭积木一样通过添加配置文件使emacs充满无限的可能性。所有的配置代码我也会放在 emacs-workflow-config 这个代码仓库,读者可以直接把它克隆到 .emacs.d
文件夹下使用。
结语
如何配置一个舒适易用的emacs环境是一个大话题,有很多非常nice的package,但考虑到这大多数是与“提高编程的体验”相关,并不是Emacs Workflow的重点。所以,这一篇中我只介绍一个最小配置和部分实用(必要)的package,更多的优化配置不多讲解。好啦,以上就是使用emacs前的准备工作,接下来就可以愉快的学习各种工作流啦!