学习Emacs系列教程

emacs最简单入门,只要10分钟


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

<pre class="brush:plain;">emacs最简单入门,只要10分钟

 windwiny @2013

无聊的时候又看到鼓吹emacs的文章,以前也有几次想尝试,结果都是玩不到10分钟就退出删除了。

这次硬着头皮,打开几篇文章都看完一遍,再动手操作。这次好像有些进展

最大的发现,emacs里所有操作都是LISP指令,包括上下左右移动光标,这意味着什么? “emacs是一个伪装成编辑器的操作系统”这句话应该就是这么理解吧,所有的操作都是指令,emacs就像操作系统一样,平时不用关注,实际上打交道的都是操作系统上运行的各种程序。emacs也是这样,执行LISP函数就行了,增加各种插件就是增加LISP的函数让你调用而已,各人的配置就是把各种指令绑定快捷键,方便自己使用。emacs的插件功能有执行shell命令,telnet,ftp,文件管理器,收邮件,浏览网页,煮咖啡,擦皮鞋,等等。前段时间又受到黑客与画家书的鼓吹,买了本CLISP的书看,对emacs用的LISP也是越看越顺眼了。

忘掉网上其它的那些教程、手册吧,也忘掉emacs有几百种几千种命令吧。

emacs最简单入门:只要记住一个按键就行了: M-x . 按住Alt键再按x,在窗口最底下出现M-x的提示,在这里输入left-几个字符,按Tab键,出现两行提示 left-char, left-word,再输入一个c,再按Tab键,这时自动补全为left-char,按回车,如果有内容的话,当前的光标点向左移动,就像按了一个向左的方向键一样。  就这样?就这样!

就这样,发挥你的想象力,想象你现在需要做什么,把它翻译成英文单词,按 M-x,先输入几个字母,按Tab,看是否存在你想象中的指令。要取消当前操作的指令,多按几次ESC键或Ctrl-g键就取消了。

现在假设下emacs有100条指令吧,你如果想做什么事都去执行指令的话,虽然也可以,但是总比不上为常用的指令设置一个快捷键方便。现在看下默认的各种快捷键:

先来看几个简单的 forward-char  backward-char  previous-line  next-line , 很直白的命令,向前后移一个字符或向上下移一行,对应4个方向键。默认绑定的快捷键就是Ctrl加指令首字母 C-f/b/p/n。简洁直白合理极致吧。 复制一些内容到窗口上去,多按几次按键,多按几次手指上的肌肉就不会忘记了。就像用了十多年的五笔输入法一样,看着键盘时一个字也打不也来了,字根键码早忘光了。只有两只手都放在键盘上时,看着汉字,手指自然就打出来了。

再看下 forward-word  backward-word ,向前后一个单词,默认绑定快捷键为Alt加指令首字母 M-f/b。也很合理吧。

如果要快速移动到当前行首行尾,或者是一句话的首尾部呢? move-beginning-of-line move-end-of-line  backward-sentence  forward-sentence ,默认绑定的快捷键是 C-a/e  M-a/e,好像也还算合理吧。

好了,只要理解了emacs里做任何操作都是执行LISP函数,就算是入门了。emacs被称为复杂难学是因为默认设置了很多快捷键,不容易一下记住。现在只要记住用M-x来执行命令,快捷键一律忽视,等熟悉了LISP指令及对应的功能,想为它设置一个快捷键时,再看看默认设置的快捷键是否合你的胃口,改或不改你决定。

对emacs感兴趣或者不感兴趣现在就可以决定了。什么学emacs需要很强的耐心那些都是胡扯,我敢打赌只要有好奇心的人就会继续往下看。

现在可以打开帮助菜单下的教程,跟着操作一遍,学习一些最常用的快捷键了。多动手,肌肉记忆比大脑记忆好用。

----入门教程结束----

想象一下你使用其它编辑器时使用到的各种功能快捷键,把它和emacs默认设置的快捷键比较一下,哪种设置比较合理。

emacs里的各种快捷键设置都是无害的,意思就是你改掉一个快捷键对应的功能,命令却还在,永远可以用M-x来直接执行。如果是其它编辑器就比较麻烦,可能这个操作的功能就找不回来了。

一些默认快捷键

C-代表按住Ctrl键

M-代表按住Alt键,也可以用按一下ESC放开代替

最先要记住的

M-x <cmd>      输入指令执行,在输入时用Tab可以自动补全或列出项目

C-g            取消当前操作指令

C-h k <key>    查看当前按键绑定的指令及介绍

移动插入点(光标)

C-n/p/b/f      到 下一行、上一行、前一字符、后一字符

M-b/f          到 前、后一单词

C-a/e          到 行首、末

M-a/e          到 句首、末

M-         到 文件首、末

C-v/M-v        下、上翻屏

C-l        循环 将当前光标行显示在窗口下、中、上位置

C-u <num> <xx> 重复执行之后的 xx 命令 num 次,不输入num默认为4

C-u C-v        向下滚动4

编辑

Back/C-d       删除 前、后字符

M-Back/M-d     移除 前、后单词

C-k/M-k        移除到 行末、句末

C-/            undo/redo

C-x u          undo/redo

C-w            剪切

C-y        召回(粘贴)(粘贴移除的、复制、剪切的内容)

C-c        复制(emacs一般也默认定制了与OS的剪切复制粘贴相同的快捷键)

查找

C-s

  C-s 查找下一个

  C-r 查找上一下

  C-g 一次返回,二次结束查找

  回车    停止到当前查找到的内容

替换

M-%

标记

M[email protected]

文件操作

C-x C-c        退出emacs

C-x C-f        打开文件

C-x C-s        保存文件

C-x C-v        在当前缓冲区重新打开一个文件,可以用于清除undo历史!!

C-x 1          最大化当前缓冲,关闭其它

C-x 2/3        垂直、水平创建新缓冲区

C-x o          切换到其它缓冲区

C-x C-b        列出缓冲区

C-x b          提示输入缓冲区名称,切换当前窗口的缓冲区

C-x k          删除当前缓冲区

C-j        换行回车,有些模式下比较直接回车好用,有增加缩进之类的功能

------

理解一些概念

buffer

  缓冲区,内存中的数据,打开文件时读入内容到内存,修改后保存才会修改到磁盘上的文件。

window

  窗口,缓冲区的一个展示区域

frame

  OS上的一个emacs程序窗口

mode 模式

  mode有主模式,辅助模式,主模式就像vim中设置当前filetype一样,当前编辑的是ruby或者python源代码,根据不同文件类型,设置按Tab缩进时缩进不同的字符数,把不同的词当作关键字时行语法高亮等等,同一时间只能选一个主模式。试着多开几个窗口,执行text-mode ruby-mode python-mode试下。emacs打开文件时会自动根据文件扩展名或内容检查并设置主模式。

  辅助模式就是窗口是否要自动换行,是否显示行号等,辅助模式可以多个同时启用。

undo

  EMACS 中想要将已经做过的动作放弃,以恢复原状。

  EMACS 所提供的 undo,可以连续恢复最近使用过的指令。

  undo 的顺序是最新使用过的指令最先被 undo ,第二次使用 undo 则恢复第二新的指令,任何指令的输入(除了 undo 本身之外) 都会使指令输入的顺序重整, 这也同时影响 undo 的顺序。

  使用 undo 有一个限制,就是 undo 只能 undo 对缓冲区内容造成改变的指令。对于只是改变游标动作的指令,是无法以 undo 来恢复旧观。若所有修改过内容的指令,都以 undo 恢复原状后, 再一次使用 undo 的指令,echo area 会出现如下的讯息:No further undo information.

当使用了 undo 之后,还想要在 redo 这个已被 undo 的动作时, 有一个技巧可以达成如此的效果。

 1.首先键入一个不会改变缓冲区内容的指令(如光标移动的指令),使原来

 2.存放指令的顺序因新指令的加入而改变。

 3.再使用一次 undo 的指令,就可以达到 redo 的效果了。

undo的行为很难描述,示例:

 新建一个文件

 执行几个修改内容的指令 <1回车2回车3回车>, 这时undo历史里有6条记录

 undo顺序为654321, 继续undo则提示No further undo information

 按下左右方向键(虽然移不动光标),这时undo历史里有12条记录了,前6条undo就变成redo了,顺序123456654321

 再按下方向键,undo历史记录数量再翻倍

 

emacs的undo不会丢失任何操作,你先做一些操作,undo,再做另一些操作,如果是其它编辑器,第一次undo的动作就失踪了,emacs里却一直存在着,原因同上。多试几次就明白了。

----完----

才用了两天emacs,学会的东西就上面这些了,不过现在却有很兴奋的感觉,记了这篇笔记。并且有很强烈的感觉,感觉以后都离不开emacs了,被emacs控制了~~

</xx></num></key></cmd></pre>

学习Emacs系列教程

http://www.cnblogs.com/robertzml/tag/Emacs/

学习Emacs系列教程 :目录

学习Emacs系列教程(十):多窗口

学习Emacs系列教程(九):缓冲管理

学习Emacs系列教程(八):查找替换

学习Emacs系列教程(七):剪切板

学习Emacs系列教程(六):编辑(3)

学习Emacs系列教程(五):编辑(2)—— 标记

学习Emacs系列教程(四):Minibuffer

学习Emacs系列教程(三):编辑(1)

学习Emacs系列教程(二):导航

学习Emacs系列教程(一):基本使用

时间: 2024-11-09 00:40:38

学习Emacs系列教程的相关文章

轻松学习LINUX系列教程推出

