emacs入门

122
Emacs 入门 @yinhm GZLUG GZTechParty March 20, 2011 @yinhm Emacs 1/49

Upload: yinhm-

Post on 14-May-2015

4.702 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Emacs入门

Emacs入门@yinhm

GZLUG GZTechParty

March 20, 2011

@yinhm Emacs 1/49

Page 2: Emacs入门

GNU Emacs is an extensible,customizable text editor —and

more.

@yinhm Emacs 2/49

Page 3: Emacs入门

介绍

一点历史

• 1970年,(Editing MACroS)诞生于MIT人工智能实验室• 1984年,Stallman开发 GNU Emacs用来代替 Gosling Emacs• 1985年 3月 20日,Version 13作为第一个 public release• Stallman维护至 2008年,现在的维护者是 Stefan Monnier和 Chong Yidong

• 2009年,23.1发布,支持 Xft• 最新版本 23.3

@yinhm Emacs 3/49

Page 4: Emacs入门

介绍

一点历史

• 1970年,(Editing MACroS)诞生于MIT人工智能实验室

• 1984年,Stallman开发 GNU Emacs用来代替 Gosling Emacs• 1985年 3月 20日,Version 13作为第一个 public release• Stallman维护至 2008年,现在的维护者是 Stefan Monnier和 Chong Yidong

• 2009年,23.1发布,支持 Xft• 最新版本 23.3

@yinhm Emacs 3/49

Page 5: Emacs入门

介绍

一点历史

• 1970年,(Editing MACroS)诞生于MIT人工智能实验室• 1984年,Stallman开发 GNU Emacs用来代替 Gosling Emacs

• 1985年 3月 20日,Version 13作为第一个 public release• Stallman维护至 2008年,现在的维护者是 Stefan Monnier和 Chong Yidong

• 2009年,23.1发布,支持 Xft• 最新版本 23.3

@yinhm Emacs 3/49

Page 6: Emacs入门

介绍

一点历史

• 1970年,(Editing MACroS)诞生于MIT人工智能实验室• 1984年,Stallman开发 GNU Emacs用来代替 Gosling Emacs• 1985年 3月 20日,Version 13作为第一个 public release

• Stallman维护至 2008年,现在的维护者是 Stefan Monnier和 Chong Yidong

• 2009年,23.1发布,支持 Xft• 最新版本 23.3

@yinhm Emacs 3/49

Page 7: Emacs入门

介绍

一点历史

• 1970年,(Editing MACroS)诞生于MIT人工智能实验室• 1984年,Stallman开发 GNU Emacs用来代替 Gosling Emacs• 1985年 3月 20日,Version 13作为第一个 public release• Stallman维护至 2008年,现在的维护者是 Stefan Monnier和 Chong Yidong

• 2009年,23.1发布,支持 Xft• 最新版本 23.3

@yinhm Emacs 3/49

Page 8: Emacs入门

介绍

一点历史

• 1970年,(Editing MACroS)诞生于MIT人工智能实验室• 1984年,Stallman开发 GNU Emacs用来代替 Gosling Emacs• 1985年 3月 20日,Version 13作为第一个 public release• Stallman维护至 2008年,现在的维护者是 Stefan Monnier和 Chong Yidong

• 2009年,23.1发布,支持 Xft

• 最新版本 23.3

@yinhm Emacs 3/49

Page 9: Emacs入门

介绍

一点历史

• 1970年,(Editing MACroS)诞生于MIT人工智能实验室• 1984年,Stallman开发 GNU Emacs用来代替 Gosling Emacs• 1985年 3月 20日,Version 13作为第一个 public release• Stallman维护至 2008年,现在的维护者是 Stefan Monnier和 Chong Yidong

• 2009年,23.1发布,支持 Xft• 最新版本 23.3

@yinhm Emacs 3/49

Page 10: Emacs入门

GPL 授权,GNU项目的第一个计划。

@yinhm Emacs 4/49

Page 11: Emacs入门

介绍

特性

