emacs中文手册-入门篇
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前言
【写给读者的话】
这篇文章纯粹是我个人在学习使用emacs编辑器过程中实践的记录,其中语言文字上面也许会有些错误,希望读者发现之后能够帮我纠正,在此先谢了。
这里的每个命令都经过我亲身的实践,关于emacs编辑器系统一些的简易点的中文资料不是很多,所以学习有一定的难度,我的愿望是大家能够花费尽可能短的时间,掌握emacs编辑器的使用方法。
如果你仅仅是为了临时使用这个工具来临时做一些事情,那么本文也适合你,你只需要看本前言中的【最基本命令】一节即可。
如果有人转载,希望您能注明出处和作者;如果将本文用于商业行为,希望您能先通知我;希望大家能够互相体谅,尊重对方的劳动成果。
本文包含了基本的emacs编辑器的使用,目前本人也在最初的学习过程中,希望大家能够在自己空闲时间内共享资料积极交流.
【引言】
有一种编辑器叫emacs,其实很早就听说了它的大名。
之前我使用linux,看到舍友用vi编辑文件,于是我也自然的用了几次vi,感觉很难用,但是还是艰难地会了几个最基本的vi操作:打开文件,编辑文件,保存文件,撤销,删除,复制,剪切,粘贴。
后来和舍友聊天,他说还有一个叫做emacs的编辑器,于是我就知道了原来linux下面两个最著名的编辑器,emacs和vi.
当时我想学学用emacs,不过还没开始就放弃了,因为我连vi都还没有用好,还想再学emacs?做人不能太贪,还是把我刚学会的几个vi命令好好消化消化吧。
于是我就开始使用vi了,一边使用,一边查找自己想要知道的新的功能,一边记录,我记得那时候从大约2007-2008年之间吧。
2009年我进入了公司,大概能够磕磕绊绊地使用vi在linux中编辑文件了,关键的一个月,大约是2009年3月份,我在工作的时候全部使用vi看代码编辑代码编辑文件,晚上我还特地上网搜索关于vi的资料并且亲自实践学习,而且自己还整理了一个简易版的vi手册,到了现在2010年9月3日,我已经能够像说话一样使用vi了。
虽然我vi学习的不是超级精通,但是我相信起码也达到中级水平了,可以用vi轻松的编辑文件查看代码,以及使用vi来编写复杂的程序了。
期间我也简单地学了学emacs 的手册,发现其操作的方法和我已经学过的vi大不相同,于是我暂时放弃了它,先把vi用好了再说吧。
而最近我出于好奇,在互联网上搜索了一下emacs和vi的对比,发现许多有趣的内容,其中一项是说,emacs是适合心情平静的人使用的,使用它的时候心情会很平静;而vi是适合“急躁”的人使用的,使用它的时候会发现自己的节奏也会变快。
我比较追求平静,但是我确实用vi很熟练,现在看到了这个评论,我于是想试一试这个emacs是不是适合我使用。
习惯是最好的老师,我现在还是不习惯emacs,所以要从习惯开始学习。
一定坚持下去。
现在我的文章还是用gedit编辑的,本来打算用emacs写的,但是对于一个还不会走的人来说让他跳,显得有些不切实际,于是我现用这个gedit来记录几个最基本的emacs命令,然后以后的emacs学习记录都用emacs自己来记录。
就像我当初使用vi一样:)
【本文约定】
1)C-X 表示按住CTRL 键, 然後按X, 再把CTRL, X 一起放开.
2)在没有META 键的电脑上, M-X 等於先按ESC 键, 接著按X 键
3)有些系统META 键就是ALT 键.(或者某一边的ALT 键)
4)C-X 或M-X 的X 没有大小写分别.
5)默认输入都是emacs启动之后的交互命令,如果是linux的shell命令那么会有$等提示符号的。
注:这样约定实际很好,从前写文档的时候(例如vi简易手册),对于控制键和普通键的组合表示不是很好,看来以后的文档要参考这个约定来改改了。
【最基本命令】
本文已经是非常基本的emacs手册了,如果还是不愿学习这么多的命令,那么这里给出最最基本的emacs,仅为临时使用.
我最开始学习emacs的时候,就是先实践并在gedit下面记录这些命令的使用,然后掌握这些命令之后我就使用emacs来实践并记录其余命令了.
*打开emacs:
$emacs.
这里,如果有X-windows 就会开视窗. 如果不想用X 的版本,就用emacs -nw.这时候也会显示一些主界面帮助信息。
*打开一个文件yourfilename:
命令行下:$emacs yourfilename
或者emacs下输入:"C-x C-f <yourfilename>"
这样,如果文件名不存在则新建一个,第二个命令"C-x C-f"后有提示让你输入待打开的文件的路径,当前的文件没有保存也不会提示但是退出时候会提示你刚才载入新文件之前没有保存的文件是否保存,每新打开一个文件emacs会新建立一个buffer存放该文件。
*退出:
输入“C-x C-c”.
*撤销:
输入"C-x u"
或输入"C-_"
这里,"C-_"比较好输入一些,但是有的键盘上面没有"_"就只能输入“C-x u”了,撤销动作能进行20次。
*保存当前文件:
输入“C-x C-s”.
这样会保存文件,如果没有保存则提示。
如果你没有保存文件,底部的提示行会用*表示未保存。
*终止现在正在执行的命令:
输入"C-g".
这个在你输错的时候使用.
*询问保存当前buffer中所有文件:
输入"C-x s".
这样,如果当前buffer中有没有保存的文件则询问保存。
*查看emacs所有的buffer列表:
输入"C-x C-b"
这样,会显示一个buffer列表,每项显示打开的一个文件的名字。
*获取帮助信息:
输入"C-h ?".
或输入“M-x help <Return>”
一般用第一个,如果第一个不好用,就用第二个,<Return>表示回车。
接下来,我们将要学习更多的emacs基本命令了。
作者:QuietHeart
QQ:649711825
Email:**********************
================================
================================
================================
入门篇
【主要内容】
文件相关
编辑相关
定位相关
显示相关
其他相关
遗留问题
【正文】
==============
文件相关
==============
*打开emacs:
$emacs.
这里,如果有X-windows 就会开视窗. 如果不想用X 的版本,就用emacs -nw.这时候也会显示一些主界面帮助信息。
*退出:
输入“C-x C-c”.
*打开一个文件yourfilename:
命令行下:$emacs yourfilename
或者emacs下输入:"C-x C-f <yourfilename>"
这样,如果文件名不存在则新建一个,第二个命令"C-x C-f"后有提示让你输入待打开的文件的路径,当前的文件没有保存也不会提示但是退出时候会提示你刚才载入新文件之前没有保存的文件是否保存,每新打开一个文件emacs会新建立一个buffer存放该文件。
*保存当前文件:
输入“C-x C-s”.
这样会保存文件,如果没有保存则提示。
如果你没有保存文件,底部的提示行会用*表示未保存,"C-x b"之后直接输入buffer列表名字,比"C-x C-f"的方式切换简单多了。
*询问保存当前buffer中所有文件:
输入"C-x s".
这样,如果当前buffer中有没有保存的文件则询问保存。
*查看emacs所有的buffer列表:
输入"C-x C-b"
这样,会显示一个buffer列表,每项显示打开的一个文件的名字。
*切换到相应buffer列表:
输入"C-x b <buffer列表名>"
这里,"C-x b"之后直接输入buffer列表名字,比"C-x C-f"的方式切换简单多了。
**根据自动保存文件恢复文件:
emacs提供自动保存功能,例如当你修改“hello.c”文件的时候,它会生成一个
“#hello.c#”文件(称做自动保存文件),并且周期的向这个文件写入最新数据,当你保存文件的时候,emacs才会删掉这个文件。
当你机器挂掉的时候,你可以利用这个文件进行恢复。
假设文件hello.c的自动保存文件是#hello.c#恢复步骤如下:
1)输入"M-x"
这样,提示你输入恢复命令,可以用<TAB>自动补全。
2)输入"recover<TAB>"
这样会自动补全为recover-file
3)输入"<Return>"
4)输入"hello.c"
这里输入的就是要恢复的文件名,而不是#hello.c#
5)输入"yes"
这里根据提示输入"yes"表示确认恢复
,并且周期的向这个文件写入最新数据,当你保存文件的时候,emacs才会删掉这个文件。
当你机器挂掉的时候,你可以利用这个文件进行恢复。
**
*水平分割一个窗口载入另外一个文件:
输入“C-x 4 C-f <你的文件名>”
这样,会在下面新开一个窗口,载入你指定的文件,同时把光标切换到新开的那个窗口中去。
==============
编辑相关
==============
*把指定文件的内容插入当前编辑区域:
输入"C-x i".
这样会提示你输入文件名称。
*撤销:
输入"C-x u"
或输入"C-_"
这里,"C-_"比较好输入一些,但是有的键盘上面没有"_"就只能输入“C-x u”了,撤销动作能进行20次。
*删除光标后面的字符(不可粘贴):
输入"C-d".
*删除光标后面的单词(不可粘贴):
输入"M-d".
*删除光标前面的字符(不可粘贴):
输入"<Delback>".
这里,<Delback>实际上就是backspace.
*删除光标前面的单词(不可粘贴):
输入"M-<Delback>"".
*删除(kill)光标到行尾之间的所有内容(可粘贴):
输入"C-k".
这样,会删除相应包括光标所在内容,再按"C-k"删除换行符号。
kill相当于剪切的功能。
*删除至句子结尾:
输入"M-k".
**删除(kill)一个块的内容(可粘贴):
1)定位到块的起点,输入"C-<SPC>"或"C-@".
这样将设定一个标记。
2)定位到块的终点,输入"C-w".
这样会把一个块的内容给kill掉。
至此,这个块(在两端之间的部分)将被删除。
kill 和delete的区别是,kill掉的部分可以被粘贴上去,类似剪切。
**
*粘贴最近kill方式删除的内容:
输入"C-y".
**粘贴前几次kill删除的文本:
1)输入"C-y".
这样会把最近的kill删除的文本粘贴回来。
2)输入"M-y".
这样,会不断用之前的kill删除的文本来替换当前刚刚粘贴上去的文本(循环的),这样一直进行下去,直到粘贴上之前某次删除的文本。
实际游标位置不动,那么多次kill当成一次kill的,yank的时候一块yank回来。
**
**替换字符串
1)输入"M-x "
这样,提示你输入替换命令,可以用<TAB>自动补全。
2)输入"repl s<TAB>"
这里就是利用<TAB>来自动补全命令的,如果不补全回车的话,命令唯一则也行。
3)输入“<Return>”
回车<Return>之后,提示要你输入要替换的字符。
4)输入"要替换的字符"
5)输入"<Return>"
回车<Return>之后,提示要你输入要替换成的字符。
6)输入"要替换成的字符"
7)输入"<Return>"
这里替换的时候只替换光标后面的内容,而且替换的时候也不提示确认。
**
==============
定位相关
==============
**基本移动光标:
*向前移动一个字符:C-f
*向后移动一个字符:C-b
*向前移动一个单词:M-f
*向后移动一个单词:M-b
*移动到下一行:C-n
*移动到上一行:C-p
*移动到行首:C-a
*移动到行尾:C-e
*向前移动到句子的开头,可能跨多行或一行都不到:M-a
*向后移动到句子的末尾,可能跨多行或一行都不到:M-e
从以上几个命令可知,M是和语言相关的控制键,C之后基本单元有关。
Emacs有个特点,就是你移动光标的时候,如果光标超出了屏幕范围(向上或者向下),则立刻将光标及附近文字居屏幕中央。
**
*向上翻页:
输入"M-v".
*向下翻页:
输入"C-v".
*滚动当前(光标所在行)行到屏幕顶部:
输入"C-u 0 l".
这里是小写L不是1。
*跳转到文档开头:
输入"M-<".
*跳转到文档结尾:
输入"M->".
**搜索字符串
假设搜索“cursor”,步骤如下:
1)输入“C-s”
这时候,底部会出现一个提示,提示你输入要搜索的字符串
2)输入“<你要搜索的字符串>”
这时候,你会发现,随着你的输入,emacs会高亮相应的匹配并且光标向后跳到最近匹配,当你搜索的时候删除一个字符,emacs会跳到上次光标搜索的单词处(少一个字符的),当删成了空的时候,应该光标就跳回到最开始你搜索之前的位置了。
3)输入"C-s"
这样会把光标跳到下一个匹配的字符串。
4)输入"<Return>"
回车之后,会结束搜索(下次连续两个"C-s"会继续搜索上次的搜索字符串)。
注意,有的系统会把"C-s"解释为锁屏,而不等把命令传给emacs,这时你可以按C-q 停止锁屏,然后查看文档的“Spontaneous Entry to Incremental Search”部分。
反向搜索方法同“搜索”的方法,不过把"C-s"改成了"C-r".
**
==============
显示相关
==============
*关掉其它窗口,只显示光标所在窗口:
输入"C-x 1"
在多窗口的时候,这样就会把所有窗口关掉,只显示一个窗口了。
*水平分割窗口:
输入"C-x 2"。
这样会分割水平当前的窗口。
*垂直分割窗口:
输入"C-x 3".
这样会垂直分割当前的窗口。
*光标在当前窗口,给底部的窗口翻页:
输入“C-M-v”
或输入“<Esc> C-v”
这里,emacs处于水平分割为两个窗口的状态,当前光标在上面的窗口中,然后这个命令会给下面的窗口翻页;如果光标在下面的窗口中会给上面的窗口翻页;注意如果你没有M控制键(就是Alt)那么你要实现这个功能就用第二个方法,先输入<Esc>再C-v.
*在分割的上下两个窗口间切换:
输入“C-x o”
这样,光标会在上下两个窗口之间切换。
==============
其他相关
==============
*终止现在正在执行的命令:
输入"C-g".
当你处于recursive edit level的时候,你不能够利用C-g来取消命令了,那么你需要利用<Esc><Esc><Esc>(或者更多次)来取消,据说这个模式下会用方括号把模式括起来,例如用[(Fundamental..)]替代(Fundamental)但是实际上我看似乎不是这样啊?
**转换主要显示模式:
假设转换为fundamental模式,步骤如下:
1)输入“M-x”
2)输入“fundamental<TAB>”
这里输入的是模式的名称,利用<TAB>自动补全。
3)输入“<Return>”
这样就把模式转换成为fundatmental模式了。
emacs中有几种不同的主要模式,它们用来编辑的不同类型的文本,当前所处的主要模式的名称显示在底部的状态栏上面,不同的主要模式中的命令行为稍微不同。
例如:text模式在M-f和M-b的时候,把顿号也视为单词的一部分,而fundatmental模式把顿号视为分隔符号等等,不过命令大体行为是一样的。
**
**打开关闭次要模式:
假设打开关闭的是Auto Fill mode,步骤如下:
1)输入"M-x"
2)输入"auto-fill-mode"
3)输入"<Return>"
回车之后,就会打开或者关闭auto-fill-mode模式(切换),这个模式在
human-language text编辑中非常有用,该模式为on的时候,当一行单词数目过多的时候,它会在最后一个单词尾(注意就是必须要整个单词接空格的那种)自动插入换行而不是续行符号。
既然有主要模式,当然也有次要模式,次要模式并不能替代主要模式,它们只是一些类似“选项”的东西来稍微改变主模式的行为,能够独立于主模式或者其它次要模式来打开和关闭。
**
*重复一定次数的操作:
输入"C-u <数字> <你想要重复操作的命令或输入的字符>".
或输入"M-<数字> <你想要重复操作的命令或输入的字符>".
这里,C-u <数字>是一个“前缀”,数字是要执行后面的命令的次数;例如"C-u 8 C-p"表示向前8行。
多数命令把这个“前缀”做为重复,但是有些特殊命令不是这样,以后会遇到的。
C-v和M-v加上这个数字表示的是把屏幕移动多少行而不是翻多少页。
*刷新屏幕:
输入"C-l".
这样,如果屏幕的文字显示错乱了可以刷新屏幕,l不是1,执行之后光标和相应文字都跑到屏幕中间。
*获取帮助信息:
输入"C-h ?".
或输入“M-x help <Return>”
一般用第一个,如果第一个不好用,就用第二个,<Return>表示回车。
*Emacs简易教程阅读:
C-h t
这里,C-h表示按住[Ctrl]键的同时按h
*显示某个命令按键或者命令次序的简短帮助:
输入"C-h c <你要输入的命令序列>".
这里,关键是先要输入"C-h c",等你输入相应的命令序列之后会在底部显示那个命令序列的简单帮助信息。
假设查看C-p的信息:
输入:"C-h c C-p"
这会显示一条描述该命令(C-p)的简短信息。
关键是先输入"C-h c",再输入命令。
*查看某个命令按键或者命令次序详细的帮助:
输入"C-h k <你要输入的命令序列>".
这里,关键是先要输入"C-h k",等你输入相应的命令序列之后会在底部显示那个命令序列的详细帮助信息。
假设查看C-p的信息:
输入:"C-h k C-p"
这会显示该命令(C-p)的详细信息。
关键是输入“C-h k”,再输入命令。
再假设查看C-f的帮助:
输入"C-h k C-f".
这将新开一个窗口显示该命令(C-f)的解释,其它命令解释类似关键是那个"C-h k"。
*查看一个函数的功能:
输入"C-h f".
这样,会提示你输入特定的emacs函数,你可以用tab键来补全。
*查看在线info手册:
输入"C-h i".
这样会打开emacs的info手册,'q'可以返回,'?'可以查看基本的info帮助.
打开info如果查看emacs输入“m emacs”,如果不知道作甚么,那么输入'?'可以显示一些info基本的操作。
*查看你当前主要模式下的帮助文档:
输入"C-h m"
*列出部分匹配:
输入"C-h a"
之后,输入一个词,会列出包含这个词的所有命令(meta键激起的)
*切换当前窗口文件为只读/可写:
输入"C-x C-q".
这样原来文件是可写的则变成只读的了,反之如果只读则变成可写的了,只读的话,在底部的状态条有相应的标记,我的是在文件名前面加上了一个'%'表示只读。
==============
遗留问题
==============
*改变一行的填充(不明白?):
假设改变为20,输入如下:
1)输入"C-u 2 0 C-x f"
2)输入"M-q"
这样设置后auto-fill-mode不管用了,想要重新re-fill,要在当前段内输入M-q。
会发现该段变成了每行20个字符。
*想要知道的功能
删除一行?
显示行号?
C-x C-x?
跳转到指定行号?
跳转到上次位置?
跳转到最近编辑?
显示当前文件名称和路径? 另存为?
重新执行上次的命令?。