Emacs入门

5,165 views
4,996 views

Published on

Published in: Technology
1 Comment
12 Likes
Statistics
Notes
  • 很好的emacs入门
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
5,165
On SlideShare
0
From Embeds
0
Number of Embeds
404
Actions
Shares
0
Downloads
123
Comments
1
Likes
12
Embeds 0
No embeds

No notes for slide

Emacs入门

  1. 1. Emacs 入门 @yinhm GZLUG GZTechParty March 20, 2011 @yinhm Emacs 1/49
  2. 2. GNU Emacs is an extensible,customizable text editor —and more. @yinhm Emacs 2/49
  3. 3. 介绍一点历史 @yinhm Emacs 3/49
  4. 4. 介绍 一点历史• 1970 年, (Editing MACroS)诞生于 MIT 人工智能实验室 @yinhm Emacs 3/49
  5. 5. 介绍 一点历史• 1970 年, (Editing MACroS)诞生于 MIT 人工智能实验室• 1984 年,Stallman 开发 GNU Emacs 用来代替 Gosling Emacs @yinhm Emacs 3/49
  6. 6. 介绍 一点历史• 1970 年, (Editing MACroS)诞生于 MIT 人工智能实验室• 1984 年,Stallman 开发 GNU Emacs 用来代替 Gosling Emacs• 1985 年 3 月 20 日,Version 13 作为第一个 public release @yinhm Emacs 3/49
  7. 7. 介绍 一点历史• 1970 年, (Editing MACroS)诞生于 MIT 人工智能实验室• 1984 年,Stallman 开发 GNU Emacs 用来代替 Gosling Emacs• 1985 年 3 月 20 日,Version 13 作为第一个 public release• Stallman 维护至 2008 年,现在的维护者是 Stefan Monnier 和 Chong Yidong @yinhm Emacs 3/49
  8. 8. 介绍 一点历史• 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 @yinhm Emacs 3/49
  9. 9. 介绍 一点历史• 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
  10. 10. GPL 授权,GNU 项目的第一个计 划。 @yinhm Emacs 4/49
  11. 11. 介绍特性 @yinhm Emacs 5/49
  12. 12. 介绍 特性• 编辑器:高亮,各种语言支持 @yinhm Emacs 5/49
  13. 13. 介绍 特性• 编辑器:高亮,各种语言支持• 高可定制,高可扩展(Emacs Lisp) @yinhm Emacs 5/49
  14. 14. 介绍 特性• 编辑器:高亮,各种语言支持• 高可定制,高可扩展(Emacs Lisp)• 各种扩展(Mode):邮件,日历,GTD,IRC @yinhm Emacs 5/49
  15. 15. 介绍 特性• 编辑器:高亮,各种语言支持• 高可定制,高可扩展(Emacs Lisp)• 各种扩展(Mode):邮件,日历,GTD,IRC• 支持本星球上大多数操作系统 @yinhm Emacs 5/49
  16. 16. 介绍 特性• 编辑器:高亮,各种语言支持• 高可定制,高可扩展(Emacs Lisp)• 各种扩展(Mode):邮件,日历,GTD,IRC• 支持本星球上大多数操作系统• Self-documenting @yinhm Emacs 5/49
  17. 17. 介绍 特性• 编辑器:高亮,各种语言支持• 高可定制,高可扩展(Emacs Lisp)• 各种扩展(Mode):邮件,日历,GTD,IRC• 支持本星球上大多数操作系统• Self-documenting• 还可以煮咖啡:CoffeeMode @yinhm Emacs 5/49
  18. 18. Emacs VS vi @yinhm Emacs 6/49
  19. 19. ...endless... @yinhm Emacs 7/49
  20. 20. 拜 Emacs 教 @yinhm Emacs 8/49
  21. 21. 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
  22. 22. 学习 Emacs @yinhm Emacs 10/49
  23. 23. 基本概念 @yinhm Emacs 11/49
  24. 24. 基本概念Buffer @yinhm Emacs 12/49
  25. 25. 基本概念 Buffer• 持有正在编辑的文件 @yinhm Emacs 12/49
  26. 26. 基本概念 Buffer• 持有正在编辑的文件• 打开文件创建对应的文件关联 Buffer @yinhm Emacs 12/49
  27. 27. 基本概念 Buffer• 持有正在编辑的文件• 打开文件创建对应的文件关联 Buffer• 启动 Emacs 自动打开 *scrach* Buffer,不和文件关联 @yinhm Emacs 12/49
  28. 28. 基本概念 Buffer• 持有正在编辑的文件• 打开文件创建对应的文件关联 Buffer• 启动 Emacs 自动打开 *scrach* Buffer,不和文件关联• 启动 Emacs 自动打开名为 *Messages* Buffer,类似 STDOUT @yinhm Emacs 12/49
  29. 29. 基本概念 Buffer• 持有正在编辑的文件• 打开文件创建对应的文件关联 Buffer• 启动 Emacs 自动打开 *scrach* Buffer,不和文件关联• 启动 Emacs 自动打开名为 *Messages* Buffer,类似 STDOUT• 察看文档打开特殊点的 *Help* Buffer @yinhm Emacs 12/49
  30. 30. 基本概念 Buffer• 持有正在编辑的文件• 打开文件创建对应的文件关联 Buffer• 启动 Emacs 自动打开 *scrach* Buffer,不和文件关联• 启动 Emacs 自动打开名为 *Messages* Buffer,类似 STDOUT• 察看文档打开特殊点的 *Help* Buffer• 可以列出、选择、关闭 Buffers @yinhm Emacs 12/49
  31. 31. 基本概念Minibuffer @yinhm Emacs 13/49
  32. 32. 基本概念 Minibuffer• 输入命令区域 @yinhm Emacs 13/49
  33. 33. 基本概念 Minibuffer• 输入命令区域• 命令读取参数 @yinhm Emacs 13/49
  34. 34. 基本概念 Minibuffer• 输入命令区域• 命令读取参数• 文件列表选择 @yinhm Emacs 13/49
  35. 35. 基本概念 Minibuffer• 输入命令区域• 命令读取参数• 文件列表选择• 可以 TAB 补全 @yinhm Emacs 13/49
  36. 36. 基本概念 Minibuffer• 输入命令区域• 命令读取参数• 文件列表选择• 可以 TAB 补全• 可以编辑 @yinhm Emacs 13/49
  37. 37. 基本概念 Minibuffer• 输入命令区域• 命令读取参数• 文件列表选择• 可以 TAB 补全• 可以编辑• Minibuffer 历史 @yinhm Emacs 13/49
  38. 38. 基本概念Major mode @yinhm Emacs 14/49
  39. 39. 基本概念 Major mode• 只能有一个 @yinhm Emacs 14/49
  40. 40. 基本概念 Major mode• 只能有一个• 确定主要编辑模式 @yinhm Emacs 14/49
  41. 41. 基本概念 Major mode• 只能有一个• 确定主要编辑模式• python, ruby, lisp, yaml 等 @yinhm Emacs 14/49
  42. 42. 基本概念Minor modes @yinhm Emacs 15/49
  43. 43. 基本概念 Minor modes• 配合 Major mode 可以有多个 @yinhm Emacs 15/49
  44. 44. 基本概念 Minor modes• 配合 Major mode 可以有多个• 提供辅助编辑功能 @yinhm Emacs 15/49
  45. 45. 基本概念 Minor modes• 配合 Major mode 可以有多个• 提供辅助编辑功能• 比如 auto-complete, yasnippet @yinhm Emacs 15/49
  46. 46. 用 Emacs,需忘记鼠标,无视菜单 @yinhm Emacs 16/49
  47. 47. 快捷键控制一切 @yinhm Emacs 17/49
  48. 48. EMACS = ? @yinhm Emacs 18/49
  49. 49. EMACS =Escape-Meta-Alt-Control-Shift @yinhm Emacs 19/49
  50. 50. 快捷键标记方式 @yinhm Emacs 20/49
  51. 51. 快捷键 标记方式• [Ctrl] 键以大写 C 表示,[Meta] 键 [Alt] 键以大写 M 表示 @yinhm Emacs 20/49
  52. 52. 快捷键 标记方式• [Ctrl] 键以大写 C 表示,[Meta] 键 [Alt] 键以大写 M 表示• C-f 表示:按住 CRTL 键再输入 f @yinhm Emacs 20/49
  53. 53. 快捷键 标记方式• [Ctrl] 键以大写 C 表示,[Meta] 键 [Alt] 键以大写 M 表示• C-f 表示:按住 CRTL 键再输入 f• C-x-b 表示:按住 CRTL 键再输入 x,释放,输入 b @yinhm Emacs 20/49
  54. 54. 快捷键 标记方式• [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
  55. 55. 快捷键文件操作 @yinhm Emacs 21/49
  56. 56. 快捷键文件操作 Keystroke Emacs Command Name Standard Name C-x C-f find-file 打开... @yinhm Emacs 21/49
  57. 57. 快捷键文件操作 Keystroke Emacs Command Name Standard Name C-x C-f find-file 打开... C-x k kill-buffer 关闭 @yinhm Emacs 21/49
  58. 58. 快捷键文件操作 Keystroke Emacs Command Name Standard Name C-x C-f find-file 打开... C-x k kill-buffer 关闭 C-x C-s save-buffer 保存 @yinhm Emacs 21/49
  59. 59. 快捷键文件操作 Keystroke Emacs Command Name Standard Name C-x C-f find-file 打开... C-x k kill-buffer 关闭 C-x C-s save-buffer 保存 C-x C-c save-buffers-kill-terminal 保存并退出 @yinhm Emacs 21/49
  60. 60. 快捷键文件操作 Keystroke Emacs Command Name Standard Name C-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 @yinhm Emacs 21/49
  61. 61. 快捷键文件操作 Keystroke Emacs Command Name Standard Name C-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
  62. 62. 快捷键光标控制(1) @yinhm Emacs 22/49
  63. 63. 快捷键光标控制(1) Keystroke Emacs Command Name Standard Key C-v scroll-up PageDn @yinhm Emacs 22/49
  64. 64. 快捷键光标控制(1) Keystroke Emacs Command Name Standard Key C-v scroll-up PageDn M-v scroll-down PageUp @yinhm Emacs 22/49
  65. 65. 快捷键光标控制(1) Keystroke Emacs Command Name Standard Key C-v scroll-up PageDn M-v scroll-down PageUp C-p previous-line ↑ @yinhm Emacs 22/49
  66. 66. 快捷键光标控制(1) Keystroke Emacs Command Name Standard Key C-v scroll-up PageDn M-v scroll-down PageUp C-p previous-line ↑ C-n next-line ↓ @yinhm Emacs 22/49
  67. 67. 快捷键光标控制(1) Keystroke Emacs Command Name Standard Key C-v scroll-up PageDn M-v scroll-down PageUp C-p previous-line ↑ C-n next-line ↓ C-b backward-char ← @yinhm Emacs 22/49
  68. 68. 快捷键光标控制(1) Keystroke Emacs Command Name Standard Key C-v scroll-up PageDn M-v scroll-down PageUp C-p previous-line ↑ C-n next-line ↓ C-b backward-char ← C-f forward-char → @yinhm Emacs 22/49
  69. 69. 快捷键光标控制(2) @yinhm Emacs 23/49
  70. 70. 快捷键光标控制(2) Keystroke Emacs Command Name M-f forward-word @yinhm Emacs 23/49
  71. 71. 快捷键光标控制(2) Keystroke Emacs Command Name M-f forward-word M-b backward-word @yinhm Emacs 23/49
  72. 72. 快捷键光标控制(2) Keystroke Emacs Command Name M-f forward-word M-b backward-word C-a move-beginning-of-line @yinhm Emacs 23/49
  73. 73. 快捷键光标控制(2) Keystroke Emacs Command Name M-f forward-word M-b backward-word C-a move-beginning-of-line C-e move-end-of-line @yinhm Emacs 23/49
  74. 74. 快捷键光标控制(2) Keystroke Emacs Command Name M-f forward-word M-b backward-word C-a move-beginning-of-line C-e move-end-of-line M-a backward-sentence @yinhm Emacs 23/49
  75. 75. 快捷键光标控制(2) Keystroke Emacs Command Name M-f forward-word M-b backward-word C-a move-beginning-of-line C-e move-end-of-line M-a backward-sentence M-e forward-sentence @yinhm Emacs 23/49
  76. 76. 快捷键编辑操作 @yinhm Emacs 24/49
  77. 77. 快捷键编辑操作Keystroke Emacs Command Name Standard NameC-k kill-line @yinhm Emacs 24/49
  78. 78. 快捷键编辑操作Keystroke Emacs Command Name Standard NameC-k kill-lineC-M-@ mark-sexp @yinhm Emacs 24/49
  79. 79. 快捷键编辑操作Keystroke Emacs Command Name Standard NameC-k kill-lineC-M-@ mark-sexpC-w → kill-region 剪切 @yinhm Emacs 24/49
  80. 80. 快捷键编辑操作Keystroke Emacs Command Name Standard NameC-k kill-lineC-M-@ mark-sexpC-w → kill-region 剪切M-w ← kill-ring-save 拷贝 @yinhm Emacs 24/49
  81. 81. 快捷键编辑操作Keystroke Emacs Command Name Standard NameC-k kill-lineC-M-@ mark-sexpC-w → kill-region 剪切M-w ← kill-ring-save 拷贝C-y ← yank 粘贴 @yinhm Emacs 24/49
  82. 82. 快捷键编辑操作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
  83. 83. 快捷键其它Keystroke Emacs Command Name Standard NameM-x execute-extended-command 执行命令C-g keyboard-quit 取消输入 @yinhm Emacs 25/49
  84. 84. Emacs 速成指南:C-h t @yinhm Emacs 26/49
  85. 85. 忘了快捷键? 记住这个:C-h b @yinhm Emacs 27/49
  86. 86. GNU Emacs Reference Card @yinhm Emacs 28/49
  87. 87. 从 emacs-starter-kit 开始 @yinhm Emacs 29/49
  88. 88. 为什么?@yinhm Emacs 30/49
  89. 89. 每个人都有一个自己的 Emacs @yinhm Emacs 31/49
  90. 90. 很好很强大,很糟很分裂 @yinhm Emacs 32/49
  91. 91. emacs-starter-kit 是好的开始 @yinhm Emacs 33/49
  92. 92. emacs-starter-kit 提供什么 @yinhm Emacs 34/49
  93. 93. emacs-starter-kit 提供什么• 主要针对动态语言• 合理的配置• ELPA 包管理• 支持多种 Emacs 版本 @yinhm Emacs 34/49
  94. 94. emacs-starter-kit 默认支持语言 @yinhm Emacs 35/49
  95. 95. emacs-starter-kit 默认支持语言• lisp• python• javascript• perl• ... @yinhm Emacs 35/49
  96. 96. 代码在 github 上,很容易用来创建自己的分支,扩展其它各种支持 @yinhm Emacs 36/49
  97. 97. github 上 Popular Forked 第五名 @yinhm Emacs 37/49
  98. 98. 还是很分裂,尽量少分裂 @yinhm Emacs 38/49
  99. 99. emacs-starter-kit 我的分支 @yinhm Emacs 39/49
  100. 100. 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
  101. 101. emacs-starter-kit 补充:从软件仓库安装的包和 Modes @yinhm Emacs 40/49
  102. 102. 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
  103. 103. emacs-starter-kit 常用 mode:ido @yinhm Emacs 41/49
  104. 104. 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
  105. 105. emacs-starter-kit 常用 mode:auto-complete @yinhm Emacs 42/49
  106. 106. emacs-starter-kit 常用 mode:auto-complete• 可视界面• 轻量高效• 高可扩展,结合各种补全:rope,rsense, gccsence 等• http://cx4a.org/software/auto-complete/ @yinhm Emacs 42/49
  107. 107. emacs-starter-kit 常用 mode:yasnippet @yinhm Emacs 43/49
  108. 108. emacs-starter-kit 常用 mode:yasnippet• 代码模版• 默认支持语言:C, C++, Python, Ruby 以及更多• 语法受 TextMate 影响 @yinhm Emacs 43/49
  109. 109. emacs-starter-kit 常用 mode:org @yinhm Emacs 44/49
  110. 110. emacs-starter-kit 常用 mode:org• 可以用来 GTD• 保存 Notes• 项目管理 @yinhm Emacs 44/49
  111. 111. demo@yinhm Emacs 45/49
  112. 112. Emacs Lisp(Lisp dialect) @yinhm Emacs 46/49
  113. 113. Emacs lisp 常见配置可能用到的 @yinhm Emacs 47/49
  114. 114. Emacs lisp 常见配置可能用到的• nil and t @yinhm Emacs 47/49
  115. 115. Emacs lisp 常见配置可能用到的• nil and t• setq @yinhm Emacs 47/49
  116. 116. Emacs lisp 常见配置可能用到的• nil and t• setq• quote @yinhm Emacs 47/49
  117. 117. Emacs lisp 常见配置可能用到的• nil and t• setq• quote• require @yinhm Emacs 47/49
  118. 118. Emacs lisp 常见配置可能用到的• nil and t• setq• quote• require• hook @yinhm Emacs 47/49
  119. 119. Emacs lisp 常见配置可能用到的• nil and t• setq• quote• require• hook• local-set-key @yinhm Emacs 47/49
  120. 120. Questions? @yinhm Emacs 48/49
  121. 121. 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
  122. 122. About Created in L TEX using the beamer class, TeX Live and Emacs. A Published under the Creative Commons Attribution 3.0 License http://creativecommons.org/licenses/by/3.0/ by @yinhm http://yinhm.appspot.com Document version March 20, 2011 @yinhm Emacs 50/49

×