• 编辑器:高亮,各种语言支持• 高可定制,高可扩展(Emacs Lisp)• 各种扩展(Mode):邮件,日历,GTD,IRC• 支持本星球上大多数操作系统• Self-documenting• 还可以煮咖啡:CoffeeMode

@yinhm Emacs 5/49

Page 12: Emacs入门

介绍

特性

• 编辑器:高亮,各种语言支持

• 高可定制,高可扩展(Emacs Lisp)• 各种扩展(Mode):邮件,日历,GTD,IRC• 支持本星球上大多数操作系统• Self-documenting• 还可以煮咖啡:CoffeeMode

@yinhm Emacs 5/49

Page 13: Emacs入门

介绍

特性

• 编辑器:高亮,各种语言支持• 高可定制,高可扩展(Emacs Lisp)

• 各种扩展(Mode):邮件,日历,GTD,IRC• 支持本星球上大多数操作系统• Self-documenting• 还可以煮咖啡:CoffeeMode

@yinhm Emacs 5/49

Page 14: Emacs入门

介绍

特性

• 编辑器:高亮,各种语言支持• 高可定制,高可扩展(Emacs Lisp)• 各种扩展(Mode):邮件,日历,GTD,IRC

• 支持本星球上大多数操作系统• Self-documenting• 还可以煮咖啡:CoffeeMode

@yinhm Emacs 5/49

Page 15: Emacs入门

介绍

特性

• 编辑器:高亮,各种语言支持• 高可定制,高可扩展(Emacs Lisp)• 各种扩展(Mode):邮件,日历,GTD,IRC• 支持本星球上大多数操作系统

• Self-documenting• 还可以煮咖啡:CoffeeMode

@yinhm Emacs 5/49

Page 16: Emacs入门

介绍

特性

• 编辑器:高亮,各种语言支持• 高可定制,高可扩展(Emacs Lisp)• 各种扩展(Mode):邮件,日历,GTD,IRC• 支持本星球上大多数操作系统• Self-documenting

• 还可以煮咖啡:CoffeeMode

@yinhm Emacs 5/49

Page 17: Emacs入门

介绍

特性

• 编辑器:高亮,各种语言支持• 高可定制,高可扩展(Emacs Lisp)• 各种扩展(Mode):邮件,日历,GTD,IRC• 支持本星球上大多数操作系统• Self-documenting• 还可以煮咖啡:CoffeeMode

@yinhm Emacs 5/49

Page 18: Emacs入门

Emacs VS vi

@yinhm Emacs 6/49

Page 19: Emacs入门

...endless...

@yinhm Emacs 7/49

Page 20: Emacs入门

拜 Emacs教

@yinhm Emacs 8/49

Page 21: Emacs入门

To join the Church of Emacs, you need only say theConfession of the Faith three times:

There is no system but GNU,and Linux is one of its kernels.

@yinhm Emacs 9/49

Page 22: Emacs入门

学习 Emacs

@yinhm Emacs 10/49

Page 23: Emacs入门

基本概念

@yinhm Emacs 11/49

Page 24: Emacs入门

基本概念

Buffer

• 持有正在编辑的文件• 打开文件创建对应的文件关联 Buffer• 启动 Emacs自动打开 *scrach* Buffer,不和文件关联• 启动 Emacs自动打开名为 *Messages* Buffer,类似 STDOUT• 察看文档打开特殊点的 *Help* Buffer• 可以列出、选择、关闭 Buffers

@yinhm Emacs 12/49

Page 25: Emacs入门

基本概念

Buffer• 持有正在编辑的文件

• 打开文件创建对应的文件关联 Buffer• 启动 Emacs自动打开 *scrach* Buffer,不和文件关联• 启动 Emacs自动打开名为 *Messages* Buffer,类似 STDOUT• 察看文档打开特殊点的 *Help* Buffer• 可以列出、选择、关闭 Buffers

@yinhm Emacs 12/49

Page 26: Emacs入门

基本概念

Buffer• 持有正在编辑的文件• 打开文件创建对应的文件关联 Buffer

