📄 00000001.htm
字号:
C-x b 然後在minibuffer输入buffer的名字,可以切换编辑buffer. <BR> TAB键也有作用. 有些内部的buffer (就是没有档案的buffer), <BR> 是用*开头和结束, 这个也要打, 如*scratch* <BR> <BR>最候提醒: <BR> C-x 1 可以把多馀的视窗关掉. <BR> <BR> <BR>Emacs扩充指令 <BR> <BR>前面介绍的emacs按键大部份都是C-<chr> 或者 M-<chr>的形式. <BR>这是最简单的按法, 由一对按键构成一个指令. <BR> <BR>Emacs的按键可以超过2个以上. 如 C-x 1 或 C-x C-b. <BR>一般超过一个按键组合的命令都是用C-x 开头. <BR> <BR>另外你也可以直接下命令. 按 M-x 之後就可以打一个Emacs命 <BR>令来执行. 一般这些命令名字都很长, 不过都不常用. 等一下 <BR>我们会介绍一些. 还有介绍怎麽把这些命令设成按键指令. <BR> <BR>C-x C-c 就是结束Emacs. 不过一般Emacs很笨重, 一旦起动就不轻易 <BR>退出. 所以比较常用的是C-z <BR> <BR>C-z 把Emacs暂停, 回到命令列. 当你下次再需要编辑时,打fg %emacs <BR>就可以把Emacs唤醒. <BR> <BR>在X下, C-z会把emacs缩成icon <BR> <BR> <BR>mode line <BR> <BR>emacs编辑画面由 编辑区(buffer) 状态列 (modeline) 和对话区 (minibuffer) <BR>构成. 这里解释 modeline 显示的讯息. <BR> <BR>以下是个范例: <BR> <BR> --**-XEmacs: xemacs.qs (Fundamental)----74%------- <BR> <BR>由後面往前解释, 74% 表示游标的位置. <BR> <BR>(Fundamental)表示编辑模式.这是最原始的模式. 编辑不同种类的文章 <BR>可能希望用不同的模式, 比如说C-mode, lisp-mode, tex-mode, text-mode <BR>等等. 在不同模式下可能多一些按键出来. 举例text-mode. <BR> M-x text-mode <BR>可以切入text-mode, 这是一般人编辑文字使用的模式. 和Fundamental mode <BR>没什麽差异. 不过游标移动时, Emacs对一个字的定义就有所不同, 因而 <BR>M-f M-b 等移动一个字, 一个段落的指令就可能会停在标点符号的前面. <BR>此时状态列变为... (Text)----70%--- <BR> <BR>以上说的是Major mode. 另外还有minor mode, 其实就是一些额外的功能. <BR>比如说, M-x auto-fill-mode 则状态列显示 (Text Fill). <BR>auto-fill就是自动断行, 让文章每行固定有70个字. <BR> <BR>M-X fundamental-mode 可以变回来. <BR> <BR>这里要说明一下, emacs在 minibuffer下有auto-completion的功能, <BR>也就是打M-x fund 然後按 SPC, 它会自动补全 fundamental-mode, <BR>不用全打. 如果有两个以上的选择, 它会告诉你. 这个功能对 <BR>find-file (C-x C-f)等等档案编辑功能也有效. 前面提过. <BR>最後解释两个**号. 右边的*表示文章被修改过了. <BR>左边的* 表示这个编辑区(buffer)可以修改. <BR>有一些emacs的buffer是read-only buffer, 就会标成% <BR>%%表示档案是read-only. <BR> <BR>C-x C-q 可以解开read-only的锁定, 无论如何你要改这个编辑区. <BR>这是个toggle指令, 如果原来是可以修改的, C-x C-q会把它切成 <BR>read-only. <BR> <BR> <BR>Search <BR> <BR>没有Search 功能的编辑器简直就是小朋友的玩具. Search <BR>是一项很重要的功能, 所以emacs也提供的很完善. <BR> C-s <BR> C-r <BR> M-x re-search-forward <BR> M-x re-search-backward <BR> M-x search-forward <BR> M-x search-backward <BR>以上这些指令是基本的search指令. C-s, C-r是increamental search, <BR>就是你打字的同时, emacs就直接帮你找. 一个是forward, 一个是backward. <BR>找到了怎麽办? 按C-g可以取消搜寻, 跳回原来的位置. 按Enter就让游标 <BR>停在找到的地方 -- 此时minibuffer显示:Mark saved where search started <BR>什麽意思? 就是isearch帮你在原来的位置设了一个mark, 然後把point <BR>(cursor) 移到新的位置. <BR>想跳回去原先的地方? <BR>C-x C-x 就可以了.(exchange-point-and-mark) <BR>C-u C-SPC 可以依序跳回前几次设mark的地方. <BR> (C-SPC是设mark, 给它一个argument, 就是反动作) <BR> (还记不记得C-u 可以给後面的指令设一些参数. <BR> 有些指令拿这个参数来当作repeat count, <BR> 有些指令就只拿来当作on/off, true/false, set/clear而已) <BR> <BR>M-x re-search-forward可以让你用regular expression搜寻. <BR>M-x search-forward则没有increamental的功能. <BR> <BR>另外一个指令, 作用和grep很像: <BR>M-x occure <BR> <BR>和search相提并论的就是replace. <BR>M-x replace 然後按 SPC, 就知道了. <BR> <BR>Emacs的设定: <BR> <BR>Emacs的设定档是 $HOME/.emacs <BR>你应该多少知道, emacs是用lisp写成的编辑器, .emacs档也都是 <BR>要用lisp的语法设定. emacs用的lisp称为elisp, 和一般的lisp差一点点. <BR> <BR>有一个info page, emacs-lisp-intro, 深入浅出的介绍emacs lisp. <BR>如果你还不会, 不懂programming, 强烈建议你看这份文件. 如果你 <BR>会texinfo, 你可以把它很漂亮的印出来. (内容一点点而已, 两三 <BR>天就看完了) <BR> <BR>如果你把.emacs搞砸了, 进emacs很奇怪, 怎麽办? <BR> 1. 用 vi 改 .emacs :> <BR> 2. emacs -q 进 emacs <BR> <BR> <BR>Major Modes <BR> <BR>一般常见的emacs major mode有 <BR> fundamental-mode <BR> text-mode <BR> lisp-mode 有自动对括号/重排, 直接执行lisp code功能. <BR> c-mode/cc-mode c-mode是比较旧的c-mode, cc-mode应该是 <BR> 目前新的c-mode. 有自动重排/对括号的功能. <BR> 也可以在emacs内compile, 跳到compiler error <BR> 修正错误. 执行程式时debug. (配合dbx/gdb) <BR> compile是透过Makefile进行. <BR> tex-mode Tex/Latex编辑模示. 可能是打一些奇怪的标点 <BR> 符号比较方便. <BR> <programming-language>-mode <BR> 同lisp/cc-mode. 如果是interpreter的话, <BR> emacs通常都可以直接执行/debug. <BR> <programming-language>-mode还有tags的功能, 後述. <BR> <BR> html-mode, texinfo-mode, sgml-mode: 编写html, texi, sgml之用. <BR> w3-mode WWW browser. 在x-win上不满意,但可以接受... <BR> <BR> <BR>Tags <BR> <BR>Tags 是一个显为人知的功能? 所以我想提一下. 这不是emacs发明的, <BR>而是vi 原本的特异功能. emacs只是发扬光大而已. <BR>假设你有一个目录, 里面是一个程式的原始码, 比如说, tin 的原始码, <BR>放在 ~/tin-1.3beta 下面. 你想看它们. <BR> <BR>首先, 叫emacs cd到该目录: <BR> M-x cd <BR> <BR>然後, 建立tag table. <BR>tag table 就是一张对照表, 记录哪个符号(variable/function call) <BR>对映到哪个档案的哪个地方. 有这张表, emacs可以让我们快速的在程 <BR>式码内游走. 一般这张表是一个档案, 叫作TAGS (大写) <BR> <BR> M-! etags *.[ch] <BR> <BR>M-! 是执行external shell command的意思. etags就是emacs的建表程式. <BR>你只要告诉它你的source code在那□即可. <BR> <BR>vi的话是使用ctags这个程式, 它建出来的档名叫tags (小写). 因为 <BR>我们介绍emacs, 所以不管它. <BR> <BR>然後, 怎麽看程式? 你知道所有的C 程式都是由main()开始, 所以你想 <BR>找到main()在哪个档案. 这时只要按 M-. 然後emacs会问你tag table <BR>在哪里. 因为我们已经cd到该目录, 直接按enter就好了. 然後输入main, <BR>emacs就会把你带到main(){ ... }去. <BR> <BR>如果 你看到某个程式片断呼叫一个你没看过的函式, 你可以把游标 <BR>移到该函式的名字上, M-. ENTER 就搞定了. <BR> <BR>如果 emacs找错了 (比如有变数和函式同名, emacs跳到变数去), <BR>那你可以用 C-u M-. 找下一个. <BR> <BR>在编辑程式码的时候, M-SPC 很有用, 它会把游标附近的空白缩成一个. <BR>在其它地方也有效. <BR> <BR>Emacs的一些package: <BR> <BR>M-x dired (或C-x d) <BR> 游走/编辑 目录, 就是档案总管的意思 :) <BR> <BR>M-x man 就是man page <BR>M-x shell 开个command prompt, 不过不能跑vi,elm, tin... <BR>M-x gnus 读新闻/读信 <BR>M-x rmail 读信 <BR>M-x vm view mail <BR>M-x mh-rmail 读信 (package mh-e) <BR>M-x mh-smail 送信 (package mh-e) <BR> <BR>强列建议改用emacs读news/bbs. 世界会更美好! <BR> <BR>读信的话就要看你的感觉. 这些读信程式都会把信从系统的mail folder <BR>搬到自己的目录下, 占用quota, 我不喜欢 :p 建议elm或mutt. <BR>除非参加mailling list配合procmail. 不然不实用. <BR>用mh-e 须要装mh 这个外部程式, 不太好. 建议vm 或 gnus. <BR>写完信, C-c C-c 就可以送信. <BR> <BR>如果你的资料用rcs/sccs作版本管理, emacs自动会起动version control <BR>(minor mode.), c-x c-q 变成check-in/check-out. <BR> <BR>如何取得更多的资讯: <BR> <BR>Emacs的lisp 经过多年的发展,已成为完整的self-documenting系统. <BR>很多东西都可以线上找到你要的资讯. <BR> <BR>前面说过,或者你已经不小心按backspace遇到了, C-h (就是backspace <BR>的ascii码) 在emacs里面是help的意思, 它可以带出一串指令. <BR>常用的有: <BR> <BR> C-h F Emacs FAQ <BR> C-h t Emacs 使用教学 <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -