其实学Emacs并不是为了什么而仅仅是为了好玩。Emacs这个东西刚刚接触的确比较难,但是一本600页的《Learn Gun Emacs》看完,就也就懂得个大概齐了。
往后慢慢看那些Emacs Lisp Mannual和一大堆在线帮助吧。
把学习的笔记贴出来,共享一下。对自己来说也算是一个备忘。
这个备忘最好是用Emacs开着outline-mode或者outline-minor-mode看,那些星号表示的章节的结构。比如说*示一章,**表示一大节等等,以此类推。
如果你正在学习Emacs,希望能对你有所帮助。
* 前言:全书的脉络
第一章 Emacs的基本概念:Emacs的启动核对文件操作、在线帮助系统
第二章 文件编辑:光标移动、复制粘贴、撤销修改命令;初级的定制
第三章 查找和替换:查找替换、单词简写、拼写检查
第四章 使用编辑缓冲区和窗口:多编辑缓冲区、书签
第五章 Emacs工作环境:shell操作、对文件和目录进行操作
第六章 电子邮件和Usenet新闻:Gnus新闻阅读器
第七章 Emacs的英特网工具箱:远程访问别的计算机、ftp功能检索文件、
浏览万维网
第八章 简单的文本排版和特效编辑:基本的文本操作、图形模式和大纲模
式
第九章 用Emacs设置排版标记:TEX、LATEX和HTML等标记语言
第十章 Emacs中的宏:用宏指令简化重复工作
第十一章 对Emacs进行定制:各种定制
第十二章 程序员的Emacs:Emacs在程序设计环境方面的有关功能
第十三章 Emacs LISP程序设计:Emace LISP的基本概念
第十四章 Emacs编辑器和X窗口
第十五章 Emacs下的版本控制:文件版本控制的VC模式
第十六章 在线帮助
* 第一章 Emacs的基本概念
** Emacs简介
它可能不是最好的 但是它是最有用的。
人们说Emacs功能强大的原因:它远不仅是一个文本编辑器,它是一个能够
改变你工作方式的完备的操作环境
** 理解文件和缓冲区
Emacs并不是对某个文件本身进行编辑。事实上,它们会把文件内容放到一
个临时性的缓冲区里面,然后再对缓冲区的东西进行编辑。
** 编辑模式
Emacs有各种各样功能各异的编辑模式 模式的真正含义不过是Emacs对当前
的文本编辑工作更"敏感"而已。
一个编辑缓冲区只能有一个主模式。退出一个主模式的方法就是进入另一个
主模式。
再租模式之外还有副模式(minor mode)。副模式的概念是emacs在编辑的时
候的某些行为。
在这里比较特殊的就是大纲模式 它既可以当作主模式单独使用,又可以当
成副模式作用于别的主模式里面
** 启动emacs
** emacs的编辑画面
状态栏:(**)表示文件自从上次保存以后又被修改过,否则显示(--);其次
是缓冲区的名字;然后如果在文件开头显示Top,文件尾部显示Bot,在其他
部分显示文件的百分比%;然后就是行号和列号;最后是当前的主模式和副模
式的名称。
** X技巧:X窗口系统下的Emacs画面
** Emacs命令
Emacs的每一个命令都有一个正式的名字,它们实际上是Emacs内部LISP程序
的名字。 由于这些名字都比较长,所以我们需要一些能够简化命令输入的
方法。
命令和组合键之间的联系被称为"绑定":
*** 最常用的命令被绑定为 C-n 的形式(其中n是任意字符)
*** 次常用的命令被绑定成为 M-n 的形式。
*** 其他常用的命令被绑定为 C-x something 的形式。somthing 可能是一
个或者多个字符,也可能是别的命令组合。
*** 某些特殊命令被绑定为 C-c something 的形式。这些命令通常和特殊
的编辑模式相关 比如图形模式或邮件模式。
*** 有些没有绑定或者无法绑定形式的命令输入方法是直接输入它的名
字:M-x long-command-name RET
** X技巧:使用下拉菜单
** 打开一个文件
命令是 C-x C-f 。Emacs提示输入一个文件名,输入新建或者查找的文件,
回车即可。
** 如果读入了错误的文件
遭到正确文件最简便的方法是按下 C-x C-v 。命令的意思是"读取另一个文
件来取代刚才读入的那一个"。
** Emacs的名称自动补足功能
这是Emacs一个很有用的功能 自动完成。你所需要做的事情仅仅是把Tab键
按的稍微勤快些。
** 插入和追加文件
移动到相应的位置,按下 C-x i 即可。
** Emacs如何设定默认目录
** 保存文件
按下 C-x C-s 即可。
有一个小技巧在这里,如果 C-x C-s 时发生了死机现象,这时就需要将
C-s 和 C-q 当作流控制字符来使用:在这里 C-s 的意思是"停止接受输
入";而 C-q 相当于重新启动这次会话。
C-x C-w 也有同样的作用,只不过这个和"保存缓冲区"有所不同,这个命令
默认你需要改文件名。
** 退出Emacs:C-x C-c
** Help菜单
C-h 和 C-h C-h
* 第二章 文件编辑
** 光标的移动
光标移动最简单的办法就是按方向键,但是为了手不离开键盘区有以下快捷
键:
C-p 上一行 C-n 下一行 C-b 前一个字符 C-f 后一个字符
** 移动光标的其他方法
M-b 左移一个单词 M-f 右移一个单词
C-a 一行的开头 C-e 一行的结束 M-a 一句话的开头 M-e 一句话的结尾
M-{ 光标上移一个段落 M-} 光标下移一个段落
如果文件里面有分页符,可以通过敲入 C-x [ 来移动到上一页, C-x ] 移
动到下一页。如果文本没有分页符,那么Emacs会把缓冲区当成一页,以上
两个命令分别对应缓冲区的开头和结尾。
文本模式的分页符是一个换纸进页的字符,作用是告诉打印机进入到下一个
打印页。如果想要在文本模式下在文件里面插入分页符,可以按下 C-q C-l
** 把光标一次移过一个 (或者多个)屏幕画面
C-v 下翻一页 M-v 上翻一页
C-< 文件开头 C-> 文件结尾
** X技巧:使用卷屏条
** 命令的重复执行
ESC n 或者 C-u n 都是把命令执行n次。所不同的是C-u即使不带参数也会
重复执行,C-u 执行4次,C-u C-u 执行16次,即重复使用可以按照4的幂次
来重复执行随后的命令
** 重新绘制屏幕画面
C-l 重绘屏幕、并且把当前行移动到屏幕中央
** Emacs命令与你的键旁
许多Emacs命令可以通过键盘上的标准按键来快速输入。但是建议还是使用
这些标准的Emacs命令,因为他们在任何一种键盘上都能使用 。
** 文本的删除
在删除命令之前,先说说撤销:C-x u 或者 C-_
Emacs有很多文本删除的方法。最简单的就是键盘上面的DEL键,他的左右时
删除紧靠光标右侧的那个字符。Backspace则是删除光标左侧的字符。
C-d 删除光标所在处的字符 M-d 删除光标所在单词
C-d 删除一行。一般说来 C-k C-k 才能完整的删除一行。第一个用于删除
空行。
** 恢复已经删除的文本
在emacs中delete和kill不是一个东西。所有kill的东西被保存在一个叫做
kill ring的地方,如果连续kill的东西会被当成一个整体一起放在kill
ring里面。
kill ring中的东西包括:用 C-k 删除的所有东西;用 C-w 删除的所有东
西;用 M-w 复制的所有东西。
C-y 命令可以把kill ring中最上面的一个恢复出来。
M-y 告诉Emacs"恢复的不对,我需要上一个" 呵呵,是一个ring嘛
** 文本块及其编辑操作
Emacs的一个简单办法:用标记文本的方法把打算删除得东西定义为一个区
域,这个标记出来的区域就叫做"文本块(region)"
把光标移动到文本的开头,按下 C-_ (C-spa),然后把光标移动到region的末尾,
这样就可以选中了中间区域。(插入点的精确位置是当前字符之前)
C-x C-x 作用是交换插入点和文本标记的位置。
应该养成一个好习惯:在对文本块做删除操作之前先用 C-x C-x 检查一下。
C-w 删除文本块 M-w 仅仅复制文本块
以下有几个快捷的方法:
M-h 标记一整段 C-h h标记整个buffer (有分页) C-h C-f 标记整页
** X技巧:用鼠标标记文本块
** 恢复早先的删除错误
C-y 可以回复最新删除的文本,M-y 回复上一次,继续 M-y 则是继续恢复
上一次
** 段落重排
即auto-fill-mode中,Emacs可以添加自动换行符,这样文本看起来就比较
漂亮。
比较遗憾的是这只能在第一次编辑中实现,在以后的编辑中文本会变的参差
不齐。
** 编辑技巧和快捷键
*** 交换位置
把前后两个字符顺序打错了:把io输入成了oi,在i的地方按下 c_t ,则变
成了正确的顺序io。
交换两个词的方法:把光标放在两个词中间,按下 M-t 。
交换两个文本行的方法:放在第二个文本行任意位置,按下 C-x C-t 。
当然,直接输入命令比如transpanse-sentences就可以实现交换两个句子、
两个段落的功能。
*** 改变字母大小写(这个功能我不需要……)
*** 文本改写模式
按下Insert就好了
*** 命令终止和修改的撤销
C-g
*** 用文件内容取代编辑缓冲区的内容
即全部放弃,恢复到存盘时的样子: M-x revert-buffer RET
*** 返回文件某个以前的版本
把原来备份的文件名改成当前文件名就好了……
*** 恢复丢失的编辑修改
(断电等……) M-x recover-file RET
** 对Emacs进行定制
呵呵,编辑 .emacs.el 就好了!
好多内容,先到网上看看别人的.emacs,如果还想用更加高级的功能去看看
emacs LISP 好了。
* 第三章 查找和替换操作
** 查找操作
有很多种查找的方式:简单查找、递增查找、单词查找、正则表达式查找、
递增正则表达式查找等等。可以往前查找或者往后查找。
Emacs默认查找时不区分大小写,只有一种情况例外,那就是当你要查找的
词语中含有大写字母——Emacs认为你愿意花心思输入大写字母一定有你的用
意。
对于替换,Emacs有:简单的查找替换、查询-替换、正则表达式替换。
一般说来用熟悉一两种就好了。
** 递增查找
按下 C-s (往后) 或者 C-r (往前)输入要查找的东东,按下回车键就
就停在想要查找的东东那里。如果当前这个不是想要找的那个怎么办?连续
按下 C-s 或者 C-r ,直到找到需要的那个为止,按下RET。
如果不想输入查找字符串,可以按下 C-s C-w ,可以把光标位置到下一个
标点或者空格之间的文本都复制到查找字符串里面。如果想要把光标位置到
行尾之间的文本都复制到查找字符串里面,就要使用 C-s C-w 。C-s M-y
可以把kill ring里面的文本复制到查找字符串里面去。
C-s C-s 是重复刚才的查找。
** 简单查找
C-s RET 或者 C-r RET ,然后输入查找项就好了。
** 单词查找
如果在查找一个短语的时候,明明文件里面有这样的短语,可用递增查找却
找不出来,可以尝试单词查找。
C-s RET C-w 或者是 C-r RET C-w
在英文论文写作中,单词查找是最需要的功能。
** 查找和替换操作
*** 基本查找与替换操作
只想把文件里某个字符串都换掉的时候,只需要一个简单的命令 M-x
replace-string RET 然后输入要被替换的字符串、输入替换后的字符串即
可。
*** 查询-替换操作
M-% 即进入查询-替换,mini-buffer提示"Query replace:",输入查找字符
串并按下回车键。当找到一个位置时:
**** spa 或者 y :替换,前进到下一个为止
**** del 或者 n :不替换,前进到下一个为止
**** . :在当前为止做替换后推出
**** , :替换并显示替换情况 (按spa或y才进入到下一个位置)
**** ! :对后面的内容全部替换,不再询问
**** ^ :返回上一次进行替换的位置
**** RET 或 q :退出
**** C-r :进入递归编辑状态
**** C-w :删除此处内容并进入递归编辑状态
**** ESC C-c :退出递归编辑,继续查询-替换
**** C-] :推出递归编辑状态和查询-替换操作
*** 查询-替换(以及其他复杂命令)的重复执行
这是为了不小心从某个复杂命令中退出了,而想重复这条复杂命令的做法。
按下 C-x ESC ESC 即调出刚刚输入的命令,如果不是想要的 M-p 就好了,
如果过了头,可以用 M-n 后退。
*** 递归编辑
在进行查询-替换操作的时候,几乎不可避免的会发现还有一些别的地方需
要修改,幸好Emacs已经想到了这一点。"开始一次递归编辑"的意思是,暂
时放下手中的查询-替换操作去做一些别的修改,当退出编辑状态的时候,
查询替换将从刚才暂停的地方继续。
C-r 即是在查询替换中的递归操作。Esc C-c 即让Emacs退出递归编辑。
C-] 即是彻底放弃递归编辑和查询-替换。
对于高级的Emacs User来说,可以随时开始一段递归编辑,只需要 M-x
recursive-edit RET 就好了。只不过每多一个递归层,把自己搞昏的可能
性就多一分……
*** 查询操作中的字母大小写问题
通常Emacs足够聪明去处理这方面的问题,比如如果输入中有一个以上的大
写字母Emacs会尝试去精确匹配。但是我们仍然可以手工控制这一切。如果
需要控制,可以用M-x去自动执行命令,也可以加入到.emacs中
;要求精确匹配
(setq-default case-fold-search nil)
;替换时不改变大小写情况
(setq-default case-replace nil)
**查找和替换中的正则表达式
一些正则表达式中的字符
*** ^ 匹配行首
*** $ 匹配行尾
*** . 匹配任意单个字符(类似文件名中的?)
*** .* 匹配任意(零或以上)个字符(类似文件名名中的*)
*** \< 匹配单词的开头
*** \> 匹配单词的结尾
*** [] 匹配方括号中的任意一个字符,比如[a-z]匹配任意一个字母
表字符
如果想对 ^ $ . * [ ] 或者其他特殊字符进行查找,显然不能共这些字符
本身,必须在它们前面加上一个反斜线 \ 。比如查找"["就必须查找"\["
使用正则表达式来进行查找:
M-C-s 向后增量使用正则表达式 M-C-r 向前增量使用正则表达式
M-C-s RET 同上只是不增量 M-C-r RET 同上不增量
M-x query-replace-regexp 查询-替换一个正则表达式
M-x replace-regexp 无条件对一个正则表达式进行全局替换
** 拼写检查
(暂时还用不到。好像很有趣的样子但是我更加经常写中文……留着以后补充
吧)
** 简写模式
很好玩的东东。有空再搞。维护一个简写词表也是蛮好玩的。
* 第四章 使用编辑缓冲区和窗口
** 文件、编辑缓冲区和窗口
Emacs里面的一切编辑操作都发生在编辑缓冲区buffer里面。虽然编辑缓冲
区往往会有许多其他方面的用途,但是它通常是某个文件的工作副本。
** 同时使用多个编辑缓冲区进行工作
缓冲区之间的切换 C-x b 。同 C-x C-f 作用差不多,同样可以打开新的
buffer,区别在于不用指定文件名。
** 多个缓冲区的保存
保存单个缓冲区 C-x C-s 保存所有的缓冲区 C-x s
保存所有缓存区的时候,Emacs会依次询问是否保存某个文件,y保存,n不
保存,!无条件保存所有,.只保存某一个其他的不要,q退出。
在保存某个缓冲区之前,可以 C-r 看看它的内容,C-c 退出。
** 编辑缓冲区的删除
删除一个缓冲区的方法是 C-x k
删除一堆缓冲区可以输入 M-x kill-some-buffers
** 编辑缓冲区的重新命名
M-x rename-buffer
弄错文件名字是一个很常见的错误,如果发现 C-x C-f 找到的文件不对,
可以使用 C-x C-v ,用新的文件来替代它。
** 只读编辑缓冲区
C-x C-q 把编辑缓冲区设置为只读性质。重复组合键恢复可写性质。
** 使用窗口进行编辑
*** 创建上下排列的窗口 C-x 2
*** 创建左右排列的窗口 C-x 3
*** 在窗口之间移动 C-x o (o stands for "other")\
*** 窗口的删除
删除一个窗口意味着它将不再出现在屏幕上,但是buffer并没有被kill掉,
用 C-x b 依然能够过去。
C-x 0 删除正在编辑的窗口 C-x 1 将自己所在的窗口最大化,删除其他
*** 调整窗口的大小尺寸
C-x ^ 增高窗口 C-x { 水平搜索窗口 C-x } 水平扩宽窗口
C-x - 收缩窗口只有缓冲区那么大 同样 C-x + 也是同理 (其实我不懂……)
*** 窗口大小的上、下限
Emacs变量 window-min-height 和 window-min-width
*** 对窗口进行操作的快捷命令
C-x 4 f 另开一个窗口插在并打开文件
C-x 4 b 另开一个窗口打开另一个缓冲区
*** 对比两个窗口中的文件
*** 于编辑缓冲区清单相关的操作
C-x b 进入编辑缓冲区以后,移动到标题前,按下d或者k ,大写D将出现在
某个buffer前面。完成标记并且按下X以后,他们会被真正的删除(当然指
的是缓冲区删除)
u 撤销标记 s 存盘操作 ~ 不自动存盘 % 改变只读状态
** 在文档中使用书签
*** 书签的设置
如果想要在光标位置设置一个书签,只需要 C-x r m
书签使用非常灵活,书签名字可以有空格,如果不起名字Emacs会给文件名
加上() 变成书签的名字。
*** 移动到书签指示的位置。
C-x r b 就可以了。这个功能可能会使用户放弃使用 C-x C-f ……每次都可
以很方便的跳转到想要的文件上。
*** 书签的重命名和删除
M-x bookmark-rename 然后按照提示输入原来书签的名字、新的书签的名字
就好了。很方便吧!
M-x bookmark-delete 然后输入书签名字就可以删除书签。
*** 与书签清单有关的操作
C-x r l 就可以进入书签清单,然后编辑方法和缓冲区列表类似
** 临时性的挂起Emacs
C-z 就可以了。
** 使用多个X窗口进行操作
* 第五章 Emacs工作环境
** 在shell编辑缓冲区里执行UNIX命令
Emacs的一个重要特点之一是它能够在一个编辑缓冲区里运行一个UNIX的
shell,只要进入shell编辑缓冲区,就可以在Emacs里完成各种常见的UNIX
工作
*** 一次执行一条UNIX命令
M-! 在Emacs中输入一条shell命令
C-x 1 关闭执行窗口
C-u M-! 把命令的执行结果直接放到当前编辑缓冲区。
*** 使用shell模式
M-x shell 启动shell缓冲区
有一点要注意的是,由于shell中通常"停止某个作业"是 C-c ,而 C-c 被
Emacs认为是Emacs命令,所以"停止某个作业"必须按下 C-c C-c 才行。
M-p 把最后一个命令放在shell提示符处。连续按可以找回以前的
M-n (个人认为没有什么作用,M-p就好了)找回更加早的命令
C-c C-o 自动删除上一个命令的执行输出,C-y可以找回kill的东东
*** shell的初始化
Emacs根据变量explicit-shell-file-name来打开默认shell,接着查看一个
eshell的UNIX环境变量。如果想运行一个特定shell,在.emacs中加入
(setq explicit-shell-file-neme "/bin/zsh")
*** 远程shell的问题
加入UNIX命令 stty-echio nl 来解决显示混乱的问题
*** 用shell模式预防安全隐患
在.emacs中加入一些语句来使password不显示
** 文件和目录操作
Dried模式(directory editing mode,目录编辑模式)是Emacs最引人注目的
功能之一。它提供对文件目录编辑的有效手段。
C-x C-f 目录名 自动进入Dried模式对目录进行编辑
C-x d 启动Dried
s(Dried下) 自动排序,最新的文件放在最顶部,再次按下恢复
spa C-n n 下一个文件
del C-p p 上一个文件
*** 查看和编辑文件(under Dried)
v 进入view mode查看文件内容,只能看,不能改
C-c q 退出到目录的文件清单
f 编辑文件
*** 文件的删除、复制、重命名操作
d 标记文件删除
u 取消删除标记
# 给所有自动保存文件(#*.*#)加上待删除标记
~ 给所有备份文件加上待删除标记
D 立刻删除文件
C(必须大写!) 复制文件
nC(比如3C) 连续复制n个文件
R 重命名某个文件
g 刷新文件列表
*** 文件的压缩和解压缩操作
Z Emacs对文件进行压缩或者解压缩操作
*** 对文件进行比较
标记第一个文件,第二个文件上按 = ,将会调用diff对文件进行比较
M-x 对文件和其备份文件进行比较(这个比较智能……)
*** 在文件上运行UNIX命令
!(在文件名前) 对文件下达一个shell命令,比如sort,diff等
*** 对文件组进行操作
Dried的真正强大之处在于他能够同时对多个文件进行操作
**** 选取文件
m 对文件进行标记,文件名前加上了*
nm(n是数字) 对连续n个文件进行标记
M-del 删除所有标记
**** 用正则表达式来选取文件
在Dired里面使用正则表达式来选取文件,方法是,先输入 % ,在用 m 来
标记文件,或者再用d给文件加上待删除标记。
需要注意的是,这里输入指令是这个样子的 %-m 或者 %-d ,仅仅 % 是没
有效果的。
**** 文件组上的操作
+ 创建一个目录
R 把标记的文件移动(重命名就是一种移动……)
在允许对文件组进行操作里面还有一些更令人感兴趣的东西,其中一条就是
只需要一条命令就能对它们的内容进行全面的查询-替换。具体步骤是:先
标记所有需要操作的文件,然后按下
Q Emacs依次进入各个文件进行查询-替换
*** 简单的目录清单
C-u C-x C-d 给出一份详细的目录文件清单
C-x C-d 给出一份简单的目录清单
这些目录清单都是临时性的,对它们进行的任何操作和修改对底层的文件结
构不会有任何影响。
** Emacs中的打印操作
(忽略之……)
** 用Emacs查阅UNIX的在线文档
M-x man 把排版好的使用手册页放入一个新的缓冲区
M-x manual -entry RET UNIX-command-name RET 查看某命令
以上的做法就是能够随心所欲的翻阅和查看,并且永远能够显示出整齐的文
本
** 时间管理工具的使用
Emacs说不定会成为最离不开的个人信息助理。
Emacs的日历和日记功能要大大优于它们的UNIX对手。它的日历功能可以同
时显示3个月,他的日记功能可以显示每天的活动和日程安排记录
*** 显示时间
在.emacs中加入 (display-time) 就好了
*** 显示日历
M-x calendar 在emacs中显示日历
. 移动到今天
g d 到达某个特定的日期
o 把指定月份放在日历画面中间
C-f 移动到后一天 C-n 移动到前一天
C-n 下星期同一天 C-p 上星期同一天
M-{ 上个月 M-} 下个月
C-x [ 上一年 C-x ] 下一年
C-v 前卷三个月 M-v 后卷三个月
C-a 一星期的开始 C-e 一星期的结束
M-a 一个月的开始 M-e 一个月的结束
M-< 一年的开始 M-> 一年的结束
C-x < 前卷一个月 C-x > 后卷一个月
***显示节假日
a 显示当前日期中的所有节假日
h 显示今天是否是节假日
** 日记功能的使用
日记功能是和日历功能,用于安排日程
*** 创建一个日记文件
先用 g d 移动到某个特定的日期,然后
i d (insert diary) 插入一条日记条目
注意如果日历的条目不止一行的话,在下一行的开头留出空格,让Emacs知
道它是一个续行
i w 每周一次的事件
i y 每年一次的时间
i c 每隔若干天重复的事件
先用标记的方法选取一段时间,然后
i b 就可以定义这一段时间内的事件
*** 显示日记条目(在日历画面下)
d 显示当天的日历条目
s 显示所有的日历条目
在.emacs里面加上(calendar)每次启动时启动日历,加入(diary)显示日
历。两者不能同时显示
如果想要把有日记条目的日期在日历上标记出来,那么在日历上面按
m 标记有日记的日历条目
u 去除这些标记
//以下两条是我的Emacs设定
pC 显示当天的阴历日期
S 显示当天的太阳升起和降落的时间
** 用好Emacs工作环境
在接下来的两章中我们会看到工作不用离开Emacs就能够很好的完成。
* 第六章 电子邮件和Usenet新闻
** Emacs的电子邮件功能
** 用Emacs发送邮件
C-x m 进入到mail缓冲区,撰写邮件
C-c C-c 撰写邮件完毕,发送邮件
C-c C-s 发送邮件但是仍然留在邮件编辑缓冲区里面
*** 从窗口或者窗格里发送邮件
C-x 4 m 新开一个mail的窗口显示
C-x k 删除邮件,关闭窗口
*** 对邮件内容进行拼写检查
*** 把邮件抄送给其他收信人
*** 把邮件密抄给其他收信人
*** 把邮件发送到一个文件
*** 在邮件里插入一个文件
*** 给邮件加上签名
(是在看的是索然无味,还是跳过这一章算了……)
;
* 第七章 Emacs的因特网工具箱
(草草浏览,略过……)
阅读(2228) | 评论(0) | 转发(0) |