• 启动 Emacs自动打开 *scrach* Buffer,不和文件关联• 启动 Emacs自动打开名为 *Messages* Buffer,类似 STDOUT• 察看文档打开特殊点的 *Help* Buffer• 可以列出、选择、关闭 Buffers

@yinhm Emacs 12/49

Page 27: Emacs入门

基本概念

Buffer• 持有正在编辑的文件• 打开文件创建对应的文件关联 Buffer• 启动 Emacs自动打开 *scrach* Buffer,不和文件关联

• 启动 Emacs自动打开名为 *Messages* Buffer,类似 STDOUT• 察看文档打开特殊点的 *Help* Buffer• 可以列出、选择、关闭 Buffers

@yinhm Emacs 12/49

Page 28: Emacs入门

基本概念

Buffer• 持有正在编辑的文件• 打开文件创建对应的文件关联 Buffer• 启动 Emacs自动打开 *scrach* Buffer,不和文件关联• 启动 Emacs自动打开名为 *Messages* Buffer,类似 STDOUT

• 察看文档打开特殊点的 *Help* Buffer• 可以列出、选择、关闭 Buffers

@yinhm Emacs 12/49

Page 29: Emacs入门

基本概念

Buffer• 持有正在编辑的文件• 打开文件创建对应的文件关联 Buffer• 启动 Emacs自动打开 *scrach* Buffer,不和文件关联• 启动 Emacs自动打开名为 *Messages* Buffer,类似 STDOUT• 察看文档打开特殊点的 *Help* Buffer

• 可以列出、选择、关闭 Buffers

@yinhm Emacs 12/49

Page 30: Emacs入门

基本概念

Buffer• 持有正在编辑的文件• 打开文件创建对应的文件关联 Buffer• 启动 Emacs自动打开 *scrach* Buffer,不和文件关联• 启动 Emacs自动打开名为 *Messages* Buffer,类似 STDOUT• 察看文档打开特殊点的 *Help* Buffer• 可以列出、选择、关闭 Buffers

@yinhm Emacs 12/49

Page 31: Emacs入门

基本概念

Minibuffer

• 输入命令区域• 命令读取参数• 文件列表选择• 可以 TAB补全• 可以编辑• Minibuffer历史

@yinhm Emacs 13/49

Page 32: Emacs入门

基本概念

Minibuffer• 输入命令区域

• 命令读取参数• 文件列表选择• 可以 TAB补全• 可以编辑• Minibuffer历史

@yinhm Emacs 13/49

Page 33: Emacs入门

基本概念

Minibuffer• 输入命令区域• 命令读取参数

• 文件列表选择• 可以 TAB补全• 可以编辑• Minibuffer历史

@yinhm Emacs 13/49

Page 34: Emacs入门

基本概念

Minibuffer• 输入命令区域• 命令读取参数• 文件列表选择

• 可以 TAB补全• 可以编辑• Minibuffer历史

@yinhm Emacs 13/49

Page 35: Emacs入门

基本概念

Minibuffer• 输入命令区域• 命令读取参数• 文件列表选择• 可以 TAB补全

• 可以编辑• Minibuffer历史

@yinhm Emacs 13/49

Page 36: Emacs入门

基本概念

Minibuffer• 输入命令区域• 命令读取参数• 文件列表选择• 可以 TAB补全• 可以编辑

• Minibuffer历史

@yinhm Emacs 13/49

Page 37: Emacs入门

基本概念

Minibuffer• 输入命令区域• 命令读取参数• 文件列表选择• 可以 TAB补全• 可以编辑• Minibuffer历史

@yinhm Emacs 13/49

Page 38: Emacs入门

基本概念

Major mode

• 只能有一个• 确定主要编辑模式• python, ruby, lisp, yaml等

@yinhm Emacs 14/49

Page 39: Emacs入门

基本概念

Major mode• 只能有一个

• 确定主要编辑模式• python, ruby, lisp, yaml等

@yinhm Emacs 14/49

Page 40: Emacs入门

基本概念

Major mode• 只能有一个• 确定主要编辑模式

• python, ruby, lisp, yaml等

@yinhm Emacs 14/49

Page 41: Emacs入门

基本概念

