* 第八章 简单的文本编辑和特效编辑
** 文本的缩进
*** 制表符的使用
按下tab就好了……
*** 缩进整个段落
对整体缩进的段落进行重排,先定义整个段落为一个文本块,然后
M-x fill-individual-paragraps RET
*** 设置制表位
M-x edit-tab-step
*** 把制表位转换为空格
由于制表符没有一个通用的标准,所以有的时候——比如在打印时、或者换了
一个系统时制表符有可能引起一场灾难。
Emacs考虑到了这一点,在编辑时可以很方便的使用制表符,一旦编辑结束,选
取全文为文本块,输入命令
M-x untabify 把空格转换为制表符
注意!!!不能对任何一个makefile进行上述操作!
*** 缩进前导字符串的使用
使用缩进前导字符串(fill prefix)——即Emacs自动放到每行输入文本开头的
一个字。
缩进前导字符串最好是在自动换行模式下使用。
加入开始对一个备忘录文件开始进行缩进处理。在文件的第一行,手动输入
缩进值——比如说八个空格。按下
C-x . 在每行文本开头自动进行缩进处理
假设我们在第一行的开头输入的是一个string,然后进行上述操作……那么我
们得到的文本每行的开头都是那个string
怎么让它这个疯狂的东西停下来?没有太聪明的办法,只能把光标放在左边
界上,然后继续 C-x . ……
如果需要去掉先前的缩进前导字符重新排版,需要先去掉以前的缩进前导字
符,重新定义一个新的,然后按下 M-q 。命令简单但是却是我们需要的。
** 文本缩进模式
如果大量使用锁紧,就应该考虑使用Emacs的文本缩进模式(indented text
mode )。
进入文本缩进模式的同时必须进入自动换行模式。
其实这个模式知道就好了……自己tab两下就懂了
*** 文本缩进模式中的制表符
*** 对文本块进行缩进
如果已经在没有缩进的情况下录入了文本,现在又想对它们进行缩进,该怎
么办呢?如下步骤
*** 进入文本缩进模式
*** 移动到准备缩进的文本块末尾,设置文本块标记
*** 移动到准备缩进的文本块开头,用空格或者tab设置好缩进距离
*** M-C-\ 重排文本块对整个文件进行缩进
*** M-q 对文本块进行段落重排
//在这里我发现有一个命令非常有效,就是当auto-fill-mode出现混乱的情
况下,先标记整个部分,然后 M-x fill-individual-paragraphs RET
** 文本的居中
(靠!Emacs居然崩了……刚才写了一堆东西没了……看了要自己编译下才可靠)
M-s 把光标所在行居中
M-S 把光标所在段落的每一句
M-x center-region 把当前定义的文本块居中
** 插入分页符
** 矩形编辑
先选好块,注意的就是右下角必须多一个空格,然后
C-x r k 删除一个矩形并保存在矩形kill ring
C-x r d 删除一个矩形块但不保存
C-x r y 插入kill ring中的矩形
C-x r c 清除矩形kill ring内容,不保存
C-x r o 插入选中块那么大的空白块
M-x delete-rectangle擦黑板~~就是擦除并留白
** 绘制简单的图形
M-x edit-picture 进入绘图模式
C-c C-c 推出绘图模式
C-c ^
C-c ` ^ C-c '
\ ^ /
\^/
C-c< <<<<<<<<\>>>>>>>>> C-c>
/|\
/ | \
|C-c \
C-c/ |
C-c .
果然……我画图还是比较丑。这个模式让画一些简单的框图变得容易。比如说
-------------| |-------------- |--------------
| | | | | |
| 开始学习 | ---->>| 开始锻炼 ---->>| 然后睡觉... |
| | | | | |
| | | | | |
|-------------- --------------| --------------|
*** 图形模式的编辑操作
(好麻烦……有空慢慢学吧……反正不是什么重要的东西,忽略之)
** 大纲模式
*** 进入大纲模式
M-x 进入大纲模式
C-c C-n 移动到下一个标题或子菜单
C-c C-p 上一个标题或子菜单
C-c C-f 下一个同级菜单
C-c C-b 上一个同级菜单
C-c C-u 移动上一级菜单
*** 文本的显示和隐藏
大纲模式最重要的功能自已就是他能够有选择的隐藏和显示文本的不同部分,用
大纲模式查看一分厂文档的布局安排是它最精彩的功能。——把标题以外的东西全
部都隐藏起来,整个文本一目了然。
C-c C-t 把除了各级标题以外的正文都隐藏起来
C-c C-a 查看所有!这个和前一个是对整个大纲进行操作的
C-c C-d 把某级菜单隐藏起来
C-c C-s 把某级菜单显示出来
C-c C-o 把除了当前正在编辑以外的东西卷起来。这很重要
*** 文本被隐藏时的操作
要整体移动大纲模式下的东西,必须被移动文本的双方都在大纲模式下
*** 使用大纲副模式
M-x outline-minor-mode 使用大纲副模式。
在大纲副模式中,大纲命令必须都加上
C-c C-o 大纲副模式前缀
*** 对大纲模式进行定制
大纲模式是由一个名叫 outline-regexp 的变量进行控制,这个变量的只是一个
正则表达式。这个表达式的作用是匹配任何一个表体的开头部分。
*** 大纲模式的其他命令
C-c C-l 对某级标题只留下它和其下的标题
C-c C-k 显示某标题的正文及其全部下级小标题的正文(貌似
没用的说……)(恩,补充一下,还是有用的。显示的是“标题正文”)
C-c C-j 显示某标题的下一级小标题(不包括正文)
* 第九章 用Emacs设置排版标记
** 注释
这一章所介绍的东西和第十二章所介绍的 c mode 已经 fortran mode 等程序设
计语言编辑模式都有一个共同特点:即允许使用注释。按下
M-: 插入正确的注视语法
** 设置toff和nroff排版标记
(忽略之)
** 设置 tex 和 latex 排版标记
tex 和 latex都是组编辑模式。
M-x tex-mode RET 进入tex模式里面
M-x latex-mode RET 进入latex模式里面
*** 括号的配对出现
Emacs能够帮助生成配对括号
C-c { 将在文本中加入一对配对大括号并正确放置光标
C-c } 跳出花括号当前层次
M-x validate-tex-buffer RET 将在整个缓冲区范围内检查是否有尚未配对的各
种括号。
*** 引号和段落分隔
在tex模式里面输"入将使Emacs正确的输入``''这实在是一个很聪明的做法。如
果确实需要输入一个",可以
C-q " tex-insnset-quote
C-j 可以正确插入tex和latex的段落分隔符(2 RET)
上一个命令还会同时检查前一个段落里面有没有不配对的括号
*** 注释
M-: 插入正确的注释
*** 文本的排版和打印
C-c C-b 对整个编辑区进行排版处理
C-c C-l 把排版处理的结果显示在屏幕上
(打印略……)
*** latex模式和tex模式的差异
C-c C-e letex将自动插入一对
\begin{}
\end{}
并且光标房子在begin的括号中,同时输入!!
** 编写html文档在Emacs中编写
html有几个增值模式可以使用,包括 html 模式,html-helper 模式,html菜单
模式, sgml 模式……(我已经晕了……)
以下将介绍的是 html-helper 模式。
** Emacs的 html-helper 模式
*** 启动 html-helper 模式
M-x load-file RET
然后Emacs会询问要加载的文件,输入html-helper-mode.el的完整路径,然后进
入模式就好了
(没什么兴趣了……以后用到再看)
* 第十章 Emacs中的宏
** 什么是宏
在Emacs里面,宏是一组被录制下来的按键动作,可以反复的使用。我们可以使
用宏
(1)给文本设置排版标记
(2)把某个编辑缓冲区里的标题做一份大纲,复制到另外一个编辑缓冲区里面
(3)做一些查询替换无法应付的查找加替换类型操作
(4)建立索引目录
(5)重新对冲另外一个应用软件里面到进来的文件进行排版
(6)把表格从一种格式套用为另外一种格式
(7)用一个命令来完成某个程序的编译、运行、测试
** 定义宏
C-x ( 进入宏模式开始一段宏的录制
C-x ) 离开宏模式,停止录制
在录制宏的过程中,命令还是会正常执行的。也就是说,宏录制时输入的任何内
容都将被看成一个正常的命令并被执行。
C-x e 重新执行刚才录制的宏
按下一次以后,以后只要继续按e就可以继续重复执行
*** 技巧:如何创建良好的红
所谓良好的宏是那些能够在任何需要的场合都能够正确工作的宏。因此,应该在
宏里面使用绝对命令。
一般说来,好的宏是由三个部分组成的:
**** 找到准备开始工作的地方(通常利用查找操作来实现)
**** 对文本进行预订的编辑处理
**** 做好下次循环的准备工作
** 向现有的宏里增加编辑命令
C-u C-x ( 执行一次宏,在尾部等待
C-x ) 结束新的实例
** 命名并保存宏
如果需要“永久性的”宏,步骤如下
*** 录制宏
*** 输入 M-x name-last-kbd-macro RET 。
在进行这样的操作以后,Emacs会记住这个用。如果想使用这个宏,输入命
令M-x name就好
*** 如果想把这个宏定义永久的保存起来,必须把宏插入一个文件
用 C-x C-f filename RET 命令打开那个准备把宏定义插入到其中的文件,然后
用M->移动到最末尾,
*** 保存宏到文件
M-x insert-kbd-marco RET 就把宏的LISP代码插入其中了。
*** 按下 C-x C-s 保存那个文件。
** 执行一个已命名的宏
我的做法是把要使用的宏全部保存到.emacs.d目录下的_emacs_macro.el文件中
去,然后让.emcas每次都自动加载这个文件。记住自己定义的宏的名字,然后
每次
M-x macro_name 执行自己定义的宏
** 建立复杂的宏
*** 暂停宏的执行以等待键盘的输入
这个相当于对宏说,“等等,我要做点事情呢”的一个递归操作
在宏定义的过程中
C-u C-x q 表示插入一个递归操作
M-C-c 退出这个递归操作
*** 在宏里面插入一个查询
(好烦……忽略之……)
* 第十一章 对Emacs进行定制
** 键盘的订制
设定方法有好多,简单的掌握就好了
通用的方法是
(global-set-key "hotkey" 'command_name)
其中command_name就是Emacs中的LISP函数名了
hotkey的就是需要的快捷键,用几个例子说明一下:
\C-a C-a
\M-a M-a
\C-\M-a C-M-a
\C-xa C-x a
\C-A C-A(也就是C-s-a)
一个键绑定到.emacs里面以后,最后用C-x C-e来重新载入.emacs
在这里我发现了一些绑定的方法。比如f1 f2等的功能键,如果用的是"\C-"等的
方法无论如何都搞不定……我是说在我这里搞不定。
与使用两种方法:
一种是 [(f1)]
还有一种是 (kbd "")
*** 特殊键
更复杂的键盘定制任务就是把命令键绑定到终端的特殊键上。
我们需要做的第一件事就是——找出终端上的特殊字符都会产生哪些字符代码
我们如果需要这些特殊键产生的特殊代码,方法是:
先进入到一个空白的缓冲区中,比如*scratca*,然后按下
C-q 显示特殊字符的预设键
再按下特殊字符,这样特殊字符就会出现真面目
(当然,在我这里很多特殊键都搞不定……)
** 终端支持
(现在与我没有什么关系……)
** Emacs的LISP程序包
C-h p 查看自己的电脑上有哪些程序包可用
**自动模式的定制
* 第十二章 程序员的Emacs
** 格式
M-j 回车并且到下一行产生适当的缩进
C-M-\ 对文本块的每一行都进行缩进(段落重排)
M-m 光标移动到当前行的第一个非空白字符上
M-^ 把当前行合并到上一行去
M-; 产生通用注释
M-j 到下一行产生注释
M-x comment-region 把块注释掉
M-x kill-comment 消除注释
** c和c++模式
*** 移动命令
M-a 当前语句的开头
M-e 当前语句的结尾
M-q 把注释进行段落重排
M-C-a 移到光标所在函数开头
M-C-a 函数结尾
M-C-h 把整个函数选取为文本块
C-c C-q 对整个函数进行
C-c C-u 移动到当前预处理器条件的开始位置
C-c C-p 移动到上一个预处理器
C-c C-n 移动到下一个预处理器
*** 对代码的缩进样式进行定制
M-x C-set-style tab 从中选择一个就好了
*** c和c++模式的附加功能
这里有两个很有意思的新功能,叫做“自动开始新行”和“饥饿的删除键”:
"自动开始新行"就是每次按下;或者{时正确的移动到下一行的缩进处
"饥饿的删除键"就是每次删除空格时删除所有。
我在_emacs_mode.el中加入相应语句使之自动开启
*** c++模式的差异
c++模式中为了避免输入:自动缩进的麻烦定义了一个附加命令C-c : 来输入::
*** etags
从原理上讲,etags不过是一个面向多文件对象的搜索工具。使用方法很简单,
先用etags建立一个函数标签表,然后
M-x visit-tags-table RET 让Emacs知道这个函数
M-. 查找某个字符串的函数
如果光标正好在某个函数名上,Emacs会自动去查找这个函数的定义
M-, 如果有几个同名函数查找下一个
M-x tag-search 输入正则表达式查找全体文件里的东东
M-x tag-query-replace 全体文件查找-替换
C-u M-x tag-query-replace 进行精确匹配的查找替换
M-x list-tags RET 显示所有函数
** LISP模式
***共有三种LISP模式。分别是
(1)emacs-LISP-mode,用来编辑Emacs LISP代码.el
(2)用来编辑供其他LISP系统实用的LISP代码.l或者.LISP
(3)用来编辑和运行Emacs LISP代码
这三种编辑模式对S-表达式的支持。(所谓S-表达式是指正确的LISP表达式,其
中list是S-表达式的特殊形式),以下是关于S-表达式的命令
M-C-b 移动到上一个S-表达式
M-C-f 移动到下一个S-表达式
M-C-t 交换光标签后两个S-表达式
M-C-@ 选取S-表达式为文本块
M-C-k 删除光标后面那个S-表达式
M-C-n 移动到下个列表
M-C-p 移动到上个列表
M-C-d 向前移动,进入下一级括号层次
M-C-u 向后移动,退出当前括号层次
M-C-a 当前函数的开头
M-C-e 当前函数的结尾
M-C-h 标记整个函数为文本块
在LISP编辑模式中按下 M-; 就可以输入注释,但是需要注意的是,为了避免
Emacs对格式的设定,所以当注释独占一行的时候,最好使用多于一个的 ;
*** Emacs LISP模式
Emacs LISP模式是为了运行Emacs内部的LISP代码准备的,因为LISP市一中解释
性语言,所以LISP程序设计过程中代码的书写和运行/调试界限比较模糊。Emacs
利用了LISP语言的这个特点,在Emacs LISP中,命令
M-C-x 就会对光标附近的函数定义进行求值
M-tab Emacs LISP中的自动补足
M-: 在此输入的代码会进行求值
*** Emacs LISP交互模式
LISP交互模式的功能更加强大。在*scratch*缓冲区输入的东东认为在LISP交互
模式
C-j 对光标所在的s-表达式进行求职
** fortran模式
** 对文件进行编译
M-x compile RET Emacs将对文件进行编译,引发一连串事件
C-x ` Emacs自动把光标移动到第一个出错处,修改后继续
M-n 移动到下条出错信息
M-p 移动到上条出错信息
C-c C-c 访问对应于当前出错信息的源代码
spa 下卷屏幕显示内容
del 上卷屏幕显示内容
spa和del是Emacs对制度模式所使用的卷屏命令
* 第十三章 用LISP语言对Emacs做进一步开发
在这里展现的是Emacs最动人的特性:有成千上万的扩展,一旦你发现它缺少什
么功能,这个问题早就有别人解决了——即使没有人解决,你都可以自己动动手,
用Emacs LISP去解决它!
在这一章中并不打算详尽的介绍Emacs LISP,而是侧重于介绍这种语言的基本概
念和编写Emacs代码是常用的命令和技巧。
** LISP语言简介
(草草看一遍)
*** LISP语言的基本元素
函数、变量和原子项是LISP语言最基本的元素,
*** 函数的定义
*scratch* 是一个LISP交互模式,可以在这个编辑缓冲区里面使用给出的程序
实例。
* 第十四章 Emacs编辑器和X窗口系统
* 第十五章 Emacs下的版本控制
** 版本控制的用途
版本控制系统允许返回到项目开发过程中历史记录的任何一个阶段,并且能够方
便的制作出各版本之间差异比较的报告
** 版本控制的有关概念
处于版本控制下的每个文件都有一份修订记录,这份记录由一个原始版和一系列
修订版组成。
想要对一个文件进行版本控制,就必须先把它注册到版本控制系统上。
如果想对一个已经注册的文件进行修改,就必须check out这个文件。
在对工作文件进行修改的过程中,你可以随时复原工作文。但如果你想把自己对
文件的修改保存起来,就必须check in那些改动。
** VC对基本操作的辅助作用
VC的操作界面非常简单,这种简单性来源于这样一个事实:不管你的版本受控文
件出于什么状态,合乎逻辑的后继操作通常就只有一种。下面是有关规则:
(1)若文件还没有被置于版本控制系统下,接下来的步骤就是注册它并签出一份
允许被修改的副本
(2)如果文件已经被注册但是还没有人check out,接下来的逻辑步骤就是check
out it并且修改
(3)如果已经把文件check out,接下来的逻辑步骤就是check in it
(4)如果有人check out,你所能做的只是等待或者卸下锁
事实上,VC模式只有一个基本命名
C-x v v 对这个文件做下一个合乎逻辑的操作
C-x v u 复原操作
** 修改注释的编辑
** VC命令汇总
** VC模式的标志
** 使用哪一种版本控制系统
** VC命令细说
** 对VC进行定制
** 对VC进行扩展
** VC的不足之处
** 有效地使用VC
* 第十六章 在线帮助
** Emacs的自动补足功能
Tab 尽可能多的补足这个名称
Spa 补足这个名称直到下一个标点符号
? 以此前输入的字符为依据,列出可用列表
** 帮助命令
C-h C-h 或 C-h ? 最基本的帮助命令
*** 详细资料
C-h c 这个按键组合将运行哪些命令
C-h k 详细讲解上这个按键组合的命令
C-h l 最近输入的100个字符是什么
C-h w 这个命令的按键绑定是什么
C-h f 这个函数的作用是什么
C-h v 这个变量的含义?可以取哪些值
C-h m 查看当前编辑模式有关资料
M-h b 这个编辑缓冲区有哪些键绑定
C-h s 这个编辑缓冲区使用哪些哪些语法表
*** 一般性资料
C-h t 运行Emacs教程
C-h i 启动文档阅读器info程序
** 针对复杂Emacs命令的帮助功能
*** Emacs的info系统
在info系统里面有大量的文献和资料,如果把它逛一圈那一定是水平大增呀~
RET 进入某一项文章
l 后退,等同于web浏览器
p 前一篇文章
n 后一篇文章
u 上级菜单的文章
s 搜索string,按下s继续
当然在搜索这一项Emacs是无比强大的。在info里面搜索直接用搜索命令就好了
阅读(1565) | 评论(0) | 转发(0) |