相关动态
Emacs详细教程
2024-11-10 18:12

 

Emacs详细教程

内容提要

1.Emacs是什么

2. Emacs能做什么

3. Emacs的界面

4.基本概念--命令

5. 基本概念--快捷键

6. 基本概念--模式

1.Emacs是什么

其实很难给Emacs下一个定义。正统的说法也许是"Emacs即Editor MACroS(宏编辑器,是一种文本编辑器"。

最初人们认为Emacs是一个编辑器(Editor),与Vim一起并称为两大神器,据说Vim是编辑器之神而Emacs是神之编辑器,又据说世界上的程序员分三种,一种使用Emacs,一种使用vim,剩余的是其它。

也有人认为Emacs是一个架构在编辑器上的集成环境,除了最基本的编辑功能,还可以完成文件管理、终端模拟、浏览网页、收发邮件、编译程序等工作,以及煮咖啡。

更有人说Emacs是伪装成编辑器的操作系统,甚至说Emacs是一种信仰。

Emacs最初由RichardStallman在1975年开发,之后产生了众多的衍生版本,而目前使用得最多的两个版本是RichardStallman在1984年开发的GNUEmacs和1991年由JamieZawinski写成的XEmacs。Emacs可谓历史悠久,目前的GNU Emacs的版本是23.4。一部Emacs的历史,等于一部计算机史,一部世界黑客史。本文不想将编辑器大战的战火烧到这里,所以还是就此打住,来看看Emacs能做什么。

2. Emacs能做什么

王垠师兄如是说:

据我所知,Emacs 的能力包括: 1.    编辑文本 2.    编辑程序 3.    作为其它程序的界面 4.    作为操作系统 5.    煮咖啡

Emacs是一个具有超强扩展性,超强定制性的操作平台,它能做什么取决于你对它的定制和扩展。Emacs之所以强大,就来源于其近乎无限的可定制性和可扩展性。

3. Emacs的界面

未定制的Emacs如下图所示:

0 1329317327v33B

整个窗口在Emacs中叫做frame,图形界面下的Emacs可以打开多个frame。每个frame从上到下分成3部分,分别是缓冲区,状态栏和回显区。

缓冲区是编辑的主区域,但是在这里操作的还不是真正的文件,而是文件的一个缓存(buffer)。只有执行写入操作时,才会将buffer的内容写入到文件。缓冲区可以分成多个区域,缓冲不同的内容。这些区域在Emacs中成为"窗口"。 缓冲区之下是状态栏,显示当前的一些状态信息,比如图中从左至右依次为: U: 当前的文件编码是UTF-8, 如果是GBK会显示c **: 文件状态,**表示未保存,--表示可写,%%表示只读 Emacs1: 是当前编辑的文件的名称 All: 表示当前缓冲区已经显示文件的所有内容,否则会显示比如Bot,表示处于文件的末尾处 L23: 当前光标所在的行数 fundamental: 当前的模式 等等,不同发行版的Emacs显示的状态栏内容可能会有所不同。 最下面是回显区,提示当前正在进行的操作。比如"文件已保存"之类的信息。如果一个命令没有输入完,这里还会显示已经输入的指令,提示用户。

4.基本概念--命令