Major mode• 只能有一个• 确定主要编辑模式• python, ruby, lisp, yaml等

@yinhm Emacs 14/49

Page 42: Emacs入门

基本概念

Minor modes

• 配合Major mode可以有多个• 提供辅助编辑功能• 比如 auto-complete, yasnippet

@yinhm Emacs 15/49

Page 43: Emacs入门

基本概念

Minor modes• 配合Major mode可以有多个

• 提供辅助编辑功能• 比如 auto-complete, yasnippet

@yinhm Emacs 15/49

Page 44: Emacs入门

基本概念

Minor modes• 配合Major mode可以有多个• 提供辅助编辑功能

• 比如 auto-complete, yasnippet

@yinhm Emacs 15/49

Page 45: Emacs入门

基本概念

Minor modes• 配合Major mode可以有多个• 提供辅助编辑功能• 比如 auto-complete, yasnippet

@yinhm Emacs 15/49

Page 46: Emacs入门

用 Emacs,需忘记鼠标,无视菜单

@yinhm Emacs 16/49

Page 47: Emacs入门

快捷键控制一切

@yinhm Emacs 17/49

Page 48: Emacs入门

EMACS = ?

@yinhm Emacs 18/49

Page 49: Emacs入门

EMACS =Escape-Meta-Alt-Control-Shift

@yinhm Emacs 19/49

Page 50: Emacs入门

快捷键

标记方式

• [Ctrl]键以大写 C表示,[Meta]键 [Alt]键以大写M表示• C-f 表示:按住 CRTL 键再输入 f• C-x-b 表示:按住 CRTL 键再输入 x,释放,输入 b• C-x C-s 表示:按住 CRTL 键再输入 x,释放,按住 CTRL 后输入 s

@yinhm Emacs 20/49

Page 51: Emacs入门

快捷键

标记方式

• [Ctrl]键以大写 C表示,[Meta]键 [Alt]键以大写M表示

• C-f 表示:按住 CRTL 键再输入 f• C-x-b 表示:按住 CRTL 键再输入 x,释放,输入 b• C-x C-s 表示:按住 CRTL 键再输入 x,释放,按住 CTRL 后输入 s

@yinhm Emacs 20/49

Page 52: Emacs入门

快捷键

标记方式

• [Ctrl]键以大写 C表示,[Meta]键 [Alt]键以大写M表示• C-f 表示:按住 CRTL 键再输入 f

• C-x-b 表示:按住 CRTL 键再输入 x,释放,输入 b• C-x C-s 表示:按住 CRTL 键再输入 x,释放,按住 CTRL 后输入 s

@yinhm Emacs 20/49

Page 53: Emacs入门

快捷键

标记方式

• [Ctrl]键以大写 C表示,[Meta]键 [Alt]键以大写M表示• C-f 表示:按住 CRTL 键再输入 f• C-x-b 表示:按住 CRTL 键再输入 x,释放,输入 b

• C-x C-s 表示:按住 CRTL 键再输入 x,释放,按住 CTRL 后输入 s

@yinhm Emacs 20/49

Page 54: Emacs入门

快捷键

标记方式

• [Ctrl]键以大写 C表示,[Meta]键 [Alt]键以大写M表示• C-f 表示:按住 CRTL 键再输入 f• C-x-b 表示:按住 CRTL 键再输入 x,释放,输入 b• C-x C-s 表示:按住 CRTL 键再输入 x,释放,按住 CTRL 后输入 s

@yinhm Emacs 20/49

Page 55: Emacs入门

快捷键

文件操作

Keystroke Emacs Command Name Standard NameC-x C-f find-file 打开...C-x k kill-buffer 关闭C-x C-s save-buffer 保存C-x C-c save-buffers-kill-terminal 保存并退出C-x ← previous-buffer 前一个 TabC-x → next-buffer 下一个 Tab

@yinhm Emacs 21/49

Page 56: Emacs入门

快捷键

文件操作

Keystroke Emacs Command Name Standard NameC-x C-f find-file 打开...

