相关动态
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://zleialh.xhstdz.com/news/4746.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://zleialh.xhstdz.com/mobile/ , 查看更多   
最新文章
国际站:SEO Checker诊断工具助力商家诊断详情页,提升seo效果
国际站商家看过来:众所周知,一个优质的商品描述,可以提升买家转化的同时,还可以带来更多免费流量,从而让商家获得更多询盘和
【富蕴网站优化】在网站优化中有哪些常用的网站推广方式?
1、,百度,google的优化,针对,音乐,mp3下载,电影、游戏等一级,二级,甚至关键字优化。Seo介绍的网站很多,就不在这里重复
公众号简单爬虫--把公众号文章全部转载到网站(二)
根据上一篇的方法,我们得到了一个获取列表信息的地址,而且是用get方法就可以的地址.那么事情就变得很简单了,就是常规的爬取信息
1.【typecho】个人博客安装—使用群晖演示
哈喽,大家好今天给大家带来的是最近在群晖上安装一个博客的演示。先给大家看一下安装好之后的效果。虽然说现在使用博客和看博客
SEO优化攻略,揭秘网站排名提升与流量最大化技巧
本文深入解析SEO优化策略,通过关键词研究、高质量内容创作、链接建设等技术手段,帮助提升网站在搜索引擎中的排名,从而实现流
【HMNOTE搜狗手机输入法下载】小米HMNOTE搜狗手机输入法12.1.1免费下载
搜狗输入法,拥有超大中文词库,输入更加精准,智能。搜狗智能旺仔带你用表达,斗图,妙语,输入更加有趣。******特色功能******
vivo S19 Pro:全焦段人像拍照的5G游戏续航新宠
在智能手机市场日益同质化的今天,vivo S19 Pro以其独特的全焦段人像拍照功能、强大的5G性能以及出色的游戏续航能力,成为了众多
12月12日,星期四, 每天60秒读懂全世界!
新闻来源:百度热搜榜1. 25年老员工被开除 法院判赔98万近日,工作25年的李某被安排学习员工手册,全程玩手机遭公司开除,引发热
刚子扯谈:网站运营在左 技术在右 真TM扯
2013年8月5日,雨未下,天猴焖开片语:今天的扯谈内容是我转载我Java学习交流群里面一个哥们,当然我推荐他加入了朋友的网络分析
做seo营销网站/百度惠生活商家入驻
假定我们定义了一个Persion的message type,我们的用法可能如下定义 和 package tutorial;message Person {required int
相关文章