对Emacs所有的操作都是通过调用命令实现的。对于一些常用的命令,会定义快捷键以便快速使用。 不管是否有快捷键,都可以通过M-x command 的方式执行命令。(M-x即Alt+x,是一种快捷键,后面会有介绍)比如输入回车,相当于: M-x newline 通过M-x执行命令时,可以使用 TAB 补全,使用 M-p 上翻, M-n 下翻。 Emacs中的取消通常是连按三下ESC: ESC ESC ESC (M-x keyboard-escape-quit) 但是在命令执行过程中,有可能该命令无法使用(比如有些命令是交互式的,需要输入一些参数,所以中止一条命令的执行最好使用C-g (M-x keyboard-quit)。

5. 基本概念--快捷键

本质上,快捷键只是一种发送命令的方法! Emacs的快捷键通常以组合键的方式定义。如M-x 表示Alt+x。前面的字母M代表修饰符,Emacs定义的修饰符如下: C-:Control M-: Alt(应该是meta,在 PC 上,meta键 通常对应 Alt 键) C-M-: 同时按住 Ctrl 和 Alt  S-:Shift RET:Return TAB:Tab ESC:Esc,等价于M-。比如,C-M-r ,等价于ESC C-r SPC:空格键 DEL:退格键 Delete:删除键 上面提到了ESC C-r。这是一种组合方式,表示先按ESC,再按C-r。Emacs中的很多快捷键定义成组合的方式。如 C-x C-c(M-x save-buffers-kill-emacs) 此外还有些命令可以传递参数,在Emacs的表示法中用 (#) 代表。如: C-u (#) C-f 代表重复#次C-f

6.基本概念--模式

Emacs是一种“有模式”的编辑器。如果用过Vim就很容易理解。不过Emacs中的模式分成主要模式(major mode)和次要模式(minor mode)两种。 主要模式由文件类型决定,每个buffer打开文件时会根据文件类型决定其主要模式。常见的主要模式有

fundamental-mode:缺省的 Emacs 模式,拥有最少设置和绑定 text-mode:编辑文本的基本模式 c-mode:用于编辑 C 程序源代码 lisp-interaction-mode:用于编辑和编译 Lisp 代码 ptex-mode:用于编辑 TeX 文档

次要模式可以组合到主要模式中,常见的次要模式比如

abbrev-mode:用于生成和使用缩写 auto-fill-mode:用于自动文字回绕、填充较长的行和段落 line-number-mode:显示当前行号 overwrite-mode:覆盖模式,代替默认的插入模式

可以通过命令来指定模式:M-x  mode_name 对于一个buffer来说,当前的主要模式只能有一种,当指定主要模式时,原来的主要模式会被替换;而当前的次要模式可以有多种。 如果输入的模式包含在当前模式中,对于主要模式,会清空所有的次要模式;对于次要模式,会关闭这个次要模式。 模式的变化在状态栏中可以看到。

GNU的软件大多有丰富的帮助系统,学习GNU的软件时,首先学习如何使用其帮助系统,往往事半功倍。Emacs的帮助文档很多,并大部分都在C-h开头的组合键中。

首先是C-h ,关于帮助系统的“帮助”。改命令会打开一个新的frame,如下图

0 1329368000o9y4

从该文档中摘录常用的帮助功能如下

快捷键命令说明C-h ? 关于帮助系统的帮助,可以通过SPC和DEL键滚动,通过ESC退出C-h tM-x help-with-tutorial进入 《Emacs 快速指南》C-h rM-x info-emacs-manualEmacs使用手册C-h iM-x info《Emacs说明》C-h aM-x apropos-command搜索命令》C-h vM-x describe-variable查看变量说明》C-h fM-x describe-function查看函数说明》C-h mM-x describe-mode查看当前mode的相关文档,包含mode中的命令、快捷键等》C-h k KEYSM-x describe-key KEYS查看快捷键对应的命令及其简要说明,比如C-h k C-x C-c,会告诉你C-x C-c是做什么的》C-h c KEYSM-x describe-key-briefly查看键绑定说明》C-h wM-x where-is查看某个命令对应的快捷键》C-h bM-x describe-bindings查看当前buffer所有的快捷键列表》KEYS C-h 查看当前buffer中以某个快捷键序列开头的快捷键列表,比如C-c C-h》 M-x apropos查看匹配某个关键词的任何东西,如函数,变量,命令,模式等》

1. C-h t 《Emacs快速指南》是迅速上手最好的文档。

2. 使用帮助时,可能会分割出其它frame,可以通过 C-x 1 关闭。

 

 

掌握了Emacs的帮助系统,就可以自己随时学习了。但是还是应该有一个主线。尽管Emacs能做的事情很多,但首先Emacs是一个编辑器。所以还是应该从文本编辑的功能开始。完成本节的内容后,可以应付日常的大部分编辑工作。 内容提要

  • 文件操作
  • 光标定位
  • 输入删除
  • 复制粘贴
  • 撤销重做

 

1.文件操作

文件操作的快捷键都集中在C-x"菜单"中:

快捷键(C-x)     命令(M-x)                                          说明 C-x C-f              find-file                                              打开文件或录 C-x C-c             save-buffers-kill-emacs                 保存退出 C-x C-z             iconify-or-deiconify-frame             挂起(最小化) C-x C-f              find-file                                              打开文件、目录 C-x C-r             find-file-read-only                            以只读模式打开 C-x i                  insert-file                                           插入文件 C-x C-s             save-buffer                                       保存 C-x s                 save-some-buffers                          保存所有未保存的缓冲区 C-x C-w            write-file                                            另存为文件 C-x RET r         revert-buffer-with-coding-system  以指定编码读取文件 C-x RET f         set-buffer-file-coding-system         以指定编码保存文件 revert-buffer                                      恢复到原始状态 C-x d                dired                                                   进入目录列表模式 C-x C-d            list-directory                                      获取文件列表(简洁

 

2. 光标定位

向前    向后    向下    向上         翻页                           C-v    M-v 字符        C-f       C-b     C-n    C-p 单词        M-f       M-b 句           M-a      M-e 行           C-a       C-e 段落       M-{        M-} 缓冲区   M-<      M-> 其它: M-g M-g     (goto-line)                      跳转到某行 M-x              (goto-char)                    跳转到字符位置:      C-M-l          (reposition-window)    将当前行卷至页面中部 C-l               (recenter)                       刷新页面,将将当前行卷至页面中部 (使用数字参数指定行) M-r M-x      (move-to-window-line) 移动光标至页面中间的行 (使用数字参数指定行

3.输入删除

输入很简单,在缓冲区直接敲键盘就OK了(这个不像Vim

删除

向前        向后 字符     C-d         DEL 单词     M-d        M-DEL  行         C-k(删除至行尾) 整行                   C-S-backspace 按表达式删除    C-M-k 区块     C-w 删除连续空格     M-x delete-horizontal-space 注1:在PC中,用Backspace代替DEL 注2:单词、行、区块的删除是kill,相当于剪切,会被放入kill-ring,字符及空格的删除是delete

4.复制粘贴

复制前要先选择:C-@开始区块选择,然后移动光标,选中的区域会高亮 剪切:前面"删除"的部分包括了一些剪切操作,对区块的剪切用C-w 复制:区块复制用M-w,至于复制1行,复制1个单词之类的功能,自己想办法吧:( 粘贴: C-y:粘贴kill-ring堆栈的最后一次的内容 C-y 之后可以继续M-y, 对Kill-ring中的内容依次召回

5.撤销重做

撤销: C-/  (每插入20个字符,视为一个 undo 的单位) 重做: C-/ 后,依次输入C-g C-/ 就可以redo

 

 

 

前面学习了Emacs的基本编辑功能。为了让编辑更有效率,还需要了解

  • 窗口管理
  • 缓冲区管理
  • 搜索和替换
  • 批量处理

 

窗口管理

C-x 2           split-window-vertically           水平分割 C-x 3           split-window-horizontally       竖直分割 C-x 1           delete-other-window             只保留当前窗格 C-x 0           delete-window                      关闭当前窗格 C-x o           other-window                        切换窗格 C-M-v           scroll-other-window             滚动下一个窗格

缓冲区管理

Emacs中,打开新的buffer,不会关闭原有buffer,而是需要手工操作: C-x C-b          list-buffers               查看缓冲区列表 C-x b              switch-to-buffer       切换缓冲区 C-x k               kill-buffer                关闭缓冲区 其他:可以参考ibuffer.el扩展

搜索和替换

Emacs中的搜索包括增量搜索和一般搜索。增加搜索是每次在前一次搜索的结果基础上继续搜索。在增量搜索时,如果上一次搜索之后进行了其他操作,则需要连续按两次快捷键才能召回关键词。 可以选中区块后在区块内进行搜索  

增量搜索

C-s M-x         isearch-forward                向前增量搜索  C-r M-x          isearch-backward            向后增量搜索  C-M-s M-x     isearch-forward-regexp    正则表达式向前增量搜索  C-M-r M-x     isearch-backward-regexp 正则表达式向后增量搜索

一般搜索

M-x               search-forward                 向前搜索    M-x               search-backward              向后搜索   M-x               search-forward-regexp     正则表达式向前搜索   M-x               search-backward-regexp 正则表达式向后搜索

替换

M-x                replace-string                  替换    M-x                replace-regexp                正则表达式替换

询问替换

M-% M-x       query-replace              询问替换  C-M-% M-x   query-replace-regexp 正则表达式询问替换

取消搜索

C-g 取消搜索,光标返回搜索前的位置 RET结束搜索,光标停留在当前位置。  

批量处理

批量处理的命令应该有很多,这里列出2个: 选中区域, M-x untabify:将 TAB 字符转换为空格 选中区域, M-x indent-region:对齐文本块

 

 

 

博客搬家,加上换办公区,Emacs的学习计划就耽搁了。

可能是因为年纪大了,记性大不如以前,新学的很多Emacs快捷键/命令都记不住。所以要整理一个常用命令清单(与当初学习Vim一样),并且打印出来贴在电脑边。

刚开始不可贪多,所以只整理了: Key Mapping, important, Help, File, Cursor,  Cut/Del/Copy/Paste, Buffer, Window, Undo/Redo, Search/Replace几个部分,控制在2页A4纸之内。

附图如下

不知道谁能告诉我,博客园可以上传附件吗

 

 

 

继续Emacs学习计划。这是“初学者”阶段的最后一篇。完成本节的内容,就可以向“中级计划”进军了 : )

经过一段时间的使用,已经大体适应了Emacs的快捷键,不过还是要参考命令备忘表。

Emacser通常要对Emacs进行定制,使用起来才会爽。据说Vimer嘲笑Emacser的一个理由就是

Emacser如果丢了配置文件就什么都干不了。

好吧好吧,这些争论和我没什么关系,我只是恰好原来用Vim现在喜欢上了Emacs。还是回到Emacs的简单定制吧。

1. 配置文件

Emacs的配置文件在~/.emacs。现在就用Emacs打开这个文件吧,如果没有就创建一个。首先改一下颜色配置,让Emacs看起来更酷一些:

(set-background-color "black") ;; 使用黑色背景 (set-foreground-color "white") ;; 使用白色前景 (set-face-foreground 'region "green")  ;; 区域前景颜色设为绿色 (set-face-background 'region "blue") ;; 区域背景色设为蓝色

尽管可以重启Emacs使配置生效,但更快捷的方式是在打开~/.emacs的时候执行命令M-x eval-buffer,就可以使配置文件立即生效。

2. 安装插件

Emacs和Vim都有大量的插件,一些经久不衰、广泛使用的插件组合起来,就体现出一种"集体智慧"。

Emacs的插件一般都是一个以el为后缀名的文件。首先要指定一个插件目录,比如~/.emacs.d/lisps然后在~/.emacs中指定插件目录和要使用的插件:

(add-to-list 'load-path "~/.emacs.d/lisp/") (require 'pluginname')

还是玩一下颜色设置。前面的方法只是进行了一些简单的颜色设置,但是有热心人写了插件,配置好了很多方案,不仅仅是前景背景色,还包括语法高亮等。从这里下载,解压后将color-theme.el文件和themes文件夹复制到插件目录,然后修改配置文件:

(add-to-list 'load-path "~/.emacs.d/lisp/")

(require 'color-theme)

(color-theme-initialize)  

M-x eval-buffer使配置生效后,可以执行插件提供的命令:M-x color-theme-select RET进入配色方案选择界面。我选择的是Classic

Screenshot

选好之后,你可能希望将配色方案设成默认,还是修改配置文件。在配色方案选择界面中选择主题后按d,会出现该配置的提示信息,比如

color-theme-classic is an interactive Lisp function in `color-theme-library.el'. (color-theme-classic) Color theme by Frederic Giroud, created 2001-01-18. AntiqueWhite on darkslategrey scheme.  based on Gnome 2, with my favorit color foreground-color and fontlock color.

将类似(color-theme-classic)的内容添加到.emacs中,就可以每次启动Emacs时自动选择配色方案了。

3. 进阶

不要迷信自己,不要一开始就尝试自己定制Emacs。一定要参考甚至抄袭大牛们的设置。比如Steve Purcell。学习他们的配置,不仅能让你直接学会“最佳实践”,更能加深你对Emacs的理解。

最后再回顾一下《Emacs初学者的学习计划》

1. 要学习必须有一个计划

2. 认识Emacs,Emacs不仅仅是一个编辑器

3. 使用Emacs的帮助系统,随用随学

4. 掌握了基本的功能,就可以开始用,而且要多用

5. 其实你可以更快地编辑

6. 命令太多记不住,可以打印出来随时查阅

7. 了解如何定制Emacs,并参考大师的配置

    以上就是本篇文章【Emacs详细教程】的全部内容了,欢迎阅览 ! 文章地址:http://fswenzheng.xhstdz.com/news/4746.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://fswenzheng.xhstdz.com/mobile/ , 查看更多   
最新文章
科大讯飞AI智能写作:全方位助力文案创作与优化,解决多种写作需求
在数字化浪潮的推动下智能写作成为了提升工作效率、优化内容品质的关键工具。科大讯飞智能写作以其强大的语言解决能力和丰富的创
支付宝小程序搜索排名优化,算法规则基础了解
小程序市场可谓是百花齐放,争奇斗艳。小程序搜索排名优化则为小程序获利提供了强大的支持。做优化首先要知道平台的规则&#
解析国内AI写作平台:创新背后的挑战与突破
一、国内 AI 写作平台兴起近年来,随着人工智能技术的飞速发展,国内 AI 写作平台如雨后春笋般涌现。这些平台利用深度学习、自然
解析百度的绿萝算法怎样识别买卖链接
  作为站长,大家都知道,百度于2013年2月20日推出了最新的搜索引擎算法,起名叫绿萝,公告称这个新算法主要是打击买卖链接的
揭秘刷神马SEO排名秘籍,轻松提升网站搜索地位!
深度解析刷神马SEO排名真相与策略,分享实用技巧,助力网站高效提升排名,轻松占领搜索引擎前列!随着互联网的快速发展,SEO(搜
亚马逊运营必备实用工具
常常看见有卖家小伙伴提问利用什么做数据分析、用什么选品等话题。这里强烈建议各位亚马逊卖家以及准备入驻亚马逊卖家的朋友收藏
如何打造一个高效的营销型企业网站,营销型企业网站的核心特点是什么
打造高效营销型企业网站,需关注用户体验、SEO优化、内容质量及数据分析。核心特点为:用户导向、易用性高、转化路径明确。如何
佛山专业SEO优化助力企业电商营销新飞跃
佛山商品SEO优化公司,凭借专业技术和丰富经验,为企业提供全方位互联网营销解决方案。通过精准关键词优化、内容营销、数据分析
ks秒单关注(快速秒单关注,提升用户转化率)
KS秒单关注是一种快速秒单关注的方法,旨在提升用户的转化率。这种方法通过一系列的策略和技巧,能够快速吸引用户的关注,并使他
密码技术应用员理论知识题及答案.docVIP
PAGEPAGE1密码技术应用员理论知识题及答案单选题1.密码系统试运行报告中,记录的每个问题均应具备唯一标识,其作用是()。A、描
相关文章