C-x k kill-buffer 关闭C-x C-s save-buffer 保存C-x C-c save-buffers-kill-terminal 保存并退出C-x ← previous-buffer 前一个 TabC-x → next-buffer 下一个 Tab

@yinhm Emacs 21/49

Page 57: Emacs入门

快捷键

文件操作

Keystroke Emacs Command Name Standard NameC-x C-f find-file 打开...C-x k kill-buffer 关闭

C-x C-s save-buffer 保存C-x C-c save-buffers-kill-terminal 保存并退出C-x ← previous-buffer 前一个 TabC-x → next-buffer 下一个 Tab

@yinhm Emacs 21/49

Page 58: Emacs入门

快捷键

文件操作

Keystroke Emacs Command Name Standard NameC-x C-f find-file 打开...C-x k kill-buffer 关闭C-x C-s save-buffer 保存

C-x C-c save-buffers-kill-terminal 保存并退出C-x ← previous-buffer 前一个 TabC-x → next-buffer 下一个 Tab

@yinhm Emacs 21/49

Page 59: Emacs入门

快捷键

文件操作

Keystroke Emacs Command Name Standard NameC-x C-f find-file 打开...C-x k kill-buffer 关闭C-x C-s save-buffer 保存C-x C-c save-buffers-kill-terminal 保存并退出

C-x ← previous-buffer 前一个 TabC-x → next-buffer 下一个 Tab

@yinhm Emacs 21/49

Page 60: Emacs入门

快捷键

文件操作

Keystroke Emacs Command Name Standard NameC-x C-f find-file 打开...C-x k kill-buffer 关闭C-x C-s save-buffer 保存C-x C-c save-buffers-kill-terminal 保存并退出C-x ← previous-buffer 前一个 Tab

C-x → next-buffer 下一个 Tab

@yinhm Emacs 21/49

Page 61: Emacs入门

快捷键

文件操作

Keystroke Emacs Command Name Standard NameC-x C-f find-file 打开...C-x k kill-buffer 关闭C-x C-s save-buffer 保存C-x C-c save-buffers-kill-terminal 保存并退出C-x ← previous-buffer 前一个 TabC-x → next-buffer 下一个 Tab

@yinhm Emacs 21/49

Page 62: Emacs入门

快捷键

光标控制(1)

Keystroke Emacs Command Name Standard KeyC-v scroll-up PageDnM-v scroll-down PageUpC-p previous-line ↑C-n next-line ↓C-b backward-char ←C-f forward-char →

@yinhm Emacs 22/49

Page 63: Emacs入门

快捷键

光标控制(1)

Keystroke Emacs Command Name Standard KeyC-v scroll-up PageDn

M-v scroll-down PageUpC-p previous-line ↑C-n next-line ↓C-b backward-char ←C-f forward-char →

@yinhm Emacs 22/49

Page 64: Emacs入门

快捷键

光标控制(1)

Keystroke Emacs Command Name Standard KeyC-v scroll-up PageDnM-v scroll-down PageUp

C-p previous-line ↑C-n next-line ↓C-b backward-char ←C-f forward-char →

@yinhm Emacs 22/49

Page 65: Emacs入门

快捷键

光标控制(1)

Keystroke Emacs Command Name Standard KeyC-v scroll-up PageDnM-v scroll-down PageUpC-p previous-line ↑

C-n next-line ↓C-b backward-char ←C-f forward-char →

@yinhm Emacs 22/49

Page 66: Emacs入门

快捷键

光标控制(1)

Keystroke Emacs Command Name Standard KeyC-v scroll-up PageDnM-v scroll-down PageUpC-p previous-line ↑C-n next-line ↓

C-b backward-char ←C-f forward-char →

@yinhm Emacs 22/49

Page 67: Emacs入门

快捷键

光标控制(1)

Keystroke Emacs Command Name Standard KeyC-v scroll-up PageDnM-v scroll-down PageUpC-p previous-line ↑C-n next-line ↓C-b backward-char ←

C-f forward-char →

@yinhm Emacs 22/49

Page 68: Emacs入门

快捷键

光标控制(1)

