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编辑器的使用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是重复次数。