Emacs编辑器的使用
- 格式:pdf
- 大小:324.63 KB
- 文档页数:11
前言【写给读者的话】这篇文章纯粹是我个人在学习使用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了。
Emacs 快速指南.(查看版权声明请至本文末尾)【注意:位于【】之间的内容是译注,比如本行,下同。
】Emacs 键盘命令通常包含CONTROL 键(有时候以CTRL 或CTL 来标示)和META 键(有时候用EDIT 或ALT 来标示)。
为了避免每次都要写出全名,我们约定使用下述缩写:C-<chr> 表示当输入字符<chr> 时按住CONTROL 键。
因此C-f 就表示:按住CONTROL 键再输入f。
M-<chr> 表示当输入字符<chr> 时按住META(或EDIT 或ALT)键。
如果你的键盘上没有META 、EDIT 或ALT 键,用下述方法也等效:先按一下ESC 键然后放开,再输入<chr>。
我们用<ESC> 来表示ESC 键。
重要提示:要退出Emacs,请用C-x C-c(两个连续的组合键)。
下文中左边顶行的>>”字样用来提示你尝试键盘命令。
比如:“>> 现在输入C-v (查看下一屏文字)移动到下一屏。
(别紧张,在输入字符v 的同时注意要按住CONTROL 键)从现在开始,每读完当前一屏你都需要这样做一次。
值得注意的是,当你从上一屏滚到下一屏时,中间会有两行的重复;这样做是为了维持滚屏的连续性,方便你顺畅、连续地阅读。
用编辑器,开门第一件事就是学会在文字中移动。
你已经知道了C-v 可以向下移动一屏,要往上移,请用M-v (也就是按住META 键,然后输入v,如果你没有META、EDIT 或ALT 键那么就先按<ESC> 再按v)。
>> 试试M-v,然后再试试C-v,来回遛几次。
* 小结(SUMMARY)-----------------以下命令在翻相当有用:页浏览时动C-v 向前移一屏动M-v 向后移一屏C-l 重屏幕,并将光所在行置于屏幕的中央绘标(注意是CONTROL-L,不是CONTROL-1)>> 找到光标,留意其附近的文字,然后输入C-l。
Emacs使用手册Emacs启动:直接打emacs,如果有X-windows就会开视窗.如果不想用X的版本,就用emacs-nw(No windows)起动.符号说明C-X表示按住CTRL键,然後按X,再把CTRL,X一起放开.M-X META META在没有META键的电脑上,M-X等於先按ESC键,接著按X键.Sun上面META键就是菱形的那个键.有些系统META键就是ALT键.(或者某一边的ALT键)C-X或M-X的X没有大小写分别.Emacs按键命令基本上是一串C-<chr>和M-<chr>组成的.超过两个以上的按键命令,Emacs会在萤幕最下面一行显示你按过什麽.这一行叫作mini buffer结束Emacs按C-x C-c取消执行C-g有些Emacs命令会跑很久,可以用C-g中断之.按错键也可以按C-g取消.上下移动C-p向上(previous line)C-n向下(next line)左右移动C-f向右(forward)C-b向左(backward)其实Emacs内部没有行的概念,把一篇文章放在一个大buffer里面,所以C-f(forward)就是向档尾移动,C-b(backward)是移回去的意思,一次一个字.翻页下一页C-v(view next screen)上一页M-v翻页时,上一页末尾会留一点在萤幕最上面,以维持连续性.Emacs在游标接近萤幕最下方时会自动跳半页,把档案往前挪一点,方便阅读.重画萤幕C-LEmacs里面游标的专有名词叫point.point==游标目前的点游标一次跳一个字(word)M-f往後跳M-b注意C-f与M-f,C-b与M-b的对称性.移到行头C-a行尾C-e移到句首M-a到句尾M-e(M-a到上一个句点後面,一个句子的起头.M-e到句点後面)移到档头M-<档尾M->删除游标目前指的/後面的字C-d前面的字DEL(Delete键)DEL的正名叫Rubout(Rub out)M-DEL往回删一个字(word)M-d往前删(游标後面)C-k删至行尾(kill)M-k删到一句子结尾(删到句点)(kill)注意Backspace=C-h在Emacs下是help的意思後面有(kill)的,表示此删除的动作是kill,不太等於delete.emacs会把kill掉的东西放到kill ring去,算是一种暂存的地方,以後可以叫出来.见yank说明.Undo:C-x uC-_等於C-x u有些DEC终端机,C-/就是C-_有时等於C-Shift--重复执行举例,向右移8个字,C-u8C-fC-u在Emacs里是蛮特别的,用来设定一些引数(argument/repeat count)给其後的命令.C-u20C-n向下移20行有一个特别的例外,C-u3C-v不是翻三页,而是整个萤幕向上移三行.据说这比较有意义.C-u10C-x u UNDO10次给C-L一个引数会怎麽样:C-u0C-l会重画萤幕,并且把目前的行移到萤幕第一行.另外,C-u100等於M-100C-u数字等於M-数字X windows下,C-left C-right一次移一个字(word).C-up C-down移动一段(paragraphs/C语言的话是block)Home=C-aEnd=C-eC-Home=M-<C-end=M->PgUp PgDn=M-v C-v设定重覆次数更加简单,比如要向右移10个字C-1C-0right-arrow就是按住CTRL,然後打10就对了,比C-u10简单.Mouse中键用来选取有hi-light的地方.右键是menu-button如果不小心按两次ESC,等於M-ESC,会有一个讯息跑出来说你按到一个被disable的命令.这是高级指令,作者认为初学者用不道,所以会问你要不要启动它,一般回答no.如果某一行太长,萤幕显示不下,Emacs会在萤幕最右边打个$,表示此行未完,右边还有.把一行拆成两行:在想拆处按Enter即可.合并两行为一行:在行尾按C-d(或行首按DEL)Yank:吐出被删掉的(killed)东西.只要用kill(C-k,M-k等)删除,超过一个字的资料,emacs就会把它存起来,然後C-y可以把它叫出来.功能跟Cut&Paste一样.Kill和delete不一样,只有被kill掉的东西才能用yank吐回来.游标在同一地方不动,连续kill掉的资料会被当成一次kill掉的,yank时会一起回来.被Kill掉的资料是放在称作kill ring的资料结构上面,ring就是个圆圈,被kill掉的东西会依序摆在圆圈上.yank会放回最近一次kill掉的资料.如果不是你想要的话,用M-y可以换.(M-y就是告诉emacs,不对不对,我不是要这一个,换前一个给我).M-y要紧接在C-y之後.拷贝文字的方法==连续C-k几次,把要拷贝的行全部删掉,然後按C-y弄回来.再到想复制的地方按一次C-y,就成了.把要拷贝的资料kill掉在yank回来好像很笨.是有比较文明的方法,那就是M-w,不过较麻烦.首先,要先设标记.Mark用C-SPC或C-@设.然候把游标移到另一端,按M-w就可以把mark到point间的字存到kill ring上.point就是游标的意思.Emacs不会把Mark起来的地方用highlight表示,除非在X下.在X下,可以用M-w来拷贝用滑鼠反白的文字.kill&yank就是cut&paste的意思.以上大部份指令对Bash的命令列编辑也有效档案操作读档:Emacs术语叫finding a file.C-x C-f然後在mini-buffer输入档名.输入档名时,SPC键有auto-complete的功能,或者会秀出到目前为止档名前几个字和输入一样的.(TAB键也有类似功能)C-x C-f叫find-fileC-x C-s存档(save current file,save current buffer)C-x s存所有的档C-x i插入档案把另外的档案的内容读入目前编辑区内视窗Emacs把档案读进来,存在buffer中.我们透过window来看/编辑buffer.两个视窗会把萤幕切成两部份,他们可以同时显示相同的,或不同的档案.对初学者而言,最需要的是记住怎样让不想要的视窗消失:C-x0关掉目前的视窗C-x1会让目前的视窗占满整个萤幕(One Window),取消/关掉其他的视窗.Emacs里面有许多功能都会开一个小视窗来和使用者沟通,显示讯息.有时候不会自动消失很讨厌,C-x1就很有用.另一个功能是如何跳到另一个视窗.C-x o(other-window)C-x2把目前的视窗切成两个(水平分割)C-x3(垂直分割)C-x4是一串与视窗有关的指令.C-x4是一串与视窗有关的指令.C-x5则是扩展到X的视窗,称为frame.C-x52就是再开另一个X视窗(frame).多档编辑C-x C-b看目前有那些buffer(buffer就是emacs放开起的档案的地方). C-x b然後在minibuffer输入buffer的名字,可以切换编辑buffer.TAB键也有作用.有些内部的buffer(就是没有档案的buffer),是用*开头和结束,这个也要打,如*scratch*最候提醒:C-x1可以把多馀的视窗关掉.Emacs扩充指令前面介绍的emacs按键大部份都是C-<chr>或者M-<chr>的形式.这是最简单的按法,由一对按键构成一个指令.Emacs的按键可以超过2个以上.如C-x1或C-x C-b.一般超过一个按键组合的命令都是用C-x开头.另外你也可以直接下命令.按M-x之後就可以打一个Emacs命令来执行.一般这些命令名字都很长,不过都不常用.等一下我们会介绍一些.还有介绍怎麽把这些命令设成按键指令.C-x C-c就是结束Emacs.不过一般Emacs很笨重,一旦起动就不轻易退出.所以比较常用的是C-zC-z把Emacs暂停,回到命令列.当你下次再需要编辑时,打fg%emacs就可以把Emacs唤醒.在X下,C-z会把emacs缩成iconmode lineemacs编辑画面由编辑区(buffer)状态列(modeline)和对话区(minibuffer)构成.这里解释modeline显示的讯息.以下是个范例:--**-XEmacs:xemacs.qs(Fundamental)----74%-------由後面往前解释,74%表示游标的位置.(Fundamental)表示编辑模式.这是最原始的模式.编辑不同种类的文章可能希望用不同的模式,比如说C-mode,lisp-mode,tex-mode,text-mode等等.在不同模式下可能多一些按键出来.举例text-mode.M-x text-mode可以切入text-mode,这是一般人编辑文字使用的模式.和Fundamental mode 没什麽差异.不过游标移动时,Emacs对一个字的定义就有所不同,因而M-f M-b等移动一个字,一个段落的指令就可能会停在标点符号的前面.此时状态列变为...(Text)----70%---以上说的是Major mode.另外还有minor mode,其实就是一些额外的功能.比如说,M-x auto-fill-mode则状态列显示(Text Fill).auto-fill就是自动断行,让文章每行固定有70个字.M-X fundamental-mode可以变回来.这里要说明一下,emacs在minibuffer下有auto-completion的功能,也就是打M-x fund然後按SPC,它会自动补全fundamental-mode,不用全打.如果有两个以上的选择,它会告诉你.这个功能对find-file(C-x C-f)等等档案编辑功能也有效.前面提过.最後解释两个**号.右边的*表示文章被修改过了.左边的*表示这个编辑区(buffer)可以修改.有一些emacs的buffer是read-only buffer,就会标成%%%表示档案是read-only.C-x C-q可以解开read-only的锁定,无论如何你要改这个编辑区.这是个toggle指令,如果原来是可以修改的,C-x C-q会把它切成read-only.Search没有Search功能的编辑器简直就是小朋友的玩具.Search是一项很重要的功能,所以emacs也提供的很完善.C-sC-rM-x re-search-forwardM-x re-search-backwardM-x search-forwardM-x search-backward以上这些指令是基本的search指令.C-s,C-r是increamental search,就是你打字的同时,emacs就直接帮你找.一个是forward,一个是backward.找到了怎麽办?按C-g可以取消搜寻,跳回原来的位置.按Enter就让游标停在找到的地方--此时minibuffer显示:Mark saved where search started 什麽意思?就是isearch帮你在原来的位置设了一个mark,然後把point (cursor)移到新的位置.想跳回去原先的地方?C-x C-x就可以了.(exchange-point-and-mark)C-u C-SPC可以依序跳回前几次设mark的地方.(C-SPC是设mark,给它一个argument,就是反动作)(还记不记得C-u可以给後面的指令设一些参数.有些指令拿这个参数来当作repeat count,有些指令就只拿来当作on/off,true/false,set/clear而已)M-x re-search-forward可以让你用regular expression搜寻.M-x search-forward则没有increamental的功能.另外一个指令,作用和grep很像:M-x occure和search相提并论的就是replace.M-x replace然後按SPC,就知道了.Emacs的设定:Emacs的设定档是$HOME/.emacs你应该多少知道,emacs是用lisp写成的编辑器,.emacs档也都是要用lisp的语法设定.emacs用的lisp称为elisp,和一般的lisp差一点点.有一个info page,emacs-lisp-intro,深入浅出的介绍emacs lisp.如果你还不会,不懂programming,强烈建议你看这份文件.如果你会texinfo,你可以把它很漂亮的印出来.(内容一点点而已,两三天就看完了)如果你把.emacs搞砸了,进emacs很奇怪,怎麽办?1.用vi改.emacs:>2.emacs-q进emacsMajor Modes一般常见的emacs major mode有fundamental-modetext-modelisp-mode有自动对括号/重排,直接执行lisp code功能.c-mode/cc-mode c-mode是比较旧的c-mode,cc-mode应该是目前新的c-mode.有自动重排/对括号的功能.也可以在emacs内compile,跳到compiler error修正错误.执行程式时debug.(配合dbx/gdb)compile是透过Makefile进行.tex-mode Tex/Latex编辑模示.可能是打一些奇怪的标点符号比较方便.<programming-language>-mode同lisp/cc-mode.如果是interpreter的话,emacs通常都可以直接执行/debug.<programming-language>-mode还有tags的功能,後述.html-mode,texinfo-mode,sgml-mode:编写html,texi,sgml之用.w3-mode WWW browser.在x-win上不满意,但可以接受...TagsTags是一个显为人知的功能?所以我想提一下.这不是emacs发明的,而是vi原本的特异功能.emacs只是发扬光大而已.假设你有一个目录,里面是一个程式的原始码,比如说,tin的原始码,放在~/tin-1.3beta下面.你想看它们.首先,叫emacs cd到该目录:M-x cd然後,建立tag table.tag table就是一张对照表,记录哪个符号(variable/function call)对映到哪个档案的哪个地方.有这张表,emacs可以让我们快速的在程式码内游走.一般这张表是一个档案,叫作TAGS(大写)M-!etags*.[ch]M-!是执行external shell command的意思.etags就是emacs的建表程式.你只要告诉它你的source code在那□即可.vi的话是使用ctags这个程式,它建出来的档名叫tags(小写).因为我们介绍emacs,所以不管它.然後,怎麽看程式?你知道所有的C程式都是由main()开始,所以你想找到main()在哪个档案.这时只要按M-.然後emacs会问你tag table在哪里.因为我们已经cd到该目录,直接按enter就好了.然後输入main, emacs就会把你带到main(){...}去.如果你看到某个程式片断呼叫一个你没看过的函式,你可以把游标移到该函式的名字上,M-.ENTER就搞定了.如果emacs找错了(比如有变数和函式同名,emacs跳到变数去),那你可以用C-u M-.找下一个.在编辑程式码的时候,M-SPC很有用,它会把游标附近的空白缩成一个.在其它地方也有效.Emacs的一些package:M-x dired(或C-x d)游走/编辑目录,就是档案总管的意思:)M-x man就是man pageM-x shell开个command prompt,不过不能跑vi,elm,tin...M-x gnus读新闻/读信M-x rmail读信M-x vm view mailM-x mh-rmail读信(package mh-e)M-x mh-smail送信(package mh-e)强列建议改用emacs读news/bbs.世界会更美好!读信的话就要看你的感觉.这些读信程式都会把信从系统的mail folder搬到自己的目录下,占用quota,我不喜欢:p建议elm或mutt.除非参加mailling list配合procmail.不然不实用.用mh-e须要装mh这个外部程式,不太好.建议vm或gnus.写完信,C-c C-c就可以送信.如果你的资料用rcs/sccs作版本管理,emacs自动会起动version control (minor mode.),c-x c-q变成check-in/check-out.如何取得更多的资讯:Emacs的lisp经过多年的发展,已成为完整的self-documenting系统.很多东西都可以线上找到你要的资讯.前面说过,或者你已经不小心按backspace遇到了,C-h(就是backspace的ascii码)在emacs里面是help的意思,它可以带出一串指令.常用的有:C-h F Emacs FAQC-h t Emacs使用教学C-h n Emacs NEWS file,介绍最近改版的新功能C-h i Info 是gnu用来取代man page的系统,基本上和文字模示的WWW差不多.有许多重要的资讯可以在这边找到.如果你是新手,建议你在x-win下看.不然,按键m(menuitem),SPC next pagel(last node:node就是章节的意思)u(up node)d(directory,索引).BS(Backspace,back a page).如果全部只按SPC,就跟man一样.C-h k describe key,告诉你按这个键执行那个lisp function.C-h f describe function.告诉你function在作什麽.如果只按SPC,emacs会给你所有lisp函数的列表,和说明.C-h v describe variable同function.C-h a apropos的意思(approximate).给lisp function的部份字串,emacs帮你找.C-h b列出目前所有的keybindingC-h m mode help.列出目前的mode的特殊说明.C-c C-h列出以C-c开头的所有key-binding.虽然说Emacs可以定义按键,可是Ctrl-开头的所有组合大概都用光了,只有C-c算是可以自定指令.不过有些mode也侵犯这个空间.目前的convention是C-c<chr>留给user,C-c C-<chr>留给package.有以上这些help,你的emacs/elisp功力会随著时间成长.Elisp简介:Emacs有三份手册.第一份是使用手册,第二份是Elisp手册,第三份是Elisp简介.第三份的程度是入门级,值得看.Elisp手册其实也写的很简单,还教你lisp,不过有点长,适合参考.因为我lisp没有仔细学过,所以:以下所言,如有巧合,那才是真的.Basic data type字串(string)"Hello,World"字元(char)?a;问号开头atom&list:(1234)是一个list,由4个atom组成.pair:中间是句点.(apple.2)alist(associated list)就是一堆pair的集合,就像perl/tcl的associative array.或者说是一个资料库,一堆(key,value)pair.'((Apple.1)(Orange.2)(PineApple.3))vector(?)emacs19用vector来表示按键(key strok sequence)[f1][f2][f1a]nil就是空的list,或者表示falset trueForms我们写程式最好有样版让我们填空最简单了.Form就是样版,不过意义不太一样.Form就是Elisp可以接受的句型.lisp解译器预设是对list的每个元素求值(evaluate),除非是special form,有特殊的定义.比如说(defun FUNC(ARG-LIST)BODY...)就是一个special form,用来定义函式,所以FUNC不会被求值,被当成symbol,...(quote(LIST))这也是个special form,叫lisp把(LIST)当做symbol就好了,不要evaluate.quote很常用,所以有个缩写:'(LIST)等於(quote(LIST))'Asymbol可以表示一个Atom,名称叫Asymbolset可以产生/定义新的变数.(set'hello1);hello=1;注意我们用'hello,所以lisp不会evaluate hello的值.这家伙很常用,也有简写.(setq hello1)setq就是set quote的缩写.这是个special form,不会对第二个元素求值.valuation在Emacs下,C-x C-e可以执行(evaluate,求值)游标左边的叙述.结果会出现在minibuffer.lisp-interaction-mode中C-j可以evaluate,并且把结果append到buffer.lisp程式由一堆list构成.称为expression.每个expression都回传回一个值.有些expression有副作用,如删掉一个字.(这跟C的int delete_char()意思一样,它传回int,并且删掉某个char)定义函式:(defun NAME(ARGS-LIST)"注解";optional(interactive);optionalBODY)定义一个叫NAME的函式.BODY是一堆expression.注解是用来给C-h f显示的.(interactive)表示这个函示会和user/buffer作用.(interactive"B")表示执行此函式先问user一个buffer的名字,然後当作参数传给它.(如,当user透过key-binding或者M-x呼叫此函式时)(interactive"BAppend to buffer:\nr")问user buffer name时,提示号Append to buffer:此function有两个引数,第一个是B,就是buffer第二个是r,region用\n隔开.(interactive"p")用C-u设的prefix把它当作参数传给我.预设值==4.C-u C-f向右移四个字一些lisp函式:(list1234)产生'(1234)(car'(1234)1(cdr'(1234)'(234)(cons1'(234))'(1234)(cons12)(1.2)(cons0(cons1(cons2nil)))等於'(012){list是用pair串起来的,用C表示:pair:{Object*first,Object*second};*(pair[i].first)==i;pair[i].second==pair[i+1];}(cons'(12)'(34))'((12)34)(setq a1)(1+a);a+1(+2a);a+2(*1234)(current-buffer);传回目前buffer的资料物件(switch-to-buffer(other-buffer))(set-buffer)(buffer-size)(setq current-pos(point))(point-min)(point-max)(message"Hello");在minibuffer显示Hello(if(test)(then-part)(else-part))(cond((test1)BODY1)((test2)BODY2)(t OTHER-WISE)(let((var1value);local variablevar2;no value(var3value)...)BODY...)(lambda(ARG-LIST)...)同defun,但是没有名字(anonymous).可以存到变数去:(setq hello(lambda()(message"Hello,World")))(funcall hello)(goto-char(point-max))(defvar VAR VALUE"*注解")如果VAR不存在才定义.有注解可以用C-h v看.注解打*号表是使用者可以直接改/这个变数本来就是给使用者设定用的.可以用M-x edit-options来线上设定(emacs结束就没有了,不过edit-options可以给你所有可修改的变数的列表,你可以放到.emacs档内.(directory-files"./"t"\\..*")return a list of files under directory X(load"xxxx.el")同#include<stdio.h>给使用者设定用的.可以用M-x edit-options来线上设定(emacs结束就没有了,不过edit-options可以给你所有可修改的变数的列表,你可以放到.emacs档内.(directory-files"./"t"\\..*")return a list of files under directory X(load"xxxx.el")同#include<stdio.h>(setq load-path(cons"~/emacs"load-path));load的search path. (autoload...)不像load会直接evaluate整个档案,而是需要时再load.(local-unset-key[(control c)])(local-set-key[(control c)a]'forward-sexp)sexp就是一个expession,n个expression如果用括号括起来就算一个.(expression的定义随语言的不同而有不同,在C,lisptex,html,fortran下皆有差异)。
教程简介本教程讲什么?第 1 页(共4 页)Emacs 是一个流行的无模式文本编辑器,有许多强大的功能。
本教程将教您使用 Emacs 的基础知识。
为了让您很快熟悉这个优秀的编辑器,本教程先讲述基本概念和常用操作,然后在这基础上提高。
要掌握使用 Emacs 的入门知识,需要经历陡峭的学习曲线。
我们的目的是帮您学会起初不熟悉的界面,这样,Emacs 的力量和用途就变得明显。
然后您就可以根据本教程末尾的参考资料和技巧,自己去深入研究。
谁应该学习本教程?第 2 页(共4 页)Emacs 的主要用户是程序员和 Web 开发者,他们要充分利用这个强大的灵活的文本编辑器,从而提高他们的效率。
另外,对于在 UNIX 或相似环境下履行管理职责的人来说,对 Emacs 的起码的一点熟悉是有用的。
在您开始前第 3 页(共4 页)在学习本教程的过程中,所有您需要的就是 Emacs 的副本,GNU Emacs 或 XEmacs。
如果您正在运行 Linux,那么您可能已经装入了它。
检查的方法是在命令行提示符后输入 emacs。
如果什么都没发生(或您得到“command not found”之类的消息),那么请用您的分发版附带的软件包工具来安装其中的一个软件包。
运行另一种操作系统?查看链接在上面的站点,找到您能用的 Emacs 版本。
作者简介第 4 页(共4 页)Brian Bilbrey 是系统管理员、Web 管理员、产品和 PWB 设计师、作家和 Linux 的倡导者。
他的名片被人读作 NPS,NPS 代表 No Particular Specialty,意思是“没有特别的专业”。
Brian 在日常工作中使用 Linux,象有些人换衣服一样换他的窗口管理器和喜欢的应用程序。
新的分发版就象面包和水那样不可或缺,目前,Brian 正在高兴地试用 Gentoo Linux。
他的 Linux 活动和其它经历的每日网页更新记录可在 找到。
emacs高级用法一、Emacs基本用法1. Emacs is a super - powerful text editor. I can just open it up and start typing away like I'm pouring my thoughts onto a digital canvas. For example, if I want to write a simple note, I open Emacs, and it's like stepping into a blank room where I can arrange my words however I like. “Emacs就像一个超级强大的文本编辑器。
我只要打开它就可以开始输入,就好像把我的想法倾倒在数字画布上一样。
例如,如果我想写一个简单的便签,我打开Emacs,这就像是走进一个空白的房间,我可以随心所欲地排列我的文字。
”2. One of the basic things in Emacs is moving around. I use the arrow keys, but there are also these cool shortcuts. It's like having a secret passageway in a maze. For instance, Ctrl - f moves the cursor forward one character. “Emacs的基本操作之一就是移动光标。
我可以使用方向键,但也有一些很酷的快捷键。
这就像是在迷宫里有一条秘密通道。
例如,Ctrl - f可以将光标向前移动一个字符。
”3. Saving a file in Emacs is a piece of cake. I just hit Ctrl - x Ctrl - s. It's as easy as closing a box after you put something in it. “在Emacs 中保存文件很容易。
Emacs技巧一、Emacs简介Emacs是一款强大的文本编辑器,广泛应用于开发者和程序员的工作中。
它具有高度可定制性和扩展性,使得用户可以根据自己的需求进行个性化配置,提高工作效率。
本文将介绍一些常用的Emacs技巧,帮助读者更好地利用这个编辑器。
二、基本的编辑操作2.1 光标移动在Emacs中,使用键盘上的方向键可以移动光标。
除此之外,还有一些快捷键可以更快地移动光标,例如:•C-a:将光标移动到行首•C-e:将光标移动到行尾•C-f:将光标向前移动一个字符•C-b:将光标向后移动一个字符2.2 文本选择在Emacs中,可以使用组合键来选择文本。
例如:•C-space:开始选择文本•C-w:剪切选中的文本•M-w:复制选中的文本•C-y:粘贴剪切或复制的文本2.3 撤销和重做在编辑过程中,我们经常需要撤销一些操作或者重新执行之前的操作。
Emacs提供了相应的快捷键来实现这些功能:•C-/:撤销最后一次操作•C-_:撤销最后一次操作(与C-/相同)•C-g:取消当前操作•C-x u:撤销多次操作(可重复执行)三、Emacs插件Emacs的真正强大之处在于它的插件系统。
通过安装和配置插件,我们可以进一步扩展Emacs的功能。
下面介绍几个常用的插件:3.1 HelmHelm是Emacs的一个增强型补全框架,可以用于快速浏览和选择各种内容,如文件、缓冲区、命令等。
它提供了更好的交互体验和更高的效率。
3.2 MagitMagit是一个强大的Git客户端,可以在Emacs中进行Git操作。
它提供了一套完整的Git工作流程,包括提交、拉取、推送、合并等操作。
使用Magit,我们可以更方便地管理和操作代码库。
3.3 Org ModeOrg Mode是Emacs中的一个组织和记笔记的工具。
它可以用于创建和管理待办事项、记录日程安排、撰写文档等。
Org Mode具有强大的功能和灵活的语法,可以帮助我们更好地组织和管理工作。
【Linux】Emacs教程中文版Emacs的命令通常包括控制键(就是上面标有 Ct rl或C tl的那个)或者是MET A键(上面标有ED IT或AL T)。
为了方便起见我们将用下面的缩写来代替这些键的全称:C- 意思是当敲入字符时同时按住控制键,因此,C-f表示:按住控制键并且按f 。
M- 表示当键入时按住MET A 或ALT或EDIT键。
如果没有ME TA 或ALT或E DIT键,则用ESC键代替。
表示ESC键注意:退出Emac s,按C-x C-c(两个字符)。
在文本左边区域的“>>”符号表示让你试着使用一个命令。
比如:>> 现在键入C-v(观看下一屏)移动到下一屏。
(就象前面说的,按v的同时也按住控制键)。
从现在开始,每当你读完一屏的时候都可以用它来翻屏。
注意在翻屏后会保留上屏的最后一行;这是为你继续阅读文本提供某些连贯性。
你所需要知道的第一件事是如何把光标从一个地方移动到另一个地方。
你已经知道了如何向前翻一屏--用 C-v。
要向后翻一屏,键入M-v。
>> 试着键入M-v 和 C-v 几次。
* 摘要(SUMMAR Y)---------------------------下面几个命令对整屏观看时有用:C-v 向前翻一整屏。
M-v 向后翻一整屏。
C-l 清除屏幕并重新显示所有的文本,然后把光标移动到屏幕的中央。
(注意是C on trol-L,而不是 Contro l-1)。
>> 寻找光标,并且注意它在文本里的位置。
然后键入C-l。
再寻找光标你会注意到光标现在会出现在同样的文本附近。
* 基本光标控制(BASICCURSOR CONTRO L)-----------------------------------------------------------------整屏整屏的移动是很有用的,可是如何把光标移动到屏幕上文本里的一个指定的地方呢?有好几个方法可以实现。
Emacs 是一款功能强大的文本编辑器,广泛应用于编程、写作和其他任务中。
以下是Emacs 的一些常用用法:1. 打开 Emacs:在终端中输入 `emacs` 命令即可打开 Emacs 编辑器。
2. 新建文件:使用 `C-x C-f` 快捷键(按住 `Ctrl` 键同时按下 `x` 和 `f` 键)可以在Emacs 中创建一个新文件。
3. 保存文件:使用 `C-x C-s` 快捷键(按住 `Ctrl` 键同时按下 `x` 和 `s` 键)可以保存当前正在编辑的文件。
4. 复制和粘贴文本:使用 `C-space` 快捷键来标记(或选中)要复制的文本,然后使用`M-w` 快捷键(按住 `Alt` 键同时按下 `w` 键)将其复制到剪贴板。
使用 `C-y` 快捷键(按住 `Ctrl` 键同时按下 `y` 键)将剪贴板中的文本粘贴到 Emacs 中。
5. 撤销操作:使用 `C-/` 快捷键(按住 `Ctrl` 键同时按下 `/` 键)可以撤销最近的操作。
6. 查找和替换文本:使用 `C-s` 快捷键(按住 `Ctrl` 键同时按下 `s` 键)可以在文件中查找指定的文本。
使用 `M-%` 快捷键(按住 `Alt` 键同时按下 `%` 键)可以查找并替换文件中的文本。
7. 编辑多个文件:使用 `C-x C-f` 命令打开一个文件后,可以使用 `C-x 2` 或 `C-x 3` 快捷键拆分窗口并在同一编辑器中打开另一个文件。
8. 运行 Shell 命令:使用 `M-!` 快捷键(按住 `Alt` 键同时按下 `!` 键)可以打开 Shell 窗口,并在其中运行命令。
这些只是 Emacs 的一些基本用法,Emacs 还提供了很多高级功能和自定义选项。
如果你想深入了解 Emacs 更多细节,可以查看 Emacs 文档或参考其他资料。
Emacs教程初步——轮子注:1.本文内容大都来自网络,我只时进行了分类编辑,版权属于原作者。
(公司内部使用,不要外传)2.如果你是第一次使用Emacs,可能感觉非常别扭,但不用担心,当你能够熟练使用一些基本操作后,你会喜欢上它的。
1.Emacs是什么Emacs是一种强大的文本编辑器,在程序员和其他以技术为主的计算机用户中广受欢迎。
Emacs,即Editor Macros(编辑器宏)的缩写,最初由Richard Stallman(理查德·马修·斯托曼)于1975年在MIT协同Guy Steele共同完成。
这一创意的灵感来源于TECMAC和TMACS,它们是由Guy Steele、Dave Moon、Richard Greenblatt、Charles Frankston等人编写的宏文本编辑器。
自诞生以来,Emacs演化出了众多分支,其中使用最广泛的两种分别是:1984年由Richard Stallman发起并由他维护至今的GNU Emacs,以及1991年发起的XEmacs。
XEmacs 是GNU Emacs的分支,至今仍保持着相当的兼容性。
它们都使用了Emacs Lisp这种有着极强扩展性的编程语言,从而实现了包括编程、编译乃至网络浏览等等功能的扩展。
在Unix文化里,Emacs是黑客们关于编辑器优劣之争的两大主角之一,它的对手是vi。
2. Emacs的安装和配置2.1 安装1)源码安装:从/pub/gnu/emacs/下载源码安装2)在Ubuntu上用sudo apt-get install emacs安装2.2 配置在~/目录下有个隐藏的.emacs文件(如果没有,可以自己创建一个),这个就是Emacs 的配置文件。
Emacs在启动的时候会读.emacs文件,根据里面的配置设置启动后的状态。
配置文件的内容要用elisp语言编写。
在这里你可以设置自己的颜色主题,字体,快捷键,以及一些Emacs模式(如emacs wiki)的配置等等。
emacs 教程Emacs是一个功能强大且高度可定制的文本编辑器。
它是许多开发人员、程序员和技术工作者的首选工具之一。
本文将介绍Emacs的一些基本操作和常用功能。
1. 启动和退出Emacs要启动Emacs,只需在终端中输入"emacs"命令即可。
你也可以指定一个文件名,在启动时直接打开该文件。
要退出Emacs,可以使用以下命令:- 按下Ctrl+X Ctrl+C- 输入命令"save-buffers-kill-terminal"并按下回车键2. 基本的编辑操作- 打开文件:按下Ctrl+X Ctrl+F,然后键入文件路径并按下回车键。
- 保存文件:按下Ctrl+X Ctrl+S。
- 复制文本:按下Ctrl+Space选择文本,然后按下Ctrl+W。
- 粘贴文本:将光标移动到目标位置,按下Ctrl+Y。
- 撤销操作:按下Ctrl+_或Ctrl+/。
3. 导航和搜索- 移动光标:使用方向键或者按下Ctrl+N(向下移动一行)、Ctrl+P(向上移动一行)、Ctrl+F(向右移动一个字符)、Ctrl+B(向左移动一个字符)等。
- 移动到行首或行尾:按下Ctrl+A(行首)或Ctrl+E(行尾)。
- 搜索文本:按下Ctrl+S进入搜索模式,然后键入要搜索的文本并按下回车键。
按下Ctrl+S继续搜索下一个匹配项,按下Ctrl+R搜索上一个匹配项。
4. 标记和选中文本- 标记起始点:按下Ctrl+Space。
- 移动光标并选中文本:使用方向键。
- 复制选中的文本:按下Ctrl+W。
- 剪切选中的文本:按下Ctrl+X。
5. 更多的功能和自定义- 撤销操作栈:按下Ctrl+X Ctrl+U。
- 执行外部命令:按下Meta+X,然后输入外部命令并按下回车键。
- 自动完成:按下Meta+/补全当前输入的单词。
- 加载和使用插件:编辑Emacs配置文件,通常是~/.emacs文件,添加插件配置信息。
emacs技巧Emacs是一种非常强大的文本编辑器和集成开发环境,它提供了许多强大的功能和技巧,可以大大提高编码和写作的效率。
在本文中,我们将介绍一些常用的Emacs技巧,以帮助你更好地利用这个强大的工具。
1.基本操作首先,我们来了解一些Emacs的基本操作。
在Emacs中,你可以使用光标键(上、下、左、右)来移动光标,使用Ctrl-f和Ctrl-b 来逐个字符地向前和向后移动,使用Ctrl-n和Ctrl-p来逐行地向前和向后移动。
你还可以按住Shift键加相应的光标键来选中文本。
2.搜索和替换在Emacs中,你可以使用Ctrl-s来搜索您的文本。
输入你要查找的关键字,按下Enter键,Emacs将会定位到第一个匹配的位置。
如果你要查找并替换文本,你可以使用Ctrl-s来搜索,然后使用Ctrl-%(也可以使用Esc-%)来替换文本。
3.多窗口操作Emacs支持同时打开多个窗口来编辑多个文件。
你可以使用Ctrl-x 2来在当前窗口的下方打开一个新的窗口,使用Ctrl-x o来在多个窗口之间切换。
使用Ctrl-x 1命令可以关闭其他窗口,只保留当前窗口。
4.宏录制和重放Emacs具有宏录制和重放功能,可以帮助你自动生成重复的编辑操作。
你可以使用Ctrl-x (来开始录制宏,然后执行一系列的编辑操作,最后使用Ctrl-x )来停止录制。
然后,你可以使用Ctrl-x e重放宏并将这些编辑操作应用于其他位置。
5.代码补全Emacs提供了自动代码补全的功能,可以大大提高编码的速度和准确性。
你可以使用M-/来触发代码补全。
Emacs会自动根据当前上下文提供可能的补全选项。
你可以使用上下箭头键进行选择,然后按下Enter键来插入选中的代码。
6.命令行界面Emacs有一个强大的命令行界面,可以帮助你执行各种任务。
你可以使用M-x来启动命令行界面,并输入你要执行的命令。
例如,你可以输入compile来编译当前文件,输入shell来启动一个交互式的命令行Shell。
Emacs 基本编辑命令(1)Emacs的强大功能相信大家都已经听说过了, 熟悉vi或windows下IDE 工具开始使用时Emacs会觉得十分难受. 这一节讲一下基本的几个编译命 令, 首先说明一下以`C-'开头的是 `Ctrl'键加上后面的键一块按下, 例如 `C-x 0'就是Ctrl键和 x键一块按下, 然后再按下0, 以 `M-'开头的就是META键, 一般就是 Alt键.•`C-x C-f 文件名' -- 打开文件•`C-x C-s' -- 保存文件•`C-x C-c' -- 退出Emacs•`C-x u' -- 取消上一次操作有了这四个基本指令就可以进行通常的编辑保存功能了, 不过现在你 肯定感觉不到Emacs 的强大功能. 甚至会觉得Emacs还不如Windows的 Notepad, 别急, 熟悉一下Emacs后我们再来感受Emacs的超强功能.Emacs基本编辑指令(2)我们继续讲解Emacs的基本指令, 这一部分讲解基本的光标指令, 你 可以用Emacs打开一个文件, 我们一起来"运动"•`C-v' -- 向后翻一页•`M-v' -- 向前翻一页•`C-l' -- 将当前行居中•`C-f' -- 向前移动一个字符`M-f' -- 向前移动一个单词•`C-b' -- 向后移动一个字符`M-b' -- 向后移动一个单词•`C-n' -- 向下移动一行`C-p' -- 向上移动一行•`C-a' -- 移至当前行的第一个字符`M-a' -- 移至当前所在句子的第一个字符•`C-e' -- 移至当前行的最后一个字符`C-p' -- 移至当前所在句子的最后一个字符•`M-<' -- 移动到当前窗口的第一个字符`M->' -- 移动到当前窗口的最后一个字符注意: `M-<'输入时要同时键入`Alt', `Shift'和`,'这些命令前可以加入`C-u N'表示重复N次, 例如向下移动8行可以这 样按键`C-u 8 C-n'好了, 基本的移动指令就介绍完了, 可能这些键使用起来是不太顺手, 在本章最后, 我们将讲一下如何定制这些键, 使Emacs更加符合个人的使用 习惯.Emacs 中文设置JerryEmacs发展到今天, 功能已经十分完善和强大, Emacs有强大的多语言编辑功 能, 当然设置的得当才能发挥出Emacs的强大功能, 下面讲述一下在Windows 以及X Window上的多语言的设置问题3.1 系统对多语言的支持性3.1.1 Console环境这里的Console是像Windows下的cmd, command, Unix下的console, tty 的统称, Console 环境下, 只要本身能正常显示中文就可以了, Emacs自 带输入法, 基本上不用怎么设置就可以使用3.1.2 Windows系统Windows本身对多语言支持的已经是十分完善了, 只是要切换缺省语言 比较麻烦, 设置完后总要重启(针对Windows 2000和Windows XP), Emacs对中文的支持也因版本的不同而不同, 通常的方法和在X Window 下类似, 需要设置对应的字体, 而Windows下最好使用bdf 字体, 相关的 字体可以在XEmacs站点上下载到, 我用的是intlfonts-1.23.1.3 X Window系统X Window下首先需要汉化X, 使X能正常使用中文, 其实和Windows差不 多, 也不过是设置字体, 因为X本身已经对多语言提供支持(建议使用 XFree86 V4.2及以上版本), X上最好是把Windows下的那些ttf和ttc的 字体拿来使用, 毕竟不是免费字体, 作工还是要好一些3.2 中文设置3.2.1 通用配置这一部分是所有系统都要设置的(set-lan g ua g e-env i r o n m ent 'C hi nese-GB)(set-k e y b o ar d-c odi n g-s y ste m 'euc-cn)(set-cl i pb o ar d-c odi n g-s y ste m 'euc-cn)(set-ter mi nal-c odi n g-s y ste m 'euc-cn)(set-buffer-f i le-c odi n g-s y ste m 'euc-cn)(set-select io n-c odi n g-s y ste m 'euc-cn)(modi f y-c odi n g-s y ste m-al i st 'pr o cess "*" 'euc-cn)(set q d efault-pr o cess-c odi n g-s y ste m'(euc-cn . euc-cn))(set q-d efault pat h na m e-c odi n g-s y ste m 'euc-cn)3.2.2 Windows配置这一部分设置Windows下的字体, 解压intlfonts-1.2, 设置变量fonts-dir为所安装的字体目录(set q f o nts-di r "<pat h t o i ntlf o nts>")(set q b d f-di rect o r y-l i st(l i st(expan d-f i le-na m e "As i an" f o nts-di r)(expan d-f i le-na m e "C hi nese" f o nts-di r)(expan d-f i le-na m e "C hi nese.BIG" f o nts-di r)(expan d-f i le-na m e "C hi nese.X" f o nts-di r)(expan d-f i le-na m e "Et hio p i c" f o nts-di r)(expan d-f i le-na m e "Eur o pean" f o nts-di r)(expan d-f i le-na m e "Eur o pean.BIG" f o nts-di r)(expan d-f i le-na m e "J apanese" f o nts-di r)(expan d-f i le-na m e "J apanese.BIG" f o nts-di r)(expan d-f i le-na m e "J apanese.X" f o nts-di r)(expan d-f i le-na m e "Ko rean.X" f o nts-di r)(expan d-f i le-na m e "M i sc" f o nts-di r)(expan d-f i le-na m e "TrueT y pe" f o nts-di r)(expan d-f i le-na m e "T y pe1" f o nts-di r)))(set q w32-b d f-f i lena m e-al i st(w32-f i n d-b d f-f o nts b d f-di rect o r y-l i st))(create-f o ntset-fr om-f o ntset-spec"-*-f i xe d-m e di u m-r-n o r m al-*-16-*-*-*-c-*-f o ntset-b d f,c hi nese-g b2312:-*-*-m e di u m-r-n o r m al-*-16-*-*-*-*-*-g b2312.1980-*,j apanese-ji sx0208:-*-*-m e di u m-r-n o r m al-*-16-*-*-*-c-*-ji sx0208.1983-*,k ata k ana-ji sx0201:-*-*-m e di u m-r-n o r m al-*-16-*-*-*-c-*-ji sx0201*-*,lat i n-ji sx0201:-*-*-m e di u m-r-n o r m al-*-16-*-*-*-c-*-ji sx0201*-*,j apanese-ji sx0208-1978:-*-*-m e di u m-r-n o r m al-*-16-*-*-*-c-*-ji sx0208.1978-*,t h a i-t i s620:-mi sc-f i xe d-m e di u m-r-n o r m al--16-160-72-72-m-80-t i s620.2529-1,la o:-mi sc-f i xe d-m e di u m-r-n o r m al--16-160-72-72-m-80-Mule L a o-1,t i betan-1-c o lu m n:-T i bM dX A-f i xe d-m e di u m-r-n o r m al--16-160-72-72-m-80-MuleT i betan-1,et hio p i c:-A dm as-Et hiom x16f-Me di u m-R-No r m al--16-150-100-100-M-160-Et hio p i c-U n i c od e,t i betan:-T i bM dX A-f i xe d-m e di u m-r-n o r m al--16-160-72-72-m-160-MuleT i betan-0")(set q f o nt-enc odi n g-al i st(appen d '(("MuleT i betan-0"(t i betan . 0))("GB2312"(c hi nese-g b2312. 0))("JISX0208"(j apanese-ji sx0208. 0))("JISX0212"(j apanese-ji sx0212. 0))("VIS C II"(v i etna m ese-v i sc ii-l ow er . 0))("KS C5601"(ko rean-k sc5601. 0))("MuleArab i c-0"(arab i c-digi t . 0))("MuleArab i c-1"(arab i c-1-c o lu m n . 0))("MuleArab i c-2"(arab i c-2-c o lu m n . 0))) f o nt-enc odi n g-al i st))(set-d efault-f o nt "f o ntset-b d f")注意: 上面的中文字体的大小只能为16,24,40,48, 因为intlfonts 中的BDF字体只有这几种大小的中文字体能匹配上面的chinese-gb2312的配置, 此外在Emacs 21.3中还可以这样设置(set-lan g ua g e-env i r o n m ent 'C hi nese-GB)(set-d efault-f o nt "-o utl i ne-新宋体-n o r m al-r-n o r m al-n o r m al-12-*-96-96-c-*-g b2312")假如你不知道系统的字体就M-x set-default-font, 然后使用TAB 键来看一下补全的字体信息3.2.3 X Window设置X的中文设置我就不说了, 自己搞定吧, 我拷贝了Windows的simsun.ttc 和mingliu.ttc来使用, 看简繁体中文不成问题了, 设置好X的字体后, 通过配置X Resources, 来设置emacs 的字体, 通常就是配置$HOME/.Xdefaults, 1024x768的分辨率下可以设置字体为8x16, 800x600可以设置7x14的字体就可以达到字体等宽的效果e m acs.f o nt:8x16e m acs.pane Fo nt:8x16E m acs.pane.m enubar.f o nt:8x16E m acs.f o re g r o un d:whi teE m acs.bac kg r o un d: blac ke m acs.g e om etr y:100x323.3 Emacs输入法Emacs自带多种输入法, 当然不止一种语言了, 但它自带的中文输入 法实在是太......, 想必不会有谁去用它的中文输入法来输入汉字吧, 不过 还是有几种比较好的输入法像自然码等, 我从fcitx和xcin的源码包中转换出 几种输入法, 有五笔, 注音, 双拼等, 下面说一下使用方法, 可以从/projects/zhdotemacs/下载到emacsim.tar.bz2安装及使用方法, 参见安装包中的INSTALL文件1.安装输入法$tar -xv j f e m acs im.tar.b z2$c d e m acs im$cp -R g b b ig5${e m acs-i nstall-di r}/s h are/e m acs/${e m acs-vers io n}/le im2.配置输入法, 拿gb/pingyin.el为例, 把下面的代码加入到文件 ${emacs-install-dir}/share/emacs/${emacs-version}/leim/leim-list.el中(re gi ster-i nput-m et hod"c hi nese-p i n yi n-g b""C hi nese-C NS" 'q ua i l-use-pac k a g e"拼音""汉字输入∷【拼音】∷""g b/p i n yi n")3.输入法的使用, 按照上面的例子, 使用 `M-x set-input-method RET chinese-pinyin-gb RET' 就可以使用了这一部分对Emacs安装后自带的一些实用的扩展功能进行讲解4.1 auto-insert -- 自动插入功能auto-insert是一个十分有用的功能, 比如我们在写一个C语言的头文 件时, 一般会加入下面的代码#i fn d ef XXX_H#d ef i ne XXX_H#en di f /*XXX_H*/auto-insert就方便了我们, 不用每次都要手工输入这些代码, 新建 一个头文件时, 它会询问是否要加入这些自动生成的代码, 下面来看一下 auto-insert如何使用`M-x aut o-i nsert'会根据当前的mode在新建的文 件插入一些预定的文本, 如果想在打开文件时自动插入的话, 将下面的代码加入~/.emacs中(a dd-hook 'f i n d-f i le-hook s 'aut o-i nsert)修改`aut o-i nsert-al i st'可以定制插入的模板, 可以使用`d ef i nt-aut o-i nsert'来加入或者修改 `aut o-i nsert-al i st'变量`aut o-i nsert'用来定制自动插入时的动作类 型•`n i l'什么都不作, 即不执行插入动作•`t'根据auto-insert-alist和当前的mode执 行对应的插入动作•其他值 同`t', 但是自动插入文本后, 不置 文档修改标志变量`aut o-i nsert-q uer y'定义自动插入文本前是 否询问, `No n-n i l'表示自动插入文本前要询问.变量`aut o-i nsert-pr om pt'设定询问的语句, 如 果有%s, 则将被替换为执行插入的条件变量`aut o-i nsert-di rect o r y'设定模板的路径, 注意必须以`/'结尾下面是一个比价完整的配置(set q aut o-i nsert t)(set q aut o-i nsert-q uer y t)(a dd-hook 'f i n d-f i le-hook s 'aut o-i nsert)(set q aut o-i nsert-di rect o r y"~/i nsert/")(d ef i ne-aut o-i nsert '("^bu i l d\\.x m l\\'"."Ant编译脚本")"bu i l d.x m l")常见问题, auto-insert-directory的值必须以`/'结尾, 否则就不能 正常工作4.2 QuickURL -- 快速插入地址QuickURL允许我们快速的插入一个单词对应的地址, 也允许加入新的 地址, 这有点像浏览器的收藏夹, 对于经常写这些文档的我来说十分方便实 用, 同时也可以收藏一些好文章的地址.QuickURL是Emacs自带的, 所以不需要特殊的配置就可以直接使用, 常用功能如下:1.`q u i c k url-as k'在当前位置插入所选的URL2.`q u i c k url-a dd'加入新的URL3.`q u i c k url-l i st'列出所有的URL4.`q u i c k url-e di t'编辑所有的URLQuickURL还有一些其他的指令, 自己看看帮助吧, 希望它能对你有用4.3 time-stamp -- 记录修改时间打开time-stamp可以记录最后运行time-stamp的时间, 所以一般将 time-stamp 加入 write-file-hooks 中, 记录文件的最后修改时间, ~/.emacs 配置如下:(a dd-hook 'w r i te-f i le-hook s 't im e-sta m p)(set q t im e-sta m p-f o r m at "%:u %02m/%02d/%04y%02H:%02M:%02S")上面设置写入文件时执行time-stamp, 并设置时间格式为"%:u %02m/%02d/%04y%02H:%02M:%02S", 缺省的情况下, 在所编辑文件的前八行内插入如下标记T im e-sta m p: <>或者T im e-sta m p:""Emacs在保存时就会运行write-file-hooks中的time-stamp, 从而加 入修改时间, 结果类似下面所示T im e-sta m p: <j err y12/17/200312:00:54(un id evel.c om)>或者T im e-sta m p:"j err y12/17/200312:00:54(un id evel.c om)"要使用中文表示, 可以这样设置(set q t im e-sta m p-start "最后更新时间:[]+\\\\?")(set q t im e-sta m p-en d:"\n")(set q t im e-sta m p-f o r m at:"%:y年%:m月%:d日")上面设置了如果碰到"最后更新时间:"的字样, time-stamp就将其后 面的字符替换为当前时间的"XXXX年XX月XX日", 注意, time-stamp-end的结束符 为换行符, 所以"最后更新时间:"行后所有字符都将无条件被替换为"XXXX年XX月XX日" 格式的时间, 本文首页上的更新时间就是这样做出来的4.4 我最最讨厌的1.不要打入 TAB 时总是听到 PC 喇叭嘀嘀嘀的叫(set q v i s i ble-bell t)2.不要总是没完没了的问yes or no, 为什么不能用 y/n(fset 'y es-o r-n o-p 'y-o r-n-p)3.为什么不能显示个时间什么的(di spla y-t im e)4.为什么不显示当前所在的行号和列号(c o lu m n-nu m ber-mod e t)5.为什么不能像Windows下编辑器那样, 高亮显示要拷贝的区域(trans i ent-m ar k-mod e t)6.我要显示匹配的括号(s how-paren-mod e t)7.为什么使用语法显示的大文件在移动时如此之慢(set q la zy-l o c k-d efer-o n-scr o ll i n g t)(set q f o nt-l o c k-supp o rt-mod e 'la zy-l o c k-mod e)(set q f o nt-l o c k-m ax im u m-d ec o rat io n t)8.不要那个如此大的工具条(t oo l-bar-mod e -1)9.在mozilla, openoffice等拷贝的中文文字无法正确粘贴在Emacs中(Emacs 21.3 发布版有此问题, 至少在我的FreeBSD下是这样的)(set-cl i pb o ar d-c odi n g-s y ste m 'ctext)10.启动Emacs报错, ~/.emacs中有问题, 如何忽略错误(c o n di t io n-case err(pr og n(re q u i re 'xxx))(err o r(m essa g e "Can't l o a d xxx-mod e %s"(c d r err))))如上所示, 可以截获progn内部出错, 在mini-buffer下打出错误信息11.不要生成临时文件(set q-d efault m a k e-bac k up-f i les n i l)Emacs的扩展包可谓无所不有, 我只把关于开发的一些常用工具的安装 和配置及问题写一下5.1 Tramp -- Transparent Remote Access, Multiple Protocol5.1.1 tramp简介tramp提供给我们的是可以使用Emacs对本地/远程的文件进行编辑, 保存, 版本管理等, tramp的功能十分强大, 它可以使用多种协议(telnet, ftp, ssh等)进行文件的获取和保存, 也可以使用这些协议的组合来编辑和保存文件, 对本地文件的一个比较方便的操作是su, 即使用其他用户编辑只有这些用户才有权限进行编辑的文件. 例如以普通用户jerry运行Emacs 对只有root可以编辑的/etc/inetd.conf进行编辑和保存, 免去了再开一个shell以root登陆编辑的步骤5.1.2 Tramp原理Tramp的原理是使用标准的协议ftp, rsync, smb等直接获取和保存文件, 使用ssh, telnet, rsh等加上uuencode, uudecode等一些编码解码程序对文件进行 获取和保存5.1.3 tramp的安装及使用我使用的是tramp-2.0.33, 它加入了对smb支持(暂时还不是很完善, 如编辑一些中文名称的文件), 及对ftp的改进. 安装过程如下:1.下载 tramp-2.0.33.tar.gz2.假设安装到/tmp/tramp目录下, 解包tramp到/tmp/tramp下$tar -xv z f tra m p-2.0.33.tar.gz$m v tra m p-2.0.33/t m p/tra m p3.编译tramp$./c o nf ig ure --wi t h-e m acs$gm a k e4.安装tramp, 在~/.emacs中加入下面的代码(a dd-t o-l i st 'l o a d-pat h"/t m p/tra m p/l i sp")(set q tra m p-d efault-m et hod"scp")(set q tra m p-aut o-save-di rect o r y"/t m p")(set q aut o-save-f i le-na m e-transf o r m s'(("\\`/[^/]*:\\(.+/\\)*\\(.*\\)""/t m p/\\2")))(set q tra m p-c h un k s iz e 328)(re q u i re 'an g e-ftp)(re q u i re 'tra m p)5.重新启动Emacs或使用C-x C-e顺序执行上述代码就可以了5.1.4 常见问题tramp在一些版本的Emacs上会出现读出正常, 保存就无响应的现象, 设置tramp-chunksize为小于500的整数就可以了, 因为一些版本的Emacs中 process-send-string按照文档记载最长只能为500.此外tramp和ange-ftp有些冲突, 因为ange-ftp使用autoload装入, ange-ftp会设置 file-name-handler-alist变量, 从而将tramp设置的值覆盖掉, 因此使用 (require 'ange-ftp)首先装入ange-ftp, 然后使用(require 'tramp)装入tramp, 就不会出现这种问题.上述配置在windows平台上不能使Emacs正常使用tramp. Windows上推荐 使用tramp+putty, 相关配置可以使用Google查到.5.2 session5.2.1 session简介session扩展包可以使Emacs保存每次编辑的一些历史记录, 这样, 在下次打开Emacs时就可以使用上下键在以前输入的信息中选取, 十分方便实用.5.2.2 session的使用session的使用十分简单, 只需要在~/.emacs中加入如下几句就可 以了:(a dd-t o-l i st 'l o a d-pat h"<pat h t o sess io n>")(re q u i re 'sess io n)(a dd-hook 'after-i n i t-hook 'sess io n-i n i t i al iz e)5.3 Emacs mew -- 强大的Emacs Email客户端Emacs mew是一个由日本人编写的Emacs邮件客户端, 对中文支持非常 之好也是我选择它的原因. 废话少说, 开始----5.3.1 Emacs Mew的安装Emacs mew的最新版本和源代码可以从 上下 载, 下载后解压, 使用make进行编译安装, 路径可以修改一下Makefile 中的prefix, elispdir和etcdir, 注意${prefix}/bin必须在PATH变量 中, 没有的话作个符号链接也可以, 对于NTEmacs的用户, 要把下载mew 安装包中的几个exe文件拷贝到emacs安装目录的bin下.5.3.2 Emacs mew配置把下面的代码加入~/.emacs中, 把用户名, 主机名换成对应的就可 以了(aut o l o a d 'm e w"m e w" n i l t)(aut o l o a d 'm e w-sen d"m e w" n i l t)(i f (b o un d p 'rea d-m a i l-c omm an d)(set q rea d-m a i l-c omm an d 'm e w))(aut o l o a d 'm e w-user-a g ent-c om p o se "m e w" n i l t)(i f (b o un d p 'm a i l-user-a g ent)(set q m a i l-user-a g ent 'm e w-user-a g ent))(i f (fb o un d p 'd ef i ne-m a i l-user-a g ent)(d ef i ne-m a i l-user-a g ent'm e w-user-a g ent'm e w-user-a g ent-c om p o se'm e w-d raft-sen d-m essa g e'm e w-d raft-ki ll'm e w-sen d-hook))(set q m e w-p o p-s iz e 0)(set q m e w-s m tp-aut h-l i st n i l)(set q t oo lbar-m a i l-rea d er 'Me w)(set-d efault 'm e w-d ec od e-q u o te d 't)(set q m e w-pr og-p g p "g p g")(set q m e w-na m e "显示的用户名")(set q m e w-user "用户名")(set q m e w-s m tp-user "用户名")(set q m e w-m a i l-dom a i n "主机的域名")(set q m e w-s m tp-aut h-l i st n i l)(set q m e w-s m tp-server "S MT P主机")(set q m e w-p o p-server "POP主机")(set q m e w-p o p-user "用户名")(set q m e w-p o p-aut h 'pass);;认证方式(set q m e w-use-cac h e d-pass wd t)(set q m e w-nntp-server "NN T P服务器")(set q m e w-i c o n-di rect o r y(expan d-f i le-na m e "m e w/etc"d ts i te-di r))(wh en (b o un d p 'utf-translate-c jk)(set q utf-translate-c jk t)(cust om-set-var i ables'(utf-translate-c jk t)))(i f (fb o un d p 'utf-translate-c jk-mod e)(utf-translate-c jk-mod e 1))(re q u i re 'fl y spell);;非常好用的英文的拼写检查5.3.3 常见问题•无法从网上下载所有邮件,总是报告类似"no new messages (3 messages left)"的消息删除Mail/.mew-uidl文件使Mew将邮件认为新邮件,设置(setq mew-pop-size 0)使mew下载所有邮件,不论大小, 注意首先要使 用'Q'退出new ( 'Q' is 'shift' + 'q', not just 'q'), 保证mew重新加载~/Mail/.mew-uidl•如何在mew将邮件地址加入地址簿?C-cC-a加入地址簿, C-uC-cC-a加入地址和用户信息, 在发送邮件时可以使用TAB补全, 使用M-TAB将地址转换为User<address>的样子•无法发送和接收邮件在mew的分发包中一般包含mewls, mewl, mewencode, mewdecode, incm等可执行文件, 检查它们所在路径是否包含在环境变量PATH中, 或者拷贝这些文件到emacs安装目录的bin目录下•设置多个邮件mew提供多邮件设置, 这是通过设置mew-config-alist变量完成的, 例如我的邮箱设置 (可以设置在~/.emacs或者~/.mew.el中)(set q m e w-c o nf ig-al i st'(("y a hoo"("na m e"."J err y")("user"."my na m e")("s m tp-server"."127.0.0.1")("s m tp-p o rt"."5059")("p o p-server"."127.0.0.1")("p o p-p o rt"."5058")("s m tp-user"."my na m e")("p o p-user"."my na m e")("m a i l-dom a i n"."n o nex i st.c om")("m a i lb o x-t y pe". p o p)("p o p-aut h". pass)("s m tp-aut h-l i st".("P L A IN""L O GIN""C R AM-M D5")))("d efault"("na m e"."J err y")("user"."sa m ple")("s m tp-server"."127.0.0.1")("s m tp-p o rt"."25")("p o p-server"."127.0.0.1")("p o p-p o rt"."110")("s m tp-user"."sa m ple")("p o p-user"."sa m ple")("m a i l-dom a i n"."sa m ")("m a i lb o x-t y pe". p o p)("p o p-aut h". pass)("s m tp-aut h-l i st".("P L A IN""L O GIN""C R AM-M D5")))))设置好后, 可以通过在summary列表下输入`C'切换设置, 不过需要注意 "mailbox-type"和"pop-auth"设置的值是没有引号的5.3.4 一些mew的屏幕截图mew屏幕截图1mew屏幕截图25.4 Color Theme -- 让你的Emacs更多彩这个扩展包与开发工具没有多大关系, 不过还是有一点点的, 至少可 以帮助htmlize生成的html有不同的背景, 它主要是为Emacs配置不同的色彩搭配, 使之像Windows那样据有不同的色彩主题, 例如某些变变总是把各种IDE的编辑器设置的像是控制台下的VI一样黑底白字.5.4.1 color-theme的安装想不起来在哪里下载的了, 用Google搜索一下吧, 安装起来比较简单, 就是将安装目录加入load-path, 调入color-theme, 需要的话再选择一个缺 省的theme就可以了, 例如将color-theme.el放在/tmp下, 则配置如下:(a dd-t o-l i st 'l o a d-pat h"/t m p")(re q u i re 'c o l o r-t h e m e)(c o l o r-t h e m e-d ar k-blue)5.4.2 color-theme的使用安装完后, Tools菜单下会有一个Color Theme的菜单项, 可以用这 个定制color-theme, color-theme自带有不少的颜色主题有很多的Emacs lisp, 非常小巧而实用, 下面就介绍一些我常用的6.1 tab-display.eltab-display.el是用来以'<'字符标识出文件中的那些tab字符, 对于编辑某些文件来说非常有用, 它清楚地标明那些字符是tab的字符点击这里下载tab-display.el使用十分简单, 只需要在~/.emacs中加入(require 'tab-display)就可以了, 当然首先你要作的是把tab-display.el所在的路径加入load-path中tab-display屏幕截图6.2 wb-line-number.elwb-line-number.el可以在窗口左侧分割出一个显示行号的小窗口, 比那个mode-line上的行号看的更清楚一些点击这里下载wb-line-number.el使用时在~/.emacs中加入下面的语句(不要总是要我提醒你注意load-path设置哦)(set-scr o ll-bar-mod e n i l); n o scr o ll bar, even i n x-wi n dow s y ste m(re q u i re 'w b-l i ne-nu m ber)在需要显示行号的buffer打入M-x wb-line-number-toggle就可以了, 或者像我这样在~/.emacs中再加入一句(wb-line-number-enable)缺省显示行号wb-line-number屏幕截图6.3 keisen-modekeisen-mode是一个用来绘制表格的好工具, 尤其是绘制中文表格, 比起那个table.el来说好多了, kersen-mode是小日本写的, 点击这里下载 keisen-mule.lzh, 文件使用lha压缩, 使用时在~/.emacs中加入下面的语句(i f wi n dow-s y ste m(aut o l o a d 'k e i sen-mod e "k e i sen-mo use""M UL E table" t)(aut o l o a d 'k e i sen-mod e "k e i sen-m ule""M UL E table" t))操作起来只要使用Emacs中的移动键或者鼠标移动, 就可以绘制出各种表格了, 它会自动计算各个连接点, 简单方便keisen-mode屏幕截图Chapter 7 自己写的一些Emacs lispJerry1.Emacs MPG123歌词同步显示 -- lrc.el, 点击下载, 可以显示大部分lrc格式的歌词,还有一些BUG, 导致某些的歌词无法显示, 正在修改中安装说明: 替换掉mpg123.el, 删去原来的mpg123.el,mpg123.elc, 在~/.emacs中加入下面的代码就可以了(set q lrc-l y r i c-di r "lrc文件的路径") t o~/.e m acs(re q u i re 'm p g123)歌词显示在minibuffer中, 点击看大图以前的一些这里下载8.1 Emacs中的游戏Emacs自带了一些小游戏, 介绍几个1.M-x tetris俄罗斯方块2.M-x gomoku五子棋游戏3.M-x mpuz填数字游戏4.M-x snake贪吃蛇游戏5.M-x zone一个Emacs的屏保, 因为抓不出动的效果, 所以还是自己体验吧, 我第一次用它时把同事吓了一跳, 被误认作病毒6.M-x dunnet一个Mud游戏, 比较难玩, 推荐英文比较好的一定玩一下7.M-x nethack这个可不是Emacs自带的, 给那些nethack的faners, 需要下载nethack.el, 自己搜一下吧, 不过记得要重新编译nethack来支持Emacs剩下的那些不是我不会玩就是不好玩, 故不浪费时间介绍了, 自己体会吧Chapter 9 迷你型的EmacsJerry网上有一些类似Emacs的编辑程序, 十分小巧, 比较著名的有下面几个1.em, 下载地址http://www3.famille.ne.jp/~ncc1701/em/2.zile 下载地址/projects/zile/3.qemacs 下载地址http://fabrice.bellard.free.fr/qemacs/当你的机器无法忍受庞大的Emacs时, 不妨试试这些小巧的编辑器, 我在一台PII266/64M RAM 的笔记本上就使用zile来进行开发9.1 zile 中文设置zile安装完毕后需要修改缺省的配置来显示中文, 一般就是在$HOME/.zilerc中加入或者修改displayable-characters, 修改成下面的样子di spla y able-c h aracters ="0x20-0xff"10.1 中文资源1. 我在yahoo groups上申请了邮件列表, 希望大家可以参与讨论1.参与讨论:zhdotemacs@[1]2.订阅:zhdotemacs-subscribe@[2]3.退订:zhdotemacs-unsubscribe@[3]此外, 可以通过/group/zhdotemacs/来查看以往信件, 不过必须注册一个yahoo帐号.Notes[1]首先需要订阅, 订阅后可以向zhdotemacs@ 发送邮件参与讨论[2]订阅时向zhdotemacs-subscribe@ 发送一封邮件, 主题上写"subscribe"就可以了, 注意不要加上引号, 收到确认信后, 按照内容中所说的回复或点击对应链接就可以了[3]退订时向zhdotemacs-unsubscribe@ 发送一封邮件, 主题上写"unsubscribe"就可以了, 注意不要加上引号, 收到确认信后, 按照内容中所说的回复或点击对应链接就可以了10.2 Lisp资源•Emacs Lisp List--- Emacs Lisp大全•Mule-GBK--- Emacs的GBK编码10.3 文档资源•Emacs 快速指南 (官方 ) --- 官方的快速指南•Emacs wiki中文版•王春宇的Emacs中文资料--- emacs和gnus的配置资料和一些非常有用的参考资料•王垠的Emacs资料--- 一些Emacs的配置和使用技巧•Emacs/Cygwin配置资料--- NTEmacs与Cygwin环境的整合, 推荐NTEmacs的用户看一下•Emacs wiki -- 大量的Emacs资源•Emacs dotfiles -- 大量的.emacs的配置样。
EmacsOrgmode基础⽤法Emacs Org mode基础⽤法核⼼提⽰:本⽂主要讲述Emacs Org mode基础⽤法相关内容:Emacs Org mode基础⽤法,尽管Org-mode的功能不断丰富,现在已经可以记笔记,管理个⼈事务,制定项⽬计划以及很多其他的⽤途,但是最初和最基本的功能还是通过⼤纲(outline)的⽅式来编辑⽂档。
⽽且,⽆论是笔记管理,任务管理还是项⽬计划的编写,都是以对内容进⾏⾼效的组织(organization)为基础的。
1. ⽤⼤纲组织内容1. 定义标题2. ⼤纲相关的快捷键1. 折叠⼤纲2. 在⼤纲之间移动3. 基于⼤纲的编辑3. ⼤纲的显⽰⽅式2. 超链接和图⽂混排1. 创建链接2. 内部链接3. 显⽰图⽚4. 创建链接5. 内部链接6. 显⽰图⽚3. 轻量级标记语⾔1. 字体2. 表格1. 创建和转换表格2. 调整和区域移动3. 编辑⾏和列3. 段落4. 列表1. 列表操作快捷键5. 分隔线4. 标签1. tag的作⽤2. 标记tag3. 预定义tag4. 按tag搜索5. 导出和发布1. 准备⼯作1. ⽂档元数据2. 内容元数据3. 嵌⼊Html4. 包含⽂件5. 嵌⼊ LaTex2. 导出3. 发布1 ⽤⼤纲组织内容尽管Org-mode的功能不断丰富,现在已经可以记笔记,管理个⼈事务,制定项⽬计划以及很多其他的⽤途,但是最初和最基本的功能还是通过⼤纲(outline)的⽅式来编辑⽂档。
⽽且,⽆论是笔记管理,任务管理还是项⽬计划的编写,都是以对内容进⾏⾼效的组织(organization)为基础的。
在编辑⽂档,尤其是⼤型⽂档的时候,对内容的组织就显得尤为重要。
经常需要在⽂档中快速定位,只关注某⼀部分的内容, Word之类的编辑器,通过⽂档结构图来定位⽂档位置,速度很慢,⽽且很多时候不能满⾜编辑的需要。
尽管Word也提供了“⼤纲视图”,但是,唉……不说也罢,如果那个功能真的好⽤,也就不需要Omni Outliner了。
Emacs配置与扩展技术Emacs 是一款功能强大的文本编辑器,它具有高度可定制的特性。
你可以通过编辑其配置文件来改变它的行为,并通过安装扩展来增强其功能。
本文将介绍如何配置 Emacs,并展示一些常用的扩展技术。
你需要编辑 Emacs 的配置文件,这个文件通常被称为 .emacs 或 init.el。
在你可以添加各种配置项,包括键绑定、主题、插件等。
配置文件是一个普通的文本文件,你可以使用 Emacs 或其他编辑器来编辑它。
接下来,让我们看一些常见的配置项。
1. 设置主题:Emacs 支持各种主题,你可以选择一个你喜欢的主题来改变编辑器的外观。
你可以在配置文件中设置主题的名称,然后通过加载主题扩展来应用它。
2. 配置键绑定:Emacs 的键绑定使你可以通过按下一系列按键来执行操作。
你可以指定自己喜欢的键绑定,并将它们添加到配置文件中。
你还可以使用一个包,比如use-package,来管理键绑定的配置。
3. 安装插件:Emacs 社区开发了大量的插件,你可以根据自己的需求安装它们。
你可以使用包管理器,比如 ELPA 或 MELPA,来安装插件。
安装插件后,你可以在配置文件中加载它们,并配置它们的行为。
除了这些基本配置项,还有许多其他的配置技巧和扩展技术。
1. 使用 Org mode:Org mode 是 Emacs 的一个扩展,它可以帮助你管理任务、记录笔记和写文章。
你可以使用 Org mode 来组织你的工作,并将它与日历和任务管理器集成。
2. 使用 Magit:Magit 是一个强大的 Git 客户端,它可以让你在 Emacs 中浏览和管理 Git 仓库。
你可以使用 Magit 来提交代码、查看变更历史和合并分支。
3. 使用 Projectile:Projectile 是一个项目管理工具,它可以帮助你在 Emacs 中快速切换和浏览项目。
它可以识别项目的文件结构,并提供一些快捷命令来管理项目。
Emacs编辑器基础教学第一章:什么是Emacs编辑器Emacs编辑器是一个功能强大的文本编辑器,广泛应用于编程、文档写作和其他各种计算机任务中。
Emacs自由软件基金会开发并于1976年首次发布。
Emacs编辑器的最大特点是高度可定制性和可扩展性,用户可以通过自定义配置文件来满足自己的需求。
第二章:Emacs编辑器的安装和介绍2.1 安装Emacs安装Emacs可以通过源代码或者预编译的二进制文件进行。
在Linux环境下,可以使用包管理器直接安装Emacs。
在Windows环境下,可以从Emacs官方网站上下载安装包进行安装。
2.2 用户界面介绍Emacs编辑器启动后,可以看到一个分为多个窗口的界面。
主要包括菜单栏、工具栏、编辑区域和模式栏。
编辑区域是用户编写代码或者文档的主要区域,模式栏显示当前模式或者特殊功能的状态。
第三章:Emacs编辑器的基本操作3.1 打开和保存文件通过菜单栏或者快捷键组合可以打开和保存文件。
用户可以使用Emacs编辑器打开文本文件、代码文件、各种配置文件等。
保存文件可以使用快捷键组合,也可以通过菜单栏中的保存选项实现。
3.2 基本文本编辑操作Emacs编辑器提供了丰富的基本文本编辑操作,包括复制、剪切、粘贴、撤销和重做等。
这些操作可以通过快捷键组合来实现,也可以通过菜单栏中的选项实现。
3.3 光标移动和选择文本在Emacs编辑器中,可以使用快捷键组合来移动光标的位置,如向上、向下、向左、向右等。
选择文本可以通过按住Shift键并移动光标来实现。
选中的文本可以进行复制、剪切和粘贴等操作。
第四章:Emacs编辑器的高级功能4.1 宏录制和执行Emacs编辑器提供了宏录制和执行功能,可以将一系列操作录制成宏,然后通过快捷键组合来执行宏。
宏录制功能可以提高编辑效率,减少重复操作。
4.2 多窗口编辑Emacs编辑器支持多窗口编辑,可以在同一个Emacs编辑器中打开多个文件并同时进行编辑。
Emacs编辑器的使用Emacs编辑器的使用A.1Emacs简介前面已经介绍过一种全屏幕文本编辑工具Vi,这里将介绍另外一种功能强大、应用也非常广泛的全屏幕文本编辑器Emacs。
Emacs全称为Editor MACroS,由于其移植性极好,所以在当今世界的几乎任何一个操作系统上都可以见到它的身影。
现在的Emacs已经超出了原来的单一的文本编辑功能,可以用来管理文件、阅读公告板,甚至可以进行WWW浏览。
另外Emacs源代码可以使用C、C++、Lisp等语言定制,对一些编程爱好者来说,这无疑是一大福音,同时也使其灵活性大大增加。
Emacs编辑器的使用、操作与使用其他标准的文本编辑器一样。
键盘上普通的按键用来输入字符,而编辑器的操作命令是通过键盘上的一些特殊的按键来实现的,例如Ctrl、Alt等控制键。
与Vi不同,Emacs编辑器没有特定的输入模式与命令模式之分。
在输入文本时,也可以执行编辑命令,例如用Ctrl 键来移动光标、保存文件等,而不必忍受切换模式的麻烦。
Emacs 编辑器是一个复杂且非常灵活的编辑器.它有好几百个编辑命令。
Emacs编辑器也有一些特殊的特性,例如多窗口特性,可以在编辑文件时同时显示两个窗口。
也可以同时打开并对多个文件进行编辑与操作,并在屏幕上与之对应的编辑窗口内显示各个文件。
Emacs编辑器通过巧妙地控制、操作工作缓冲区来实现其强大、灵活的功能。
Emacs编辑器可以被认为是面向缓冲区的编辑器。
在任何编辑器中编辑文件时,该文件将首先被拷贝到工作缓冲区中,而所有的编辑操作都在工作缓冲区中进行。
许多编辑器在编辑文件时仅开辟一个工作缓冲区,因此仅能打开一个文件。
而Emacs编辑器可以同时开辟并管理多个工作缓冲区,因此允许同时对多个文件进行编辑操作,还可以用编辑缓冲区来保存、删除或拷贝文本,用户甚至可以开辟目己的缓冲区,并在这些缓冲区中保存文本,必要时可以把这些缓冲区内的文本保存到文件中。
A.2Emacs的启动与退出A.2.1Emacs的启动通过键入:$ emacs [文件名]进入Emacs文本编辑程序。
如果不键入文件名,则将创建一个新文件而不是打开现存文件(如图A-1所示)。
图A-1Emacs程序界面无论建立新文件还是打开一个现有文件,在处理方法上都是将其放入缓冲区中。
和Vi一样,只要用户不发出存储到磁盘的命令,缓冲区的内容就不会写到文件中。
同时这也使用户可以在多个缓冲区之间进行复制、粘贴等操作,非常方便。
A.2.2Emacs的退出当对文件做必要的修改后需要退出时,有几种可行的途径。
如果对文件未做任何修改,则直接使用Ctrl+x、Ctrl+c即可退出Emacs;如果对文件做了修改,则同样使用以上按键组合退出,只是这时系统将询问是否保存文件,如果键入y,则系统保存文件;如果是个新文件,系统提示输入文件名,保存后退出。
如果键入n,则系统将再次询问是否真的不保存缓冲区中的内容退出,这时回答yes则放弃所做修改退出;当然也可以先使用命令保存文件,然后再退出,这时可以使用Ctrl+x、Ctrl+s组合键,系统将保存文件并退出。
如果要把编辑程序存到另一个和原来文件不同的文件中,可以使用Ctrl+x、Ctrl+w组合键,然后指定新文件名即可。
如果用户正在进行Emacs的有关操作,需要Linux执行其他的操作,可以选择下列任何一种方法。
1. 中止Emacs并返回Linux shell通过按Ctrl+z就可以中止任何Linux应用程序。
该组合键将当前的应用程序放入后台并向用户提供另一个shell提示符。
若要重新激活Emacs,可键入命令fg,将后台任务带回前台。
若正在使用的shell不懂此命令,键入exit,重新激活Emacs。
2. 从Emacs中发出一个shell命令如果不需要完整的shell环境,可以考虑在Emacs中使用shell命令。
要在Emacs中使用shell 命令,按Ctrl+u、Esc、!,之后将提示输入一个shell命令。
输入命令并回车,Emacs将命令传递给Linux shell,然后shell执行这个命令。
如果不在前面加上Ctrl+u命令,Emacs将把输出结果放到一个叫shell执行结果缓冲区中。
如果需要关闭该窗口可以使用Ctrl+x命令。
A.3用Emacs编辑器创建文件利用Emacs建立新文件的步骤如下:1. 启动emacs(键入emacs并回车),可以看到图A-1所示的屏幕。
2. 向缓冲区添加文件内容。
3. 将缓冲区中的内容保存到某一文件中(假设文件名为mydata)。
按Ctrl+x、Ctrl+s,然后键入文件名(mydata),再回车,就将缓冲区中的内容存入文件(mydata)中了。
状态行上会显示如下信息:Wrote /root/mydata表示已建立了新文件(mydata),并把它保存到磁盘上。
4. 按Ctrl+x、Ctrl+c退出Emacs。
若退出Emacs时存在未保存的内容,Emacs会提示用户保存文件。
在Emacs命令后输入想编辑的文件名,如果该文件名不存在,该文件将被创建。
在下面的例子中,用户准备用Emacs 编辑器来编辑名为mydata的文件。
$ emacs mydata与Vi编辑器一样,Emacs编辑器是一个全屏幕编辑器。
当编辑的文件是新创建的文件时,除屏幕的底部两行外,屏幕是空白的,光标将位于屏幕的左上角。
如图A-2所示。
图A-2Emacs编辑器的编辑屏幕A.3.1META键、Emacs屏幕及编辑模式Emacs编辑器的编辑操作与许多普通的文字处理器类似。
Emacs编辑器仅有一种编辑模式��输入模式。
如果键入任何字符键,键入的字符将被输入到编辑的文件中,所有的字符键都被用来输入字符,而不是用来输入命令。
在一些计算机上有META键,即可以使用META-x组合键。
在没有META键的计算机上,META-x 等于先按Esc键,再按x键。
有些系统的META 键就是Alt(或者某一边的Alt键)。
Emacs 编辑命令基本上是一串Ctrl-x及META-x按键命令的组合(简记为C-x和M-x)。
Alt键命令系列与Ctrl键命令系列的操作基本相同,即首先一直按住Alt键,再键入相应的按键,最后同时放开这两个键。
但Esc键命令系列稍微有点不同:首先键入Esc键,然后放开该键,再键入相应的按键。
Esc键的使用频率要比Alt键的使用频率高,因为很多早期的键盘根本没有Alt键。
因此,本章主要介绍这些META键,同时必须记住,这些META键也可以用终端上的Alt键来代替。
从图A-1、A-2所示的Emacs编辑器屏幕可以看出以下几个特点:首先有一组菜单选项(即Buffers、Files、Tools、Edit、Search、Mule、Help)。
所有的Emacs命令都可从这个下拉菜单执行;屏幕的最下面一行是小缓冲区,主要用于显示使用过的命令;倒数第二行被称为状态行,主要显示如下信息:文件名、当前模式、光标位置和当前位置在文件中的相对位置;状态行以上的所有屏幕都被称为缓冲区。
在状态行上显示的是正在编辑的文本的状态信息。
状态行由几个部分组成,其形式如下:--1-:ST-F1 BulfferName (模式)--Lx—Place----------第一个域是ST(Status),它表示若最近对文件进行了修改,该修改的文件是否已经被保存过。
如果该域是两个星号(“**”),表示该文本已经被修改过,但没有保存;如果该域是两个连字符(“--”),表示该文件从最后一次保存到现在还没有被修改过。
BufferName域表示该工作缓冲区的名字,这个工作缓冲区名将是目前编辑的文件名。
而Lx 表示光标当前的位置,Place域表示光标当前处于被编辑的文件的何处。
例如,如果Place 域是40%,那么,表示光标当前大约位于文件的40%处。
在下面的例子中,状态行表示该文件自最近一次修改以来,还没有被保存过,工作缓冲区的名字是mydata,光标处于文件的第4行。
--1-:**-F1 mydata (Fundamental)--L4--All-----------Emacs 在小缓冲区下有“自动补全”功能。
该功能可以为用户节省许多时间。
当在小缓冲区输入文本串、一行长命令或输入文件名时,就可以用到自动补全功能。
如果有两个以上的选择,它也会显示选项列表。
这个功能对Ctrl+x、Ctrl+f等文件编辑功能也是有效的。
A.4编辑操作及命令Emacs编辑器的编辑命令能执行许多操作,其他编辑器基本上也有类似的编辑操作。
Emacs 编辑器中所有的编辑命令基本上都通过Ctrl键、Alt键或Esc键组成的命令序列来完成与实现。
所有这些编辑命令也都有对应的命令名,用户可以在小缓冲区中输入这些命令。
如果从xterm上进入Emacs,则可从编辑器屏幕上方的下拉菜单中选择菜单选项来执行相应的命令。
本节将介绍一些常见命令。
A.4.1移动命令Emacs编辑器有一组基本的光标移动命令。
Ctrl+f命令用来将光标前移(右移)一个字符,而Ctrl+b命令用来后移(左移)一个字符。
Emacs 编辑器把一个文件看作一种流式字符串,而不是一系列的文本行。
向后移动光标命令将使光标沿流式文本左移一个字符(例如在当前行的行首将光标左移一个字符时,光标将回到上一行的行尾)。
向前移动光标命令也是如此。
也有一组编辑命令能使用户在文件中以行为单位移动光标或整屏移动光标。
Ctrl+n命令将把光标移动到下一行上,如果此时光标位于屏幕最后一行,屏幕将下滚,使当前行的下一行显示在屏幕上。
Ctrl+p命令将把光标移动到上一行,如果此时光标位于屏幕最顶行,屏幕将上滚,使当前行的前一行显示在屏幕上。
Ctrl+v命令及Esc v命令将整屏滚动文本。
Ctrl+v 命令将使文本向前滚屏并显示下一屏文本,而Esc 命令将使文本向后滚屏并显示上一屏文本。
由于上面几条命令是在键盘上没有方向键时开发的,所以可能很多新用户会不大习惯这种使用。
事实上,现在的键盘都有方向键,可以使用上下左右四个方向键来替代这四个命令。
甚至Emacs程序支持PageUp和PageDown键上下翻页。
用户也可以以单词、段落等为“计量单位”来移动光标。
META键命令Esc f及Esc b用来以单词为单位前、后移动光标。
Esc a命令可以把光标移动至句首,而Esc e命令将把光标移动至句尾;Ctrl+a命令将把光标移动至行首,而Ctrl+e命令将把光标移动至行尾;Esc <命令将把光标移动至文件的第一行,而Esc >;命令将把光标移动至文件的结尾。
可以在编辑命令前输入Emacs编辑器的重复命令来重复执行一个命令,此重复命令是Esc num,这里num是重复次数。