Keystroke Emacs Command Name Standard KeyC-v scroll-up PageDnM-v scroll-down PageUpC-p previous-line ↑C-n next-line ↓C-b backward-char ←C-f forward-char →

@yinhm Emacs 22/49

Page 69: Emacs入门

快捷键

光标控制(2)

Keystroke Emacs Command NameM-f forward-wordM-b backward-wordC-a move-beginning-of-lineC-e move-end-of-lineM-a backward-sentenceM-e forward-sentence

@yinhm Emacs 23/49

Page 70: Emacs入门

快捷键

光标控制(2)

Keystroke Emacs Command NameM-f forward-word

M-b backward-wordC-a move-beginning-of-lineC-e move-end-of-lineM-a backward-sentenceM-e forward-sentence

@yinhm Emacs 23/49

Page 71: Emacs入门

快捷键

光标控制(2)

Keystroke Emacs Command NameM-f forward-wordM-b backward-word

C-a move-beginning-of-lineC-e move-end-of-lineM-a backward-sentenceM-e forward-sentence

@yinhm Emacs 23/49

Page 72: Emacs入门

快捷键

光标控制(2)

Keystroke Emacs Command NameM-f forward-wordM-b backward-wordC-a move-beginning-of-line

C-e move-end-of-lineM-a backward-sentenceM-e forward-sentence

@yinhm Emacs 23/49

Page 73: Emacs入门

快捷键

光标控制(2)

Keystroke Emacs Command NameM-f forward-wordM-b backward-wordC-a move-beginning-of-lineC-e move-end-of-line

M-a backward-sentenceM-e forward-sentence

@yinhm Emacs 23/49

Page 74: Emacs入门

快捷键

光标控制(2)

Keystroke Emacs Command NameM-f forward-wordM-b backward-wordC-a move-beginning-of-lineC-e move-end-of-lineM-a backward-sentence

M-e forward-sentence

@yinhm Emacs 23/49

Page 75: Emacs入门

快捷键

光标控制(2)

Keystroke Emacs Command NameM-f forward-wordM-b backward-wordC-a move-beginning-of-lineC-e move-end-of-lineM-a backward-sentenceM-e forward-sentence

@yinhm Emacs 23/49

Page 76: Emacs入门

快捷键

编辑操作

Keystroke Emacs Command Name Standard NameC-k kill-lineC-M-@ mark-sexpC-w → kill-region 剪切M-w ← kill-ring-save 拷贝C-y ← yank 粘贴C-/ ← undo 撤销

@yinhm Emacs 24/49

Page 77: Emacs入门

快捷键

编辑操作

Keystroke Emacs Command Name Standard NameC-k kill-line

C-M-@ mark-sexpC-w → kill-region 剪切M-w ← kill-ring-save 拷贝C-y ← yank 粘贴C-/ ← undo 撤销

@yinhm Emacs 24/49

Page 78: Emacs入门

快捷键

编辑操作

Keystroke Emacs Command Name Standard NameC-k kill-lineC-M-@ mark-sexp

C-w → kill-region 剪切M-w ← kill-ring-save 拷贝C-y ← yank 粘贴C-/ ← undo 撤销

@yinhm Emacs 24/49

Page 79: Emacs入门

快捷键

编辑操作

Keystroke Emacs Command Name Standard NameC-k kill-lineC-M-@ mark-sexpC-w → kill-region 剪切

M-w ← kill-ring-save 拷贝C-y ← yank 粘贴C-/ ← undo 撤销

@yinhm Emacs 24/49

Page 80: Emacs入门

快捷键

编辑操作

Keystroke Emacs Command Name Standard NameC-k kill-lineC-M-@ mark-sexpC-w → kill-region 剪切M-w ← kill-ring-save 拷贝

C-y ← yank 粘贴C-/ ← undo 撤销

@yinhm Emacs 24/49

Page 81: Emacs入门

快捷键

编辑操作

Keystroke Emacs Command Name Standard NameC-k kill-lineC-M-@ mark-sexpC-w → kill-region 剪切M-w ← kill-ring-save 拷贝C-y ← yank 粘贴

