ZHL的emacs笔记:基本操作
emacs中文手册-入门篇
前言【写给读者的话】这篇文章纯粹是我个人在学习使用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 启动:直接打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-u 8 C-fC-u 在Emacs里是蛮特别的,用来设定一些引数(argument/repeat count)给其後的命令.C-u 2 0 C-n 向下移 20行有一个特别的例外, C-u 3 C-v 不是翻三页, 而是整个萤幕向上移三行.据说这比较有意义.C-u 1 0 C-x u UNDO 10次给C-L一个引数会怎麽样:C-u 0 C-l 会重画萤幕,并且把目前的行移到萤幕第一行.另外, C-u 100 等於 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-1 C-0 right-arrow 就是按住CTRL, 然後打10就对了, 比 C-u 1 0 简单.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-x 0 关掉目前的视窗C-x 1 会让目前的视窗占满整个萤幕 (One Window),取消/关掉其他的视窗.Emacs里面有许多功能都会开一个小视窗来和使用者沟通, 显示讯息.有时候不会自动消失很讨厌, C-x 1 就很有用.另一个功能是如何跳到另一个视窗.C-x o (other-window)C-x 2 把目前的视窗切成两个 (水平分割)C-x 3 (垂直分割)C-x 4 是一串与视窗有关的指令.C-x 4 是一串与视窗有关的指令.C-x 5 则是扩展到X的视窗, 称为frame.C-x 5 2 就是再开另一个X视窗 (frame).多档编辑:C-x C-b 看目前有那些buffer (buffer就是emacs放开起的档案的地方).C-x b 然後在minibuffer输入buffer的名字,可以切换编辑buffer.TAB键也有作用. 有些内部的buffer (就是没有档案的buffer), 是用*开头和结束, 这个也要打, 如*scratch*最后提醒:C-x 1 可以把多馀的视窗关掉.Emacs扩充指令前面介绍的emacs按键大部份都是C-<chr> 或者 M-<chr>的形式. 这是最简单的按法, 由一对按键构成一个指令.Emacs的按键可以超过2个以上. 如 C-x 1 或 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 system. 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:(1 2 3 4) 是一个list, 由 4个 atom 组成.pair: 中间是句点.(apple . 2)alist (associated list)就是一堆 pair的集合,就像perl/tcl的associative array.或者说是一个资料库, 一堆 (key, value) pair.'((Apple . 1)(Orange . 2)(PineApple . 3))vector (?)emacs 19用vector 来表示按键(key strok sequence)[f1] [f2] [f1 a]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 'hello 1); hello = 1; 注意我们用 'hello, 所以lisp不会evaluate hello的值.这家伙很常用, 也有简写.(setq hello 1)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 函式:(list 1 2 3 4) 产生 '(1 2 3 4)(car '(1 2 3 4) 1(cdr '(1 2 3 4) '(2 3 4)(cons 1 '(2 3 4)) '(1 2 3 4)(cons 1 2) (1 . 2)(cons 0 (cons 1 (cons 2 nil)))等於 '(0 1 2){list 是用 pair 串起来的,用C 表示:pair: {Object *first, Object *second};*(pair[i].first) == i;pair[i].second == pair[i+1]; }(cons '(1 2) '(3 4)) '((1 2) 3 4)(setq a 1)(1+ a) ; a+1(+ 2 a) ; a+2(* 1 2 3 4)(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 ((var1 value) ; local variablevar2 ; no value(var3 value)...)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 下皆有差异)。
Emacs学习笔记
谈到Emacs,另外一点不得不说就是Emacs的命令中常有一些C,M的字符.在Emacs中C是指Ctrl,而M是指Alt,如果Alt不工作,我们可以按下ESC来替换试一试.在Emacs中命令是一个按键的组合,例如我们退出Emacs的命令为C-x C-c,这就是说我们要按下Ctrl-x,然后再按下Ctrl-c来退出Emacs.
在Emacs中我们可以有几种方式来进行移动.我们可以用小方向键来在Emacs中进行移动,我们也可以通过page-up,page-down来在页间进行跳转.
如果我们的小方键不可以进行了工作了,我们还可以用下面的方法来进行移动:
向前一个字符:C-f (forward-char)
向后一个字符:C-b (backward-char)
Except by Middle Aged Computer Scientists
Extended Macros Are Considered Superfluous
Every Mode Accelerates Creation of Software
Each Manual's Audience is Completely Stupefied
向后一页:C-x [ (backward-page)
要了解更多的这样的功能以及句,段或是页结束的描述,我们可以输入C-h f (describe-function)然后输入功能名.
我们还要两个功能可以回到匹配的括号处,这个分别叫做forward-sexp,backward-sexp.这在编程的时候显得更为有用.我们可以将他们绑定到Meta-左键和Meta-右键.为了做到这一点我们可以将下面的两句加入我们的.emacs文件中:
学习Emacs系列教程(一):基本使用
学习Emacs系列教程(⼀):基本使⽤前⾔的前⾔:本⼈也是初学Emacs,之前对Vim也只接触了⼀点,所以也谈不上对哪个更喜欢,也分不出哪个更好。
写这个教程的⽬的⼀是⽅便⾃⼰更好的学习Emacs,⼆是没事找事。
如果有专家路过还望多指点。
前⾔:⼤名⿍⿍的Emacs,传说中程序员的终极武器,已经跨越了⽂本编辑器,IDE的境界,可以替代操作系统GUI的东东。
怀着⼀种膜拜的⼼情我决定开始学习Emacs,期望有⼀天也能成为⼀代Emacs⼤侠。
参考书⽬:1. GNU Emacs Manual (Emacs 官⽹有下)2. O'Relly Learning GNU Emacs, 3rd Edition⼀、Emacs的安装使⽤学习软件的第⼀件事当然是把它下下来,⽬前最新版23.1,这个版本号够吓⼈的,Opera的10.0还不及别⼈的⼀半。
本⼈不幸,使⽤的是Windows版本。
安装过程异常简单,直接解压就⾏,但路径中不能包含空格,所以就表往Program Files⽂件夹下⾯丢了,我是直接放在根⽬录的,找起来也⽅便。
运⾏bin⽬录下的addpm.exe可以添加开始菜单快捷⽅式。
也可以直接运⾏runemacs.exe 来启动Emacs。
卸载也很⽅便,Emacs不会对系统写任何垃圾东东,直接删除⽂件夹即可卸载,还有你的快捷⽅式。
启动Emacs后的界⾯如下:猛的⼀看,没什么太出彩的地⽅,感觉⽐较简陋。
上⾯依次是标题栏、菜单栏、⼯具栏,中间⼀⼤块就是编辑⽂本的地⽅,下⾯两⾏是mode line 和echo area。
echo area是你输⼊命令和显⽰消息的地⽅。
在mode line中第⼀个字符表⽰字符集,c代表chinese-gbk,后⾯那个 \ 符号表⽰换⾏类型,\是指DOS的CRLF换⾏,另外还有Unix的LF 换⾏和Mac的CR换⾏。
然后⼀个字符,表⽰打开的⽂件是否可写(先称为⽂件便于理解,实际上是buffer),%表⽰只读,- 和 * 表⽰可写。
ZHL的emacs笔记:view与diff
C-c C-f next-error-follow-minor-mode :翻转光标跟随定位辅模式,状态行模式名为 Fol 。打开该模式后,当在各条改动上移动时,会自动在另一窗口定位源文件。也同样适用于 compilation 、grep 、occur 等缓冲区。
view-buffer :以view模式打开缓冲区。
view-buffer-other-window :
view-buffer-other-frame :
h 或 H 或 ? describe-mode :
数字 digit-argument :数字直接作为数字前辍。
**文本相关:outline模式、Org模式、View模式、文件比较、text模式、fill模式、Abbrev模式、Picture模式、2C模式。
**View模式:辅模式,也可作为主模式。专用于查看文件而非修改。
说明:1、Kill操作仅是将内容放入kill buffers中而并不执行删除动作。
4、如果手工修改了diff模式缓冲区(即修改了patch),diff-mode will try to update the hunk headers for you on-the-fly. --没明白。
5、该模式中,每个比较所得的差异点,即改动,称为一个 hunk 。
6、关于乱码问题:在用 diff / diff-backup 命令生成比较结果并放于一个新建缓冲区(*Diff*)中后,显示的可能是乱码,这是由于对比较操作的输出采用的解码方式不匹配造成的。如果参与比较的文件是utf-8编码的,则比较结果也应该是utf-8编码的,此时若以非utf-8方式对比较结果进行解码则必然导致乱码。以何种方式对比较结果进行解码,是由当前shell环境I/O的编解码配置决定的,具体参见"中文支持"中对变量 process-coding-system-alist 的描述。如果能正确解码,那么显示就会正常,与新建缓冲区(*Diff*)最后采用的是何种编码系统无关。
emacs命令使用说明
Saving Rectangles in Registers
C-x r r r
Copy the region-rectangle into register r (copy-rectangle-to-register).
With numeric argument, delete it as well.
C-x r i r
Insert the rectangle stored in register r (if it contains a rectangle) (insert-register).
M-e 句尾
M-{ 上一个段落
M-} 下一个段落
C-v 屏幕上卷一个屏
M-v 屏幕下卷一个屏
C-M-v 另一个窗口下卷一个屏幕
C-M-V 另一个窗口上卷一个屏幕
M-< 文件头
M-> 文件尾
C-u n 或 M-n 重复执行n次后继命令
// -*- C++ -*-
语法高亮
不是C模式专有,顺便提一下,M-x global-font-lock-mode RET 或在.emacs中加入(global-font-lock-mode t)。在console下,Emacs21才支持语法高亮。(语法高亮,不同关键字用不同的颜色来突出)
C-x r i r
Insert text from register r (insert-register).
M-x append-to-register RET r
Append region to text in register r.
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具有强大的功能和灵活的语法,可以帮助我们更好地组织和管理工作。
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编辑器中打开多个文件并同时进行编辑。
【Linux】Emacs教程中文版
【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)-----------------------------------------------------------------整屏整屏的移动是很有用的,可是如何把光标移动到屏幕上文本里的一个指定的地方呢?有好几个方法可以实现。
ZHL的emacs笔记:实用工具
**ascii:一个用来动态显示字符码值的工具。 第三方的包
配置:在~/.emacs中加入如下几行即可启用该扩展并定义快捷键。
(require 'ascii)
(global-set-key "\eOc" 'ascii-display) ;; 绑定 M-O c 到 ascii-display 命令。ascii-display 原来没有绑定到任何键上。
配置:在~/.emacs中加入如下语句即可启用该扩展。
;; (require 'ido)
(ido-mode t)
说明:1、该扩展由包 ido.el 提供。在emacs-23.1中已经包含了该包。文件头部的注释对使用方法做了很详尽的描述。
2、该扩展的辅助文件为 ~/st ,用以保存最近访问过的文件列表和目录列表等。
3、其会在目标缓冲/窗口进行实时匹配,且高亮显示匹配上的串,而不同子分组的匹配串会用不同颜色来显示。
re-builder :进入 RE Builder 主模式。其会将当前缓冲及窗口作为目标缓冲及窗口,并打开一个新窗口以等待用户输入正则表达式。
regexp-builder :为命令 re-builder 的别名。
如果要创建一个新的文件叫 "ab",而你的目录里有匹配前缀的文件或目录,按 RET 就会打开部分匹配的文件。所以这个时候你必须按 C-j 来创建这样一个文件。如果没有匹配的文件,那么 RET 也会创建一个新的文件。
按 C-e 进入编辑模式。由于方向键,backspace 和 C-f,C-b 都被作为其它用途了,所以如果你想把光标移动到行首修改一些东西,你必须按 C-e 进入编辑模式。
emacs 用法
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 文档或参考其他资料。
Win7下Emacs使用笔记一
Win7下Emacs使用笔记一1. 为了用得顺手,需要把Caps Lock键设为Ctrl。
Caps Lock功能则设到右手的Context Menu键上或Win键上。
可使用KeyTweak工具来帮助改键,不嫌麻烦的话也可直接改注册表。
2. M-x按得不顺手(位置太近反而不好按),可以用ESC-X来代替,或者在.emacs中加入以下代码,把它设到C-X C-M与C-C C-M上,同时把C-X与C-C都设了可以防止不小心按错。
Lisp代码1;;更顺手的M-x(可以用C-x C-m或C-c C-m来触发)2(global-set-key"\C-x\C-m"'execute-extended-command)3(global-set-key"\C-c\C-m"'execute-extended-command)3. 实际使用中经常需要使用系统剪贴板(与其他编辑器或浏览器互相复制粘贴),CUA模式对按键习惯影响太大,不想用。
用鼠标中键可以粘贴,但太麻烦。
可以在.emacs中加入以下代码,把C-c C-c设为复制到系统剪贴板,C-c C-v设为从系统剪贴板粘贴。
Lisp代码4;;系统剪贴板快捷键(C-c C-c复制,C-c C-v粘贴)5(global-set-key"\C-c\C-c"'clipboard-kill-ring-save)6(global-set-key"\C-c\C-v"'clipboard-yank)4. C-z默认是挂起emacs,跳回到shell中,这对文本型的shell很有用。
但在windows中,事实上变成了毫无实际意义的窗口最小化,浪费了C-z这么顺手的键。
可以用以下代码把C-z改为一个类似C-x的组合起始键。
Lisp代码7;;允许使用C-z作为命令前缀8(define-prefix-command 'ctl-z-map)9(global-set-key (kbd"C-z") 'ctl-z-map)5. 初用emacs时,配置方案还不稳定,经常需要打开~/.emacs来编辑,可以设定用C-z i快速打开~/.emacs文件。
ZHL的emacs笔记:版本控制
**版本控制:git、clearcase、VC辅模式。
**git:一个版本控制系统 git 的前端。 第三方的包
配置:参见"emacs配置小技巧"第78。
说明:1、该扩展由包 git.el 和 git-blame.el 提供,它们包含在 git 发行版中(contrib/emacs目录下),这里描述的是从git-1.6.4中取到的包。git中还提到一个包 vc-git.el 是用于VC辅模式的后端,它已经成为emacs的一部分(从22.2开始),留待以后研究。
3、该模式的子键位映射图的名字为:clearcase-prefix-map 。
4、默认的其未单独绑定 check out 与 check in 命令,可将其如下绑定:
(define-key clearcase-prefix-map "\C-o" 'clearcase-checkout-current-buffer)
(define-key clearcase-prefix-map "\C-i" 'clearcase-checkin-current-buffer)
5、该包对 dired 模式也进行了改造,在其中可同时对多个版本化文件进行版本操作,操作命令的按键绑定与下面这些命令的相同。
6、修改几个命令的键绑定,以操作更方便的界面。
f 或 RET git-find-file :在当前窗le-other-window :在另一窗口打开当前光标所在文件。
v git-view-file :打开view辅模式以只读方式查看当前光标所在文件。再按 q 直接退回到git缓冲区,很方便。
c git-commit-file :对当前光标所在文件或所有加上了待操作标记的文件执行提交操作,会弹出窗口进入 Log-Edit 模式等待输入备注,完后指定文件被提交进版本库而变为未改变文件。
Emacs常用命令总结
Emacs常⽤命令总结C代表Control键,M代表Alt键,S代表Shift键。
翻页浏览命令:C-v 向前移动⼀屏M-v 向后移动⼀屏C-l 重绘屏幕,并将光标所在⾏置于屏幕的中央光标移动命令:C-f 向右移动⼀个字符C-b 向左移动⼀个字符M-f 向右移动⼀个词【对中⽂是移动到下⼀个标点符号】M-b 向左移动⼀个词【对中⽂是移动到上⼀个标点符号】C-n 移动到下⼀⾏C-p 移动到上⼀⾏C-a 移动到⾏⾸C-e 移动到⾏尾M-a 移动到句⾸M-e 移动到句⽂本编辑命令:<DEL> 删除光标前的⼀个字符【这⾥的DEL指键盘上的Backspace键】C-d 删除光标后的⼀个字符M-<DEL> 移除光标前的⼀个词M-d 移除光标后的⼀个词C-k 移除从光标到“⾏尾”间的字符【移除其实相当于其他编辑器⾥的剪切】M-k 移除从光标到“句尾”间的字符C-y 在光标所在处插⼊最后移除的⽂字【这个召回命令其实相当于其他编辑器⾥的粘贴】M-y 召回再前⼀次被移除的内容,连续使⽤ M-y 直到找到你想要召回的东西。
C-/ 撤销命令⽂件操作命令:C-x C-f 寻找⼀个⽂件【如果寻找⼀个不存在的⽂件,将创建此⽂件,只有在存盘的时候,Emacs 才会真正创建这个⽂件】C-x C-s 储存这个⽂件C-x C-c 退出Emacs缓冲区操作命令:C-x C-b 列出缓冲C-x 1 离开缓冲区列【只保留当前光标所在窗格】C-x b 缓冲区名称 <Return> 切换缓冲C-x s 保存多个缓冲搜索命令:C-s 向前搜索【再按⼀次 C-s,搜索下⼀个,敲 <Return> 结束搜索】C-r 向后搜索【除了搜索⽅向与C-s相反之外,其余的操作都⼀样】多窗格:C-x 2 将屏幕划分成两个窗格【数字2可以是其他数字(除1以外)】C-M-v 向下滚动另⼀个窗格C-M-S-v 向上滚动另⼀个窗格C-x o 将光标转移到另⼀个窗格C-x 1 只保留当前光标所在窗格帮助命令:C-h 使⽤帮助功能C-h ? Emacs会告诉你它提供了哪些帮助C-h c 简要说明【C-h c后⾯加要查询的命令】C-h k 详细说明【C-h k后⾯加要查询的命令】C-h f 解释⼀个函数【需要输⼊函数名】C-h i 阅读⼿册【也就是通常讲的 Info】C-h r Emacs使⽤⼿册【也就是通常讲的 Manual】。
emacs 教程
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是一种非常强大的文本编辑器和集成开发环境,它提供了许多强大的功能和技巧,可以大大提高编码和写作的效率。
在本文中,我们将介绍一些常用的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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4、emacs里对"段"(paragraph)的定义是指在两个空行之间的内容(也许缩进也是一个评估条件)。但经实验,好象大部分时候是指单行内容。参考变量 paragraph-separate 和 paragraph-start 。
C-p previous-line :向上。
UP hide-region-previous-line :其与 C-p 的一个区别在于不会记住移动开始时的列位置,比如移动开始时处于100列,使用 C-p 向上移动时则每一行都尝试回到100列位置上,而使用 UP 向上移动时则只尝试进入之前一行的列位置,若某行无内容,则其进入0列并不再改变。
C-h C-d view-emacs-debugging :显示如何调试Emacs的相关信息。
C-h t help-with-tutorial :给出一个基本模式的缓冲来显示"Emacs起步(tutorial)",居然是中文的。
C-h g describe-gnu-project :GNU工程(GNU project)描述,即 Richard Stallman 写的"The GNU Project"。
C-h l view-lossage :列出最近输入的100个字符。
C-h h view-hello-file :打开HELLO文件,其中列出了很多种语言及其字符集的hello,从而可以看出当前系统支持的字符集。
要查询所有以某个按键作为前辍的快捷键只需输入该按键后再按 C-h 就可以列出了,比如:C-c C-h ,C-x C-h ,C-h C-h ,M-O C-h ,M-o C-h ,M-s C-h ,等等。
C-h w where-is :告诉你某个命令绑定的什么键。
C-h f describe-function :告诉你某function的作用。如果只按一下SPC,emacs会给你所有lisp函数的列表和说明。
C-h F Info-goto-emacs-command-node :查看随后的命令所对应的info手册页(节点),描述信息更全面一些。会在Emacs manual的索引中查找,或在命令的info-file中查找,或在变量Info-file-list-for-emacs中查找。
C-a 或 HOME beginning-of-line :移到行头。
M-m back-to-indentation :移动到行首第一个非空白字符上。
C-e 或 END end-of-line :移到行尾。
M-a backward-sentence :句首。
M-e forward-sentence :句尾。
apropos-variable :显示所有名称匹配的用户变量。
apropos-value :显示那些其值中包含了匹配内容的符号。
apropos :这个概念都涉及哪些函数和变量。
C-h d apropos-documentation :显示那些其帮助文档中包含了匹配内容的符号(函数和变量等)。
本文档是"ZHL的emacs笔记"的一部分。
本文档的格式是为了快速检索与浏览而专门调整的,最Байду номын сангаас用emacs来查看,将tab
缩进显式设为3个字符,设置不自动换行,并使用outline模式,以提高学习和工
作效率。具体配置可参考文档"ZHL的emacs笔记:配置小技巧"。
本文档主要讲述的是一些emacs的基本操作,包括帮助的用法、光标的移动以及基
TAB forward-button :在帮助窗口中,光标前进到下一个交叉引用(cross-reference)点(即相当于超链处)。
S-TAB backward-button :在帮助窗口中,光标前进到上一个交叉引用(cross-reference)点(即相当于超链处)。 S-TAB 即 <backtab> 。
C-h S info-lookup-symbol :查看与指定符号(symbol)(即变量)相关的info文档,要求输入符号名,按 M-n 会翻出默认符号名(即光标处字串)以方便在此基础上进行符号名编辑。
C-h C-f view-emacs-FAQ :查看 Emacs FAQ 的info文档。
**帮助:有完备的帮助,要善于运用。
C-h 或 F1 help-command :各帮助命令的前导符。
C-h C-h/?/F1 help-for-help :帮助的帮助。按 q 键退出(C-h q help-quit)。
C-h m describe-mode :给出当前 mode 的说明、命令以及键绑定。
C-h p finder-by-keyword :按关键字查找包信息,非常实用。会列出所有的功能分类,RET后会列出该类下的所有包(即emacs lisp文件.el),再RET会显示选定包的描述和使用方法等。
C-h i info :以Info查看的所有主要的GNU项目的手册页,有许多重要的信息可以在这里找到。具体参考后面关于"Info模式"的描述。
M-f 或 C-RIGHT 或 M-RIGHT forward-word :向右一个单词。
M-C-b backward-sexp :向左一个表达式。光标在右括号后一个字符上时,将跳到左括号上。一对括号算做一个表达式,因此可以以括号为单位进行移动。
M-C-f forward-sexp :向右一个表达式。光标在左括号上时,将跳到右括号后一个字符上。一对括号算做一个表达式,因此可以以括号为单位进行移动。
C-h b describe-bindings :列出目前所有的keybinding。
C-h s describe-syntax :列出当前语法表(syntax table)中的语法定义。所有的emacs命令都是在语法表的控制下进行词分析或括号匹配,语法表决定了各个字符所扮演的角色(即语法分类)--分隔符、词成员、串引用、等等,每个主模式都可以有它自己的语法表,而每个缓冲区都会安装一个语法表,所有命令都会使用该语法表,可以用命令 modify-syntax-entry 来修改语法定义。语法分类在正则表达式中会用到。参见"关于语法表"。
C-h C-p view-emacs-problems :已知问题及 workaround 。
C-h C-n 或 C-h n view-emacs-news :Emacs NEWS file,介绍最近改版的新功能。
C-h C-c describe-copying :版权信息描述,即 GNU/GPL (GNU GENERAL PUBLIC LICENSE) 。
本的文本编辑命令,当然,主要是本人在使用过程中所关注的细节以及积累的经
验。
希望本文档能给emacs同好一些帮助,任何问题或建议可以发信到 seaxii@ 来讨论。
文档正文----------------------------------------------------------------
describe-categories :列出当前分类表(category table)中的分类定义(category specifications)。分类定义主要指明了何种字符属于哪个类,比如汉字类、希腊字母类等等。分类定义在正则表达式中会用到。参见"关于分类表"。
C-h a apropos-command :apropos的意思(approximate)。给lisp function的部份字串,emacs帮你找。
**帮助窗口操作:
RET help-follow :帮助前跳。在帮助窗口中,能前进到光标所处交叉引用(cross-reference)点(即相当于超链处)对应的帮助文档或源码中。在试图跳到包源码去时,有时会报错说库不在路径中,这是由于对应的源码文件被编译了而自身又被删除了,即,只有.elc文件而无.el文件了,这可能是为了节省空间而将该emacs安装成了紧凑形式,即只保留了编译后的源码而未保留编译前的源码,所以找不到对应的源码包(.el文件)。
C-h v describe-variable :告诉你某变量的描述及其当前值,如:C-h v load-path RET 会告诉你load-path的值。有自动补齐,甚至可以输入变量名中间某部分字串也可自动补齐,比如,输入 -table 后按TAB,则会列出所有包含 -table 的变量名。
C-c C-b help-go-back :帮助返回。帮助前进后能一步步再退回来。
C-c C-f help-go-forward :帮助再返回。即帮助回退后再前进。
C-c C-c help-follow-symbol :符号帮助前跳。不同于 help-follow 命令,该命令可针对普通字串执行,而不要求一定得是交叉引用点。其会分析光标所处字串,然后尝试显示所有该符号(即分析出的字串)相关的文档,包括变量、函数等等。
C-b backward-char :向左。
LEFT hide-region-backward-char :
C-f forward-char :向右。
RIGHT hide-region-forward-char :
M-b 或 C-lEFT 或 M-LEFT backward-word :向左一个单词。
5、emacs里对"页"(page)的定义是指在两个分页符之间的内容。分页符在文本模式里是一个打印字符,表示为"^L",若要插入一个分页符使用命令'C-q C-l',C-q为引用命令(quoted-insert),C-l为分页符(^L)。