本系列多媒体教程已完成的博文: 1.轻松学习Linux之入门篇 http://chenguang.blog.51cto.com/350944/449214 2.轻松学习Linux之本地安装系统 (分区规划.光驱安装.硬盘ISO文件安装)http://chenguang.blog.51cto.com/350944/466760 3.通过网络方式安装linux的五种方法http://chenguang.blog.51cto.com/350944/439579 4.轻松学习Linux之详解系统引导过程

[转]Emacs 系列教程

  上回开了个头,简单的介绍了Emacs的一些基本常识,这回继续说基本常识,怎么移动你的光标.可能有人会说,这上下左右键不是很好用吗,还用你来讲.呶,Emacs的强大在于你能够只使用键盘左边那堆键来完成任何事情(不包括顶上的ESC和Function),这也是Emacs的设计宗旨. 为了试验这些按键,大家在进入Emacs时选择页面中间的Emacs Tutorial,这里面可以随便乱按不用担心出什么岔子.一.基本导航 看下面这张图片: 可以这么记,p-previous,n-next,b-backwa

MongoDB系列教程(八):GridFS存储详解

MongoDB系列教程(八):GridFS存储详解 GridFS简介 mongoDB的文档以BSON格式存储,支持二进制的数据类型,当我们把二进制格式的数据直接保存到mongoDB的文档中.但是当文件太大时,例如图片和视频等文件,每个文档的长度是有限的,于是mongoDb会提供了一种处理大文件的规范--GridFS. GridFS实现原理 在GridFS数据库中,默认使用fs.chunks 和fs.files来存储文件,其中fs.files集合存放文件的信息,fs.chunks存放文件的数据,一

Python爬虫学习系列教程

Python爬虫学习系列教程 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫感兴趣的童鞋有帮助,如果有机会期待与大家的交流. Python版本:2.7 一.爬虫入门 1. Python爬虫入门一之综述 2. Python爬虫入门二之爬虫基础了解 3. Python爬虫入门三之Urllib库的基本使用 4. Python爬虫入门四之Urllib库

推介一个学习JAVA的系列教程-狗鱼IT教程

介绍一个学JAVA的零基础学习JAVA的网站,推介一个学习JAVA的系列教程-狗鱼IT教程 下面是java的系教程: 1?[java教程]Java 教程 2?[java教程]Java 简介 3?[java教程]Java 开发环境配置 4?[java教程]Java 基础语法 5?[java教程]Java 对象和类 6?[java教程]Java 基本数据类型 7?[java教程]Java 变量类型 8?[java教程]Java 修饰符 9?[java教程]Java 运算符 10?[java教程]Ja

基于TensorFlow的深度学习系列教程 2——常量Constant

前面介绍过了Tensorflow的基本概念,比如如何使用tensorboard查看计算图.本篇则着重介绍和整理下Constant相关的内容. 基于TensorFlow的深度学习系列教程 1--Hello World! 常量的概念 在tensorflow中,数据分为几种类型: 常量Constant.变量Variable.占位符Placeholder.其中: 常量:用于存储一些不变的数值,在计算图创建的时候,调用初始化方法时,直接保存在计算图中 变量:模型训练的参数,比如全连接里面的W和bias 占

Java中注解学习系列教程-2

在上一篇文章中,我们讲解了:Java中注解的定义.JDK中内置注解.第三方注解. 本文是注解系列教程中的第二篇.来看看今天主要内容: 0e5bfb282785e6d50be398c29a4d9267.png 1:注解的分类 2:元注解说明 3:自定义注解声明 一:注解的分类 c03d16d65e241c90e669f077a650bb64.png 注解根据运行机制.来源.功能来分: 1.1:按照运行机制来分,即时注解存在于程序的哪个阶段 e0c7d7da2e69a56219d73cd8be1c4

Python高级核心技术97讲 系列教程 学习 教程??

Python高级核心技术97讲 系列教程 学习 教程 Python的标准整数类型是最通用的数字类型.在大多数32位机器上,标准整数类型的取值范围是-2**31到2**31-1.Python的长整数类型能表达的数值仅仅与你的机器支持的(虚拟)内存大小有关,换句话说,Python能轻松表达很大的整数.长整型类型是标准整型类型的超集,当程序需要使用比标准整型更大的整型时,可以使用长整型类型.在一个整型值后面加个L,表示这个整型是长整型.这两种整数类型正在逐渐统一为一种.剩下的一种整型类型是布尔整型.即

Bootstrap学习系列教程

本系列教程是自己在工作中使用到而记录的,如有错误之处,请给与指正 第一章 准备工作 第二章 时间控件(DateTime Picker) 第三章 续:时间控件(TimePicker) 第四章 标签页 第五章 使用 Bootstrap Typeahead 组件(百度下拉效果) 第六章 使用 Bootstrap Typeahead 组件(百度下拉效果)(续) 第七章 模态框 第八章 让Bootstrap轮播插件carousel支持左右滑动手势的三种方法 第九章 BootstrapTable的使用