C-/ ← undo 撤销

@yinhm Emacs 24/49

Page 82: Emacs入门

快捷键

编辑操作

Keystroke Emacs Command Name Standard NameC-k kill-lineC-M-@ mark-sexpC-w → kill-region 剪切M-w ← kill-ring-save 拷贝C-y ← yank 粘贴C-/ ← undo 撤销

@yinhm Emacs 24/49

Page 83: Emacs入门

快捷键

其它

Keystroke Emacs Command Name Standard NameM-x execute-extended-command 执行命令C-g keyboard-quit 取消输入

@yinhm Emacs 25/49

Page 84: Emacs入门

Emacs 速成指南:C-h t

@yinhm Emacs 26/49

Page 85: Emacs入门

忘了快捷键?

记住这个:C-h b

@yinhm Emacs 27/49

Page 86: Emacs入门

GNU Emacs Reference Card

@yinhm Emacs 28/49

Page 87: Emacs入门

从 emacs-starter-kit 开始

@yinhm Emacs 29/49

Page 88: Emacs入门

为什么?

@yinhm Emacs 30/49

Page 89: Emacs入门

每个人都有一个自己的 Emacs

@yinhm Emacs 31/49

Page 90: Emacs入门

很好很强大,很糟很分裂

@yinhm Emacs 32/49

Page 91: Emacs入门

emacs-starter-kit 是好的开始

@yinhm Emacs 33/49

Page 92: Emacs入门

emacs-starter-kit

提供什么

• 主要针对动态语言• 合理的配置• ELPA包管理• 支持多种 Emacs版本

@yinhm Emacs 34/49

Page 93: Emacs入门

emacs-starter-kit

提供什么

• 主要针对动态语言• 合理的配置• ELPA包管理• 支持多种 Emacs版本

@yinhm Emacs 34/49

Page 94: Emacs入门

emacs-starter-kit

默认支持语言

• lisp• python• javascript• perl• ...

@yinhm Emacs 35/49

Page 95: Emacs入门

emacs-starter-kit

默认支持语言

• lisp• python• javascript• perl• ...

@yinhm Emacs 35/49

Page 96: Emacs入门

代码在 github上,很容易用来创建自己的分支,扩展其它各种支持

@yinhm Emacs 36/49

Page 97: Emacs入门

github上 Popular Forked第五名

@yinhm Emacs 37/49

Page 98: Emacs入门

还是很分裂,尽量少分裂

@yinhm Emacs 38/49

Page 99: Emacs入门

emacs-starter-kit

我的分支

• 超靓主题(来自 emacs-on-rails mode作者 dima)• 移植 debian-start,增强启动控制: /emacs.d/init.d/• ruby-test-mode,rsense等增强 ruby支持• rope, ropemacs增强 python支持• 增强 javascript支持:flymake• arc mode• 更多个人口味...

@yinhm Emacs 39/49

Page 100: Emacs入门

emacs-starter-kit

我的分支

• 超靓主题(来自 emacs-on-rails mode作者 dima)• 移植 debian-start,增强启动控制: /emacs.d/init.d/• ruby-test-mode,rsense等增强 ruby支持• rope, ropemacs增强 python支持• 增强 javascript支持:flymake• arc mode• 更多个人口味...

@yinhm Emacs 39/49

Page 101: Emacs入门

emacs-starter-kit

补充:从软件仓库安装的包和Modes

• emacs23, emacs23-bin-common, emacs23-common• emacsen-common• emacs-goodies-el• css-mode• erlang-mode• ess• html-helper-mode• mmm-mode• org-mode• python-mode

@yinhm Emacs 40/49

Page 102: Emacs入门

emacs-starter-kit

补充:从软件仓库安装的包和Modes• emacs23, emacs23-bin-common, emacs23-common• emacsen-common• emacs-goodies-el• css-mode• erlang-mode• ess• html-helper-mode• mmm-mode• org-mode• python-mode

@yinhm Emacs 40/49

Page 103: Emacs入门

emacs-starter-kit

常用 mode:ido

