Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Emacs入门

5.822 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
  • Loggen Sie sich ein, um Kommentare anzuzeigen.

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

×