Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
200 lines (149 sloc) 12.3 KB

前面的话

Emacs是一个古老的编辑器,在很多年的发展下来,它已经超越了编辑器的范畴,可以基于它做任何基于编辑相关的工作,比如写文档,写程序,做项目管理,收发邮件等等,它几乎可以扩展为任何需要的工具; 而这里,我针对于对于这个工具感兴趣,却不知道如何学习的同学,写了这个系列学习教程,教程的目的,以从简单到复杂,从编辑到扩展其功能等等步骤入手,希望给读者一个好的引导,逐渐带入Emacs这个进来了就不想再出去的世界; 在学习之前,这里需要澄清几个事情:

  1. Emacs可以做什么 对于一个陌生人来说,Emacs只是一个编辑器,古老的编辑器,用来编辑文件的工具; 对于一个熟悉的人来说,Emacs就像一个可以伪装为编辑器的操作系统,因为它可以做几乎操作系统日常工作的大部分工作,如文件管理、邮件阅读、项目管理、浏览器、视频音频播放器等等可以按用户需求扩展出来的功能; 即按你的需求,可以扩展任何功能在Emacs中;

  2. Emacs入门很难; Emacs刚开始接触的时候,确实会给用户一个很诧异的感觉,为什么上下、左右移动光标要用如 Ctrol+P/N/F/B 这种组合键,为什么复制、剪贴、粘贴需要用如 Meta-w, Ctrol-w, Ctrol-y 这种组合键?其实在刚开始我也会感觉奇怪,但当我已经熟悉它的操作后,才知道,这种组合键的设计,会让我的操作体验比来回切换如上下、左右这种功能键要更快捷,更舒服,最重要的是,它让我开始有了输入的快感,开始有了敲击键盘时十指在键盘上飞快的打字时所带来的从未有过的舒服与自信; 而当你发现你已经入门后,其实纵然知道前面要一点一点学习和使用的功能很多,但Emacs会像一个和你坐着下象棋的老人一样,耐心的等着你一点一点的跟着他学习如何将你的象棋的技艺慢慢的提升并修炼到炉火纯青的地步;

  3. Emacs只适合程序猿; 在我接触Emacs后,从github、google上我发现了很多使用Emacs的人,有程序员,有记者,有科研人员,更多的一些经常发表文章的学者,他们来至于各行各业,做着不同的工作,但也有不少人虽然不是一个程序员,但因为使用Emacs久了,自然学会了如何简单的使用Elisp语言来配置一些简单的让自己的写作效率更高的东西,从他们的经历中,我可以很清楚的感受到他们的乐此不疲,可以感受到他们在Hack Emacs中获得的快乐,就像一个学习武术的人,已经开始在不断的与自己的宝剑,磨合到人剑合一的感觉,并发挥出更强大的力量; 所以我觉得只要一个经常打字的人,不管你是记者,还是一个作家,不管你是一个学生,还是一个科研人员,如果有兴趣学习Emacs,你就一定能在其中找到属于自己的一份快乐;Emacs有理由让你的付出一定会得到丰富的收获; 对于我来说,Emacs改变的不仅是我的写作习惯,而真正重要的,我觉得它改变的是我的整个学习和工作的方式,让我开始变的有序的组织自己的工作、生活、并在其中开始学习积累和记录工作、生活、学习所经历的东西,这也是激发我开始将我的学习内容和大家分享的最原始的动力; 我希望在带领大家学习和使用Emacs的路上,能带来一种轻松、快乐、有趣的经历,也能激发每一个读者领悟到与人分享中的快乐;

  4. Emacs很难配置; 这里以我自己亲身学习的经历来看,Emacs难配置的问题,其实是非常错误的,我们知道配置的目的是要看如何满足你的需求,而对于初学者来说,配置其实是一个需要循序渐进的过程,因此本书的写作出发点,即为从头开始一点一点引导读者去学习如何使用,并最终学习如何配置一个适合自己的编辑器,而就像我自己的学习经历一样,当你入了这个门坎后,你会发现其实后面的路会变的越加简单和有趣;

  5. Emacs有太多的快捷键需要去记忆; 跟着这本书学习下来后,你会发现,需要特别记忆的快捷键真的不多,十几个是经常使用的,其它的快捷键,不用特别记忆,在使用的时候查一下文档,用两次就记得了,而这时记住的不是快捷键,其实是手感,记住的是敲击键盘时的感觉,这种感觉记住后,就不太容易忘记了,当然,如果忘记了查一查就可以了; 所以,如果一个Emacs的使用者,告诉你快捷键太多都要记住,他唯一的目的就是在炫耀他的牛逼,看,这么多快捷键,哥都能学会,而你不能;但我在这里可以告诉你,其实他真正日常使用的快捷键不会超过20个,其它的也就是在用到某个功能的时候会用到的一些特殊的快捷键,这些快捷键也会在长时间不用的时候忘记,因此只要知道如何查找,使用起来就不会有任何问题,不怕忘记,也就不存在是否需要特别记忆的问题了; 因此快捷键一定不是学习Emacs的一个难点问题; 本书在后面有一个表格,列出了必须掌握的一部分快捷键,这些在使用一两次记住就可以了,其它的快捷键不用特别记忆,现查文档现使用即可;

  6. Emacs学习会花太长时间; 对于这个问题,其实我们知道,学习任何东西都是需要花时间的,Emacs同样会需要在开始的时候付出一些时间,然而当初使部分的功能会使用后,就基本算是学会了;这个过程是逐渐展开的,不是一定要掌握了所有的功能后才算是学会了Emacs,基本的编辑操作能满足日常的编辑工作; 至于后面的高级功能,只需要在有时间的时候,花一些精力学习如何使用它就可以了,比如需要利用Emacs的 org-mode 写文档,并需要支持导出pdf文件,或者需要使用Emacs来写 latex 这种标准的图书印刷版本的写作,再或者需要使用Emacs来处理日常的项目管理、生活记录、工作任务管理等;特殊针对某一个功能花一些时间去学习如何使用即可;

  7. Emacs需要学习Elisp语言才能学好; 这个问题其实已经很明确,在学习配置的时候,其实我们不需要明白如何使用Elisp语言,对于本书的读者,完全可以使用我推荐给大家的配置来使用,即可以达到基本大部分应用场景,而达到这个目的,是不需要有Elisp语言基础的; Elisp语言是提供给高级用户,在我提供的,或者网上找到的功能组件安装后无法满足要求,需要Hack或自己写一个功能组件的时候,需要特别学习一下Elisp语言,其它的时候基本上是不用的,因为Emacs的30年的发展过程中,必定已经有人经历了和你一样的问题,而绝大部分的时候,他们已经解决掉这些问题,并且提供了一些更有趣更高级的功能供我们集成进来使用,毕竟Emacs的使用者,大部分都是不甘于现状的破坏者和创新者;