• 自 emacs2.2开始并入官方发布• C-x b 进入当前所有 Buffers列表• 替换 C-x C-f 打开文件• Tab补全,Fuzz• http:

//www.emacswiki.org/emacs/InteractivelyDoThings

@yinhm Emacs 41/49

Page 104: Emacs入门

emacs-starter-kit

常用 mode:ido• 自 emacs2.2开始并入官方发布• C-x b 进入当前所有 Buffers列表• 替换 C-x C-f 打开文件• Tab补全,Fuzz• http:

//www.emacswiki.org/emacs/InteractivelyDoThings

@yinhm Emacs 41/49

Page 105: Emacs入门

emacs-starter-kit

常用 mode:auto-complete

• 可视界面• 轻量高效• 高可扩展,结合各种补全:rope,rsense, gccsence等• http://cx4a.org/software/auto-complete/

@yinhm Emacs 42/49

Page 106: Emacs入门

emacs-starter-kit

常用 mode:auto-complete• 可视界面• 轻量高效• 高可扩展,结合各种补全:rope,rsense, gccsence等• http://cx4a.org/software/auto-complete/

@yinhm Emacs 42/49

Page 107: Emacs入门

emacs-starter-kit

常用 mode:yasnippet

• 代码模版• 默认支持语言:C, C++, Python, Ruby 以及更多• 语法受 TextMate 影响

@yinhm Emacs 43/49

Page 108: Emacs入门

emacs-starter-kit

常用 mode:yasnippet• 代码模版• 默认支持语言:C, C++, Python, Ruby 以及更多• 语法受 TextMate 影响

@yinhm Emacs 43/49

Page 109: Emacs入门

emacs-starter-kit

常用 mode:org

• 可以用来 GTD• 保存 Notes• 项目管理

@yinhm Emacs 44/49

Page 110: Emacs入门

emacs-starter-kit

常用 mode:org• 可以用来 GTD• 保存 Notes• 项目管理

@yinhm Emacs 44/49

Page 111: Emacs入门

demo

@yinhm Emacs 45/49

Page 112: Emacs入门

Emacs Lisp(Lisp dialect)

@yinhm Emacs 46/49

Page 113: Emacs入门

Emacs lisp

常见配置可能用到的

• nil and t• setq• quote• require• hook• local-set-key

@yinhm Emacs 47/49

Page 114: Emacs入门

Emacs lisp

常见配置可能用到的

• nil and t

• setq• quote• require• hook• local-set-key

@yinhm Emacs 47/49

Page 115: Emacs入门

Emacs lisp

常见配置可能用到的

• nil and t• setq

• quote• require• hook• local-set-key

@yinhm Emacs 47/49

Page 116: Emacs入门

Emacs lisp

常见配置可能用到的

• nil and t• setq• quote

• require• hook• local-set-key

@yinhm Emacs 47/49

Page 117: Emacs入门

Emacs lisp

常见配置可能用到的

• nil and t• setq• quote• require

• hook• local-set-key

@yinhm Emacs 47/49

Page 118: Emacs入门

Emacs lisp

常见配置可能用到的

• nil and t• setq• quote• require• hook

• local-set-key

@yinhm Emacs 47/49

Page 119: Emacs入门

Emacs lisp

常见配置可能用到的

• nil and t• setq• quote• require• hook• local-set-key

@yinhm Emacs 47/49

Page 120: Emacs入门

Questions?

@yinhm Emacs 48/49

Page 121: Emacs入门

Links

• http://www.gnu.org/software/emacs/• http://en.wikipedia.org/wiki/Emacs• http://en.wikipedia.org/wiki/Editor_war• St IGNUcius• GNU Emacs Reference Card• emacs starter kit• 我的 emacs starter kit

@yinhm Emacs 49/49

Page 122: Emacs入门

About

Created in LATEX using the beamer class, TeX Live and Emacs.

Published under the Creative Commons Attribution 3.0 Licensehttp://creativecommons.org/licenses/by/3.0/

by @yinhmhttp://yinhm.appspot.com

Document version March 20, 2011

@yinhm Emacs 50/49