Emacs指北(做一个搬运工好累)

从一个简单的emacs入门教程说起:

一个不知道怎么描述的emacs教程

一个简单的介绍

emacs[/ˈiːmæks/]是地球上的编辑器中最像操作系统,操作系统中最像编辑器的编辑器,按照elisp intro的说法,emacs 是一个可拓展计算环境(extensible computing environment),这一点,如果 学过elisp,可以深刻的体会到。

靠着elisp这种强大的拓展语言,emacs几乎无所不能,也许你也早有耳闻,写邮件,玩游戏,上网, 聊天,文件管理,计算器,写日记,看日历,强大的org-mode,甚至还能煮咖啡!(这需要一台支持 超文本咖啡传输控制协议的咖啡机才行,这本来是一个愚人节笑话,但是据说真有人做出来了, 不过网上的资料还是很少,我也没去求证)。emacs甚至可以变成一个不太好用的平铺式窗口管理器 (我使用过,所以才说不太好用)。这也是为什么emacs也被称为神的编辑器的原因。

emacs由Richard Stallman发明,据说他在MIT的人工智能实验室工作期间,去了别的大学(斯坦福), 看到一个所见即所得的编辑器(他们自己使用的类似vi这种分模式编辑),非常喜欢,回来就和他的好基 友一起写了一个出来,并使用了elisp进行拓展。很快就在实验室流行开来,许多人贡献了代码(或者称为宏) 。宏即macros,所以emacs 是 editor macros的缩写。


关于我和这个教程

写这个教程的时候我使用emacs 2年,也学习了elisp。自认为不是什么高手。所以不能带你成为 高手。想指望看一篇教程就精通emacs,这是不可能的,修行还是在个人。最全面的学习方法还 是看官方的文档(C-h i),但是内容相当之多,而且大多数没有中文版本,很费时费力。我也没有看完。 遇到问题查查看,大多数的解决问题的办法都在emacs wiki里——一个社区维护的wiki。


学emacs很难吗

很多人可能看过这张各编辑器学习曲线图与emacs齐名的vim的学习曲线一直保持着同一高水平,我自己也学过vim,我觉得这个图还挺合理, 但是emacs是一个神奇的螺旋线,旨在表达emacs学起来的谜之困难。实际上,并不是这样,就第一次使用来说 ,emacs和vim的曲线要倒过来,打开了vim结果半天打不出字,还不时有哔哔声,好像要爆炸?而emacs就不 一样,打什么字就显示什么。不过当你要退出emacs的时候,却需要 C-x C-c ,即ctrl+x,ctrl+c,这看起来 简直爆炸,为什么退出要两个组合键,是因为所见即所得,所以操作上就必须避免与输入重复,于是用ctrl结合的一系列 组合键就诞生了。而vim也好不到哪里去,冒号,q,感叹号,回车。这不是比emacs还复杂么。其实emacs并不是很难学, 看完官方入门教程,很快就可以上手,学习曲线也基本持平,后期还会下降。


准备工作

首先你得装上emacs,不然还学什么啊。如果你用的是windows,大概你永远都不会需要使用emacs,而且emacs 在windows下有很多问题。如果你用的是mac或者GNU/Linux,那么你一定知道怎么安装,所以我就不多说了。 然后最好把ctrl和caps lock交换位置,不同的系统有不同的方法,我用的是外接键盘的编程功能,GNU/linux可以 用Xmodmap修改,因为ctrl键会被大量的使用,如果一直用左下角那个ctrl键,小拇指很快就会受不了。也可以用手 掌压ctrl。使用emacs,我推荐使用C/S模式(即client/server),因为配置多了以后emacs启动很慢很慢,在机械硬盘 上启动我的emacs要10s,ssd也要1.6s。一种方法是开机的时候自动启动,但是这样会拖慢开机的速度。好的做法是 第一次打开的时候自动启动server,这样既不会拖慢开机速度也不会影响emacs的启动。在你的shell的配置文件中加 入如下内容即可。

	export ALTERNATE_EDITOR=""

一个方便的alias也是很好的,日常使用emacs的频率非常之高,我选择这样做

	alias e="emacsclient -nw"

-nw选项的作用是不启动x版本而启动终端版本,尽管图形版本对主题的显示完美支持(如果你像我一样使用终端版本, 只有少数主题对终端显示做了适配,大多数主题显示一团糟),但是对输入法的设置却是很玄学的,打不了中文很无奈 ,而且不方便在终端下使用。

另外最好看一遍emacs自带的入门教程,不会花很长的时间,C-h t即可查看,这里没有捷径可走,这些使用频率非常高 的操作还是不要指望不记忆靠M-x打出来了。


一些基本知识与操作

buffer/window/frame

frame是最根本的东西,windows构建在frame之上,而buffer是把文件读入内存后显示的内容,所以其实 你是对内存里的内容进行编辑,直到保存的时候才写入文件。这么说可能不太直观。用比喻的说法,frame 就相当于桌面,而window就相当于打开的窗口,buffer则是窗口的内容。

major mode/minor mode

每一个buffer打开之后,emacs都会选择一个major mode还决定编辑的模式,同时会有很多的mimor mode进行辅助,如果不 自己写一个mode,几乎不需要了解这方面的知识,因为这些emacs都帮你设置好了。

kill-ring

所谓kill-ring就是从buffer里kill掉的内容放置的地方,就相当于回收站。从技术的角度来讲kill ring 是一种数据结构的应用,那就是stack了,也就是LIFO(last in, first out),不过和栈不同的是,kill ring的内容并不会从kill ring里删除,你可以循环选择下一个内容。kill ring是所有buffer共享,所以可 以从一个buffer复制到另一个buffer。

快捷键

  • C – Ctrl
  • M – Meta(alt或者esc)
  • S – super(几乎用不到)
  • s – shift(几乎用不到)

不是emacs造出这样的名称,实际上在lisp machine使用的键盘上,这些键是真实存在的

关于快捷键,如果看得懂英语,还是看下面这个 官方参考吧。 不然就看我总结的,不过只有常用的。实际上快捷键有上千个,你能记住也许可以 去参加世界记忆大赛,如果你和我一样记不住,那还是记住常用的,其他的用M-x来 做,装上helm或者smex后,M-x会变得很方便,可以很快速的找到命令。

基本快捷键 作用
C-f 光标向前移动
C-b 光标向后移动
C-n 光标向下移动
C-p 光标向上移动
C-a 移动到行首
C-e 移动到行尾
M-f 向前移动一个单词
M-b 向后移动一个单词
M-a 移动到句首
M-e 移动到句尾
M-{

你可能感兴趣的:(Linux/Unix,Computer,Skill,Emacs,指南,Emacs教程,Emacs,入门)