Emacs安装

GNU Emacs

Emacs键盘快捷键设计概述

Emacs中初使快捷键设计中,还是有一定的规律可循,因此我们可以简单看看有什么规则,简单来表达,一张表格即可说明白;

快捷键 描述 备注
C-字母 针对使用频率比较高的操作 比如方向移动,搜索
M-字母 针对使用频率稍低一些的操作 按单词进行移动
C-x 针对常用的全局功能设置 比如文件管理dired, 切换buffer, 内容的高级操作
M-x 调用函数 打开函数列表
C-c 针对不同的模式中,定义不同的操作,通过以它为开头  

Emacs基础操作快捷键

文件管理

打开/关闭/保存文件

打开文件,使用 C-x C-f 来打开文件,它会在编辑器下面的mini-buffer中出现文件夹,可以通过切换文件夹找到相应的文件,并回车以打开此文件; 关闭文件,使用 C-x k 来关闭当前文件,同样,它会在编辑器下方的mini-buffer中出现当前打开的文件列表,可以通过 C-s 或者 C-r 来往前或往后选择需要关闭的文件,然后回车以关闭此文件; 保存文件,

切换已经打开的文件

使用dired管理文件

多文件同时操作

打开多个文件

拆分多个编辑窗口

光标移动

按字移动

按词移动

按页移动

编辑

选择文本

默认选择文本分两步:使用快捷键 Ctrl+Space 来做标记,然后移动光标即可实现选中文本块; 而中文操作系统中,默认 Ctrl+Space 被输入法占用了,因此我们需要在 init.el 对快捷键进行修改一下;这里我们新建一个新的专门用于记录快捷键操作的文件,文件名为 init-keybinding.el ,并将文件放于前面创建的 lisp 文件夹中; 文件内容添加:

;; 配置Shift+Space为标记快捷键
(global-set-key (kbd "S-SPC") 'set-mark-command)

(provide 'key-bindings)

可以看到,我们修改了默认快捷键为 Shift+Space 为标记;这时,可以在文件中执行 C-c C-k 即可将当前的配置生效; 然后就可以使用 Shift+Space 来进行选择文本操作了;

输入/修改/删除

拷贝/剪切/粘贴

搜索/替换

*

You can’t perform that action at this time.