Emaces编辑器使用
- 格式:doc
- 大小:32.00 KB
- 文档页数:3
Linux命令高级技巧使用emacs进行高效文本编辑在Linux系统中,一款强大的文本编辑器-Emacs,以其灵活的扩展性和强大的功能而受到广大开发者的喜爱。
本文将介绍如何使用Emacs进行高效的文本编辑。
一、Emacs简介Emacs是由Richard Stallman开发的一款自由、开源且可扩展的文本编辑器。
它具有非常丰富的功能,包括文本编辑、编程、代码补全、调试等等。
Emacs的特点在于其可定制性,用户可以根据自己的需求配置编辑器,使其变得与个人化需求高度契合。
二、Emacs基础操作1. 启动Emacs在终端中输入`emacs`命令即可启动Emacs编辑器。
2. 打开文件在Emacs中打开文件的方式有多种,最常用的方式是在菜单栏中选择`File`->`Open File`,然后选择要打开的文件。
3. 光标移动使用方向键或者键盘上的`h`、`j`、`k`、`l`来移动光标,或者使用`Ctrl`键加上对应的字母移动,例如`Ctrl`+`n`向下移动一行,`Ctrl`+`p`向上移动一行。
4. 文本选择与编辑使用`Ctrl`键加上对应的字母来进行文本选择与编辑。
例如,`Ctrl`+`f`向前移动一个字符,`Ctrl`+`b`向后移动一个字符。
使用`Ctrl`+`Space`可以进行文本选择,按下键盘上的字母键即可进行编辑。
5. 撤销与重做使用`Ctrl`+`z`可以撤销先前的操作,使用`Ctrl`+`Shift`+`z`可以重做刚刚撤销的操作。
6. 保存与退出按下`Ctrl`+`x`,然后按下`s`可以保存文件。
按下`Ctrl`+`x`,然后按下`c`可以退出Emacs编辑器。
三、Emacs高级技巧1. 多窗口编辑Emacs支持同时打开多个窗口进行编辑,可以通过`Ctrl`+`x`2次然后按下`3`来拆分窗口垂直分割,按下`Ctrl`+`x`2次然后按下`2`来拆分窗口水平分割。
在每个窗口中可以分别编辑不同的文件,提高了编辑效率。
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编辑器可以同时开辟并管理多个工作缓冲区,因此允许同时对多个文件进行编辑操作,还可以用编辑缓冲区来保存、删除或拷贝文本,用户甚至可以开辟目己的缓冲区,并在这些缓冲区中保存文本,必要时可以把这些缓冲区内的文本保存到文件中。
emacs 大小写转换函数
Emacs 是一个功能强大的文本编辑器,它提供了许多内置的函
数来处理文本。
要在 Emacs 中进行大小写转换,你可以使用内置的
函数 `upcase-region`、`downcase-region` 和 `capitalize-region`。
1. `upcase-region` 函数可以将选定区域内的文本转换为大写。
要使用这个函数,首先需要选中要转换大小写的文本,然后按下
`M-x upcase-region`,或者使用快捷键 `C-x C-u`。
2. `downcase-region` 函数则可以将选定区域内的文本转换为
小写。
同样地,首先选中文本,然后按下 `M-x downcase-region`,或者使用快捷键 `C-x C-l`。
3. `capitalize-region` 函数可以将选定区域内的文本转换为
首字母大写。
同样地,首先选中文本,然后按下 `M-x capitalize-region`,或者使用快捷键 `M-M-x capitalize-region`。
除了以上提到的函数外,Emacs 还提供了其他一些大小写转换
的函数,比如 `upcase-word`、`downcase-word` 和 `capitalize-
word`,它们可以分别将光标处的单词转换为大写、小写和首字母大写。
总之,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了。
linux 程序设计基础emacs 编辑器emacs文本编辑器可以用来编辑文本、剪辑和粘贴文本内容、提供个人日历和日记,阅读Usenet 新闻、发送电子邮件,同时它还是一种程序语言解释器可以编辑C、Lisp、Tev 源代码文件,以及Linux 的Shell。
emacs是有Richard Stallman发明的,这位发明家还创建了自由软件基金会(Free Software Foundattion,简称FSF)。
最初的emacs是用来编辑宏命令的,现已进一步扩充为UNIX 用户中装机用户数量最大功能最齐全的免费文本编辑器了。
emacs同VI不一样,没有编辑状态和指令状态之分,其最重要的概念是其独特的缓冲区,emacs 编辑的素有文件都是放在缓冲区中的,emacs 支持同时编辑多个缓冲区,可以打开一个文件在多个缓冲区中不同的拷贝,甚至其所有的在线帮助和文档以及出错信息都是作为一个缓冲区来显示的,当然这些缓冲区是不可写的,用户可以在这些缓冲区之间拷贝和粘贴文本。
并且一般所有的缓冲区在硬盘上都有一个以"#" 开头的备份文件,这样在系统突然崩溃时可以及时将用户的工作进行备份。
在编辑文件时,如果用户在编辑一些特殊类型的文件,例如当前用户编辑扩展名为.c的C语言文件时,emacs会长生菜单选项c,向用户提供针对c 程序特别有用的一些命令。
当用户编辑扩展名为.txt 的文件时,则会多出菜单选项tex让用户在编辑完tex 文件后可以及时地观看输出并打印。
首先介绍一下几个常见键盘操作符的意义:所有的emacs的操作键都是有Ctrl键和META 键(一般是键盘上的Alt 键)加上一些键的组合组成的,如果没有Alt 键,则可以用输入一个Esc,再输入相应的键来代替。
C-x :表示同时按住Ctrl 键和x 键C x :表示先按住Ctrl 键,然后释放它,再按下x 键M-x :表示同时按住Alt 和x 键M x :表示先按住Alt 键,然后释放它,再按下x 键emacs的启动和退出emacs可以用两种方法启动。
Emacs使用手册Emacs 启动:直接打e macs, 如果有X-windows就会开视窗. 如果不想用X 的版本,就用 e m acs -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-<c hr>和M-<c h r>组成的.超过两个以上的按键命令, Emacs会在萤幕最下面一行显示你按过什麽. 这一行叫作mi ni buffer结束Emacs按 C-x C-c取消执行 C-g有些Emacs命令会跑很久, 可以用C-g中断之. 按错键也可以按C-g取消.上下移动 C-p向上 (previous line) C-n向下(next line)左右移动 C-f 向右 (forwar d) C-b 向左 (backwar d)其实Emacs内部没有行的概念, 把一篇文章放在一个大b uffer里面, 所以C-f (forwar d)就是向档尾移动, C-b (backwar d)是移回去的意思, 一次一个字.翻页 下一页 C-v (view next screen)上一页 M-v翻页时,上一页末尾会留一点在萤幕最上面,以维持连续性.Emacs在游标接近萤幕最下方时会自动跳半页, 把档案往前挪一点,方便阅读.重画萤幕 C-LEmacs里面游标的专有名词叫p oint. 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.e m acs会把kill掉的东西放到kill ring去, 算是一种暂存的地方,以後可以叫出来.见 yank说明.Undo: C-x uC-_ 等於 C-x u有些DEC终端机, C-/就是C-_有时等於C-Shift- -重复执行举例, 向右移 8个字, C-u 8 C-fC-u在Emacs里是蛮特别的,用来设定一些引数(argu ment/re peat 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-u p C-down 移动一段 (paragra p hs/C语言的话是block) Home = C-aEnd = C-eC-Home = M-<C-en d = M->PgUp PgDn = M-v C-v设定重覆次数更加简单,比如要向右移10个字 C-1 C-0 right-arrow就是按住CTRL, 然後打10就对了, 比 C-u 1 0 简单.Mouse中键用来选取有hi-light的地方.右键是m e n u-button如果不小心按两次ESC, 等於 M-ESC, 会有一个讯息跑出来说你按到一个被disable的命令. 这是高级指令, 作者认为初学者用不道,所以会问你要不要启动它, 一般回答no.如果某一行太长, 萤幕显示不下, Emacs会在萤幕最右边打个$, 表示此行未完,右边还有.把一行拆成两行: 在想拆处按Enter即可.合并两行为一行: 在行尾按C-d (或行首按DEL)Yank: 吐出被删掉的(killed)东西.只要用kill (C-k, M-k等) 删除, 超过一个字的资料,e m acs就会把它存起来, 然後C-y 可以把它叫出来.功能跟Cut & Paste一样. Kill 和delete不一样, 只有被kill掉的东西才能用yank吐回来.游标在同一地方不动, 连续kill掉的资料会被当成一次kill掉的,被Kill掉的资料是放在称作 kill ring的资料结构上面, ring就是个圆圈, 被kill掉的东西会依序摆在圆圈上. yank 会放回最近一次kill掉的资料. 如果不是你想要的话, 用M-y 可以换. (M-y就是告诉e macs, 不对不对, 我不是要这一个,换前一个给我).M-y 要紧接在C-y之後.拷贝文字的方法==连续 C-k 几次, 把要拷贝的行全部删掉,然後按 C-y 弄回来. 再到想复制的地方按一次C-y, 就成了.把要拷贝的资料kill掉在yank回来好像很笨. 是有比较文明的方法, 那就是M-w, 不过较麻烦.首先,要先设标记. Mark 用 C-SPC 或 C-@ 设. 然候把游标移到另一端, 按 M-w 就可以把 m a rk 到 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-b uffer输入档名. 输入档名时, SPC键有auto-co m plete的功能,或者会秀出到目前为止档名前几个字和输入一样的. (TAB键也有类似功能)C-x C-f 叫 find-fileC-x C-s 存档 (save current file, save current b uffer)C-x s 存所有的档C-x i 插入档案 把另外的档案的内容读入目前编辑区内视窗Emacs把档案读进来,存在b uffer中.我们透过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的视窗, 称为fra me.C-x 5 2 就是再开另一个X视窗 (fra me).多档编辑C-x C-b 看目前有那些buffer (buffer就是e macs放开起的档案的地方). C-x b 然後在minibuffer输入buffer的名字,可以切换编辑buffer.TAB键也有作用. 有些内部的buffer (就是没有档案的buffer), 是用*开头和结束, 这个也要打, 如*scratch*最候提醒:C-x 1 可以把多馀的视窗关掉.Emacs扩充指令前面介绍的e m acs按键大部份都是C-<c hr>或者 M-<c h r>的形式.这是最简单的按法, 由一对按键构成一个指令.Emacs的按键可以超过2个以上. 如 C-x 1 或 C-x C-b.一般超过一个按键组合的命令都是用C-x 开头.令来执行. 一般这些命令名字都很长, 不过都不常用. 等一下我们会介绍一些. 还有介绍怎麽把这些命令设成按键指令.C-x C-c 就是结束Emacs. 不过一般Emacs很笨重, 一旦起动就不轻易退出. 所以比较常用的是C-zC-z把Emacs暂停, 回到命令列. 当你下次再需要编辑时,打fg %emacs就可以把Emacs唤醒.在X下, C-z会把e macs缩成iconm o de linee m acs编辑画面由编辑区(buffer) 状态列(modeline) 和对话区(minibuffer) 构成. 这里解释m o deline 显示的讯息.以下是个范例:--**-XEmacs: xemacs.qs (Funda me n tal)----74%-------由後面往前解释, 74% 表示游标的位置.(Funda me n tal)表示编辑模式.这是最原始的模式. 编辑不同种类的文章可能希望用不同的模式, 比如说C-m o de, lisp-m o de, tex-m o de, text-m o de 等等. 在不同模式下可能多一些按键出来. 举例text-m o de.M-x text-m o de可以切入text-m o de, 这是一般人编辑文字使用的模式. 和Funda me ntal m o de 没什麽差异. 不过游标移动时, Emacs对一个字的定义就有所不同, 因而M-f M-b 等移动一个字, 一个段落的指令就可能会停在标点符号的前面.此时状态列变为... (Text)----70%---以上说的是Major m o de. 另外还有mi nor m o de, 其实就是一些额外的功能.比如说, M-x auto-fill-m o de 则状态列显示 (Text Fill).auto-fill就是自动断行, 让文章每行固定有70个字.M-X fun da me ntal-m o de 可以变回来.这里要说明一下, e macs在 mi nibuffer下有auto-co m pletion的功能,也就是打M-x fun d然後按 SPC, 它会自动补全fun da me ntal-m o de,不用全打. 如果有两个以上的选择, 它会告诉你. 这个功能对find-file (C-x C-f)等等档案编辑功能也有效. 前面提过.左边的* 表示这个编辑区(buffer)可以修改.有一些e macs的buffer是rea d-only buffer, 就会标成%%%表示档案是rea d-only.C-x C-q 可以解开rea d-only的锁定, 无论如何你要改这个编辑区.这是个toggle指令, 如果原来是可以修改的, C-x C-q会把它切成rea d-only.Search没有Search 功能的编辑器简直就是小朋友的玩具. Search是一项很重要的功能, 所以e macs也提供的很完善.C-sC-rM-x re-search-forwardM-x re-search-backwar dM-x search-forwar dM-x search-backwar d以上这些指令是基本的search指令. C-s, C-r是increa mental search,就是你打字的同时, e m acs就直接帮你找. 一个是forward, 一个是backward. 找到了怎麽办? 按C-g可以取消搜寻, 跳回原来的位置. 按Enter就让游标停在找到的地方 --此时minibuffer显示:Mark saved where search started 什麽意思? 就是isearch帮你在原来的位置设了一个m a rk, 然後把point (cursor) 移到新的位置.想跳回去原先的地方?C-x C-x 就可以了.(exchange-point-an d-m a rk)C-u C-SPC 可以依序跳回前几次设m a rk的地方.(C-SPC是设m a rk, 给它一个argu me nt, 就是反动作)(还记不记得C-u可以给後面的指令设一些参数.有些指令拿这个参数来当作re peat cou nt,有些指令就只拿来当作on/off, tr ue/false, set/clear而已)M-x re-search-forwar d可以让你用regular expression搜寻.M-x search-forward则没有increa me ntal的功能.另外一个指令, 作用和grep很像:M-x occure和search相提并论的就是re place.M-x re place 然後按 SPC, 就知道了.Emacs的设定档是 $HOME/.e macs你应该多少知道, e macs是用lisp写成的编辑器, .emacs档也都是要用lisp的语法设定. e m acs用的lisp称为elisp, 和一般的lisp差一点点.有一个info page, e m acs-lisp-intro, 深入浅出的介绍e m acs lisp.如果你还不会, 不懂p rogra m ming, 强烈建议你看这份文件. 如果你会texinfo, 你可以把它很漂亮的印出来. (内容一点点而已, 两三天就看完了)如果你把.emacs搞砸了, 进e m acs很奇怪, 怎麽办?1. 用 vi 改.emacs :>2. e m acs -q 进e m acsMajor Modes一般常见的e m acs m ajor m o de有fun da me ntal-m o detext-m o delisp-m o de 有自动对括号/重排, 直接执行lisp code功能.c-m o de/cc-m o de c-m o de是比较旧的c-m o de, cc-m o de应该是 目前新的c-m o de. 有自动重排/对括号的功能.也可以在e macs内co m pile, 跳到co m piler error修正错误. 执行程式时deb ug. (配合d bx/g db)co m pile是透过Makefile进行.tex-m o de Tex/Latex编辑模示. 可能是打一些奇怪的标点符号比较方便.<p r ogra m ming-language>-m o de同lisp/cc-m o de. 如果是interpreter的话,e m acs通常都可以直接执行/d e b ug.<p r ogra m ming-language>-m o de还有tags的功能, 後述.h t ml-m o de, texinfo-m o de, sg ml-m o de: 编写h t ml, texi, sg ml之用. w3-m o de WWW browser. 在x-win上不满意,但可以接受...TagsTags 是一个显为人知的功能? 所以我想提一下. 这不是e macs发明的,而是vi 原本的特异功能. e m acs只是发扬光大而已.假设你有一个目录, 里面是一个程式的原始码, 比如说, tin 的原始码,放在 ~/ti n-1.3beta 下面. 你想看它们.首先, 叫e m acs cd到该目录:M-x cd然後, 建立tag table.tag table 就是一张对照表, 记录哪个符号(variable/f u nction call)对映到哪个档案的哪个地方. 有这张表, e macs可以让我们快速的在程式码内游走. 一般这张表是一个档案, 叫作TAGS (大写)M-! etags *.[ch]M-! 是执行external shell co m m a n d的意思. etags就是e m acs的建表程式. 你只要告诉它你的so urce code在那□即可.vi的话是使用ctags这个程式, 它建出来的档名叫tags (小写). 因为我们介绍e macs, 所以不管它.然後, 怎麽看程式? 你知道所有的C 程式都是由m ain()开始, 所以你想找到m ain()在哪个档案. 这时只要按 M-. 然後e m acs会问你tag table在哪里. 因为我们已经cd到该目录, 直接按enter就好了. 然後输入m ain,e m acs就会把你带到m ain(){ ... }去.如果 你看到某个程式片断呼叫一个你没看过的函式, 你可以把游标移到该函式的名字上, M-. ENTER 就搞定了.如果 e m acs找错了 (比如有变数和函式同名, e m acs跳到变数去),那你可以用 C-u M-. 找下一个.在编辑程式码的时候, M-SPC 很有用, 它会把游标附近的空白缩成一个.在其它地方也有效.Emacs的一些p ackage:M-x dire d (或C-x d)游走/编辑 目录, 就是档案总管的意思 :)M-x m a n就是m a n pageM-x s hell 开个co m m a n d p ro m p t, 不过不能跑vi,elm, tin...M-x gnus 读新闻/读信M-x r m ail 读信M-x vm view m ailM-x m h-r m ail 读信(package m h-e)M-x m h-s mail 送信(package m h-e)强列建议改用e m acs读news/b bs. 世界会更美好!读信的话就要看你的感觉. 这些读信程式都会把信从系统的m ail folder搬到自己的目录下, 占用q uota, 我不喜欢:p 建议elm或m u t t.除非参加m ailling list配合p roc mail. 不然不实用.用m h-e 须要装m h这个外部程式, 不太好. 建议vm 或 gnus.写完信, C-c C-c 就可以送信.如果你的资料用rcs/sccs作版本管理, e m acs自动会起动version control (minor m o de.), c-x c-q 变成check-in/c heck-out.如何取得更多的资讯:Emacs的lisp 经过多年的发展,已成为完整的self-docu me nting系统.很多东西都可以线上找到你要的资讯.前面说过,或者你已经不小心按backspace遇到了, C-h (就是backspace 的ascii码) 在e m acs里面是help的意思, 它可以带出一串指令.常用的有:C-h F Emacs FAQC-h t Emacs 使用教学C-h n Emacs NEWS file, 介绍最近改版的新功能C-h i Info syste m. Info是gnu用来取代m a n page的系统, 基本上和文字模示的WWW差不多. 有许多重要的资讯可以在这边找到. 如果你是新手, 建议你在x-win下看. 不然, 按键 m (men uite m), SPC next pagel (last no de: no de就是章节的意思) u (up no de)d (directory, 索引). BS (Backspace, back a p age).如果全部只按SPC, 就跟m a n一样.C-h k describe key, 告诉你按这个键执行那个lisp function.C-h f describe function. 告诉你function在作什麽.如果只按SPC, e macs会给你所有lisp 函数的列表, 和说明.C-h v describe variable 同function.C-h a apro pos的意思(approximate). 给lisp function的部份字串, e macs帮你找.C-h b 列出目前所有的keybin dingC-h m m o de help. 列出目前的m o de的特殊说明.C-c C-h列出以C-c 开头的所有key-binding. 虽然说Emacs 可以定义按键, 可是Ctrl-开头的所有组合大概都用光了,目前的convention是C-c <c h r>留给u ser, C-c C-<c hr>留给p ackage.有以上这些help, 你的e m acs/elisp功力会随著时间成长.Elisp 简介:Emacs有三份手册.第一份是使用手册, 第二份是Elisp 手册, 第三份是 Elisp 简介. 第三份的程度是入门级, 值得看. Elisp手册其实也写的很简单, 还教你lisp, 不过有点长, 适合参考.因为我lisp没有仔细学过, 所以:以下所言, 如有巧合, 那才是真的.Basic data type字串 (string) "Hello, World"字元(char) ?a ; 问号开头ato m & list:(1 2 3 4) 是一个list, 由4个 ato m组成.p air: 中间是句点.(apple . 2)alist (associated list)就是一堆pair的集合,就像perl/tcl的associative array.或者说是一个资料库, 一堆(key, value) pair.'((Apple . 1)(Orange . 2)(PineAp ple . 3))vector (?)e macs 19用vector 来表示按键(key strok sequence)[f1] [f2] [f1 a]nil 就是空的list, 或者表示 falset trueForm s我们写程式最好有样版让我们填空最简单了.Form就是样版, 不过意义不太一样.Form就是Elisp 可以接受的句型.lisp 解译器预设是对list的每个元素求值(evaluate),除非是 s pecial for m, 有特殊的定义. 比如说(defun FUNC (ARG-LIST)BODY ...)就是一个s pecial for m, 用来定义函式, 所以FUNC 不会被求值, 被当成sy m bol, ...(quote (LIST))这也是个s pecial for m, 叫 lisp 把 (LIST)当做sy mbol就好了,不要 evaluate.q uote 很常用, 所以有个缩写:'(LIST) 等於 (quote (LIST))'Asymbol 可以表示一个Ato m, 名称叫Asymbolset 可以产生/定义新的变数.(set 'hello 1); hello = 1; 注意我们用 'hello, 所以lisp不会evaluate hello的值.这家伙很常用, 也有简写.(setq hello 1)setq 就是set q uote 的缩写. 这是个 s pecial for m, 不会对第二个元素求值.valuation在Emacs下, C-x C-e 可以执行(evaluate, 求值)游标左边的叙述.结果会出现在mi nibuffer.lisp-interaction-m o de中 C-j 可以evaluate, 并且把结果ap pe n d到 buffer.lisp 程式由一堆list 构成.称为expression.每个expression 都回传回一个值.有些expression有副作用, 如删掉一个字.(这跟C 的int delete_char() 意思一样, 它传回int,并且删掉某个char)定义函式:(defun NAME (ARGS-LIST)"注解" ; o ptional(interactive) ; op tionalBODY)定义一个叫NAME的函式. BODY 是一堆expression.注解是用来给C-h f显示的.(interactive) 表示这个函示会和u ser/b uffer作用.(interactive "B") 表示执行此函式先问u ser一个b uffer的名字,然後当作参数传给它. (如, 当u ser透过key-bin ding或者 M-x 呼叫此函式时)(interactive "BAppen d to b uffer: \n r")问u ser b uffer na me时, 提示号 Appen d to b uffer:此function有两个引数,第一个是B, 就是buffer第二个是r, region用\n隔开.(interactive "p") 用C-u设的p refix 把它当作参数传给我.预设值==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 *secon d};*(pair[i].first) == i;pair[i].secon d == 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) ; 传回目前b uffer的资料物件(switch-to-b uffer (other-b uffer))(set-buffer)(buffer-size)(setq current-p os (point))(point-min)(point-m ax)(message "Hello") ; 在mi nibuffer显示Hello(if (test)(then-part)(else-p art))(cond ((test1) BODY1)((test2) BODY2)(t OTHER-WISE)(let ((var1 value) ; local variablevar2 ; no value(var3 value)...)BODY ...)(lamb da (ARG-LIST) ...) 同 defu n, 但是没有名字 (anony mo u s).可以存到变数去:(setq hello (lamb da () (message "Hello,World")))(funcall hello)(goto-char (point-m ax))(defvar VAR VALUE "*注解") 如果VAR 不存在才定义. 有注解可以用 C-h v 看. 注解打*号表是使用者可以直接改/这个变数本来就是 给使用者设定用的.可以用 M-x edit-options 来线上设定 (emacs结束就没有了,不过edit-o ptions可以给你所有可修改的变数的列表,你可以放到.emacs档内.(directory-files "./" t "\\..*")ret ur n a list of files u n der directory X(load "xxxx.el") 同#include <s t dio.h>给使用者设定用的.可以用 M-x edit-options 来线上设定 (emacs结束就没有了,不过edit-o ptions可以给你所有可修改的变数的列表,你可以放到.emacs档内.(directory-files "./" t "\\..*")ret ur n a list of files u n der directory X(load "xxxx.el") 同#include <s t dio.h>(setq load-p at h (cons "~/e m acs" load-pat h)) ; load的search p at h. (autoloa d ...) 不像load会直接evaluate 整个档案, 而是需要时再load.(local-u n set-key [(control c)])(local-set-key [(control c) a] 'forwar d-sexp)sexp 就是一个expession, n个expression如果用括号括起来就算一个. (expression的定义随语言的不同而有不同, 在C, lisptex, h t ml, fortra n 下皆有差异)。
教程简介本教程讲什么?第 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 编辑环境,第 4 部分: 选项、寄存器和书签使用这个著名的开放源代码编辑器Michael Stutz (stutz@)2007 年 8 月 16 日作家顾问在 Emacs 中控制您的编辑会话,并使用它提高工作效率。
本教程是系列文章的第 4 部分,将向您介绍 Emacs 中控制编辑会话某些方面的三个领域:各种不同的命令行选项、寄存器,以及用于设置和保存位置及数据的书签工具。
了解如何以及何时使用这些特性及其使用诀窍,这些都是完成功能强大的编辑工作中的重要主题。
查看本系列更多内容开始之前了解本教程中包含的内容以及如何最好地利用本教程。
关于本系列Emacs 编辑环境深受 UNIX® 开发人员的喜爱。
它是世界公认的编辑器之王,但许多用户发现它学起来需要一定的过程。
Emacs 环境初看起来并不是很直观,而且和其他编辑器和字处理器的工作方式不大一样。
但 Emacs 的学习并不困难。
一旦您熟悉了它,就会发现它有多么直观,而且越用越顺手。
这个系列教程(请参见参考资料)将为您提供指导,带您了解 Emacs 的基础知识,如它的功能、原理、按键命令布局和编辑文本的方法,然后深入它众多的强大编辑功能。
在完成本系列文章(请参见参考资料)的学习后,您可以通过 Emacs 很方便地进行日常编辑工作,能越来越熟练地使用 Emacs,并对 Emacs 的许多高级功能有一个良好的认识。
关于本教程这是关于学习 Emacs 的系列教程中的第 4 部分(请参见参考资料)。
本系列文章主要介绍 Emacs 编辑器的使用,前面的教程向您介绍了一些基础知识;这一部分将介绍有关选项、寄存器和书签的特殊主题,并以此圆满结束到目前为止所学习的内容。
与许多应用程序一样,Emacs 提供了许多命令行选项,通过这些选项可以改变它的功能;在本教程中,您将了解如何以及何时使用它们,并且还将了解寄存器和书签这两种特殊的 Emacs 工具,它们是为当前和以后编辑会话存储位置及其他重要信息的有效方法。
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 中快速切换和浏览项目。
它可以识别项目的文件结构,并提供一些快捷命令来管理项目。
Emaces编辑器
Emaces不仅是一款功能强大的编辑器,也是一款集编辑、编译、调试于一体的开发环境。
在Emaces里一切都是在内存中进行的,Emaces只有一种模式,也就是编辑模式,而它的命令全靠功能键完成。
与vi相比,Emaces的一个显著特点是可以使用鼠标进行大部分的操作。
在Emaces中的功能键基本上都是由C(<Ctrl>键)和M(<Alt>键)的组合完成的。
例如,"C-f"就是按住<Ctrl>键同时键入<f>,而“C-x C-c”则代表先按住<Ctrl>键再同时按住<x>键,再按住<Ctrl>键并同时按住<c>键。
1.Emacs的启动与退出
启动Emacs很简单,只需在命令行键入emacs[文件名]即可(若缺省文件名,也可在Emacs 编辑文件后另存时指定),也可从“应用程序”——>“编程”——>“emacs”打开,单击任意键进入Emacs的工作窗口,Emacs的工作窗口分为上下两个部分,上部为编辑窗口,底部为命令显示窗口。
用户执行功能键的功能都会在底部有相应的显示,有时也需要用户在底部窗口输入相应的命令,如查找字符串等。
Emacs会为每一个作为参数输入的文件打开一个缓冲区,并最多可以显示两个缓冲区。
如果在启动Emacs时没有指定任何文件,那么将会看到一个称为*scratch*的缓冲区。
若想要退出Emacs的工作窗口,则可使用功能键“C-x C-c”退出。
若当时所编辑的文件还未保存,则系统会提示是否保存该文件等。
2.Emacs的基本编辑
Emacs只有一种编辑模式,因此用户无需进行模式间的切换。
下面介绍Emacs中的基本编辑功能键。
1.移动光标
掌握移动光标对应的功能键后,可以在所有类型的终端上工作,工作效率比使用“上”、“下”、“左”、“右”方向键移动光标更高。
C-f 向前移动一个字符
C-b 向后移动一个字符
C-p 移动到上一行
C-n 移动到下一行
M-f 向前移动一个单词
M-b 向后移动一个单词
M-e 光标前移一个句子
M-a 光标后移一个句子
M-} 光标前移一个段落
M-{ 光标后移一个段落
C-a 移动到行首
C-e 移动到行尾
M-<(M加“小于号”) 移动光标到整个文本的开头
M->(M加“大于号”) 移动光标到整个文本的末尾
2.剪切和粘贴
在Emacs中可以使用“Delete”和“BackSpace”删除光标前后的字符,这和用户之前的习惯一致。
M-d 剪切光标前的单词
C-k 剪切从光标位置到行尾的内容
M-k 剪切从光标位置到句尾的内容
C-y 将缓冲区的内容粘贴到光标所在的位置
C-xu 撤销操作(先操作C-x,接着再单击u)
在Emacs中对单个字符的操作是“删除”,而对词和句的操作是“剪切”,即保存在缓冲区中,以备后面的“粘贴”所用。
3.复制文本
在Emacs中的复制文本包括两步:选择复制区域和粘贴文本。
选择复制区域的方法是:首先在复制起始点(A)按下“C-Space”或“C-@(C-Shift-2)”使它成为一个表示点,再将光标移至复制结束点(B),再按下“M-w”,就可将A与B之间的文本复制到系统的缓冲区中。
最后再使用功能键C-y将其粘贴到指定位置。
4.查找文本
C-s 向前递归查找
C-r 向后递归查找
C-s C-w 开始递归查找,把光标位置的单词作查找字符串
C-s C-y 开始递归查找,把光标位置到行尾之间的文本作查找字符串
5.文档相关
C-x C-f 查找到相关文档,并将其打开
C-x C-i 存入相关文档到当前窗口中
C-x C-s 保存当前文档
C-xs 保存所有的文档
C-x C-v 重新打开文档
C-x C-w 把缓冲区内容写入一个文件
Emacs在编辑时还会为每个文件提供“自动保存(auto save)”的机制,而且自动保存的文件的文件名前后都有一个“#”。
例如,编辑名为“hello.c”的文件,其自动保存的文件的文件名就是“#hello.c#”。
当用户正常地保存了文件后,Emacs就会删除这个自动保存的文件。
当系统发生异常时,这个机制非常有用。
6.窗口相关
在Emacs的编辑时通常会涉及几个窗口,因此,掌握与窗口相关的指令是非常重要的。
C-x0 删除当前窗口
C-x1 使当前窗口满屏,关闭其他窗口
C-xo 切换到另一个窗口
C-x2 把当前窗口分成上下两个窗口
C-x3 把当前窗口分成左右两个窗口
C-x^ 使窗口增高
shink-window 使窗口变矮
C-x} 使窗口增宽
C-x{ 使窗口变窄
C-x> 窗口显示右边的内容
C-x< 窗口显示左边的内容
7.取消指令
有些Emacs命令会运行很久,可以用“C-g”指令使之中断,当用户写错了一个指令想要取消它的执行时,也可以使用它。
8.退出文档
在Emacs中退出文档的功能键为“C-x C-c”。
3. Emacs的C模式
Emacs是一个功能强大的图形化文本编辑器,它还是一个集编译、调试于一体的工作环境,可以使用Emacs来编写C源程序。
1.进入C模式
启动某一文件时,Emacs会判断文件的类型,从而自动选择相应的模式。
进入Emacs的C模式有两种方法:用户可以直接打开一个后缀名为“.c”的文件使Emacs进入到默认的C 模式中,也可以在其他模式中键入命令“M-x c-mode”。
这里的“c-mode”是在底部窗口出现“M-x”提示符后用户自行键入的,当然也可以键入其他模式,如“Shell”等。
在强大的C模式下,用户拥有自动缩进、注释、预处理扩展、自动状态等强大功能。
在C模式下编辑代码时,可以用<Tab>键自动地将当前行的代码产生适当的缩进,使代码结构清晰,也可以指定缩进的规则。
Emacs支持的缩进规则有bsd、cc-mode、ellemtel、gnu、java、k&r、[wiki]linux[/wiki]、python、stroustrup、user、whitesmith, 通过M-x c-set-style 命令指定。
在Emacs中,用“M-”可以产生一条右缩进的注释。
在C模式下是“/*comments*/”的形式注释;在C++模式下是“//comments”形式的注释。
当用户高亮选定某段文本,然后操作“C-c C-c”时,就可以注释该段文字。
在C模式中可以对源代码进行编译,使用命令“M-x compile”或者单击“Tools”下的“compile”即可进行编译。
2.C模式中的调试
在C模式中,还可以对原代码使用GDB进行调试,这时可调用“M-x gdb”命令,把要调试的可执行文件作为参数。
“M-xgdb”命令启动GDB成为Emacs的一个子过程。
Emacs 为这个子过程生成一个新的缓冲区,处理输入的数据。
还可以单击“Tools”下的“Debugger”来使用GDB进行调试,出现系统提示后输入可运行文件以便进行调试即可。
当GDB被调用时最初将看到一个和标准GDB一样的窗口。
在程序的适当地方设置断点后运行程序,源代码窗口将会有标记指向断点位置的代码并高亮显示,GDB窗口将不再显示代码。
用户在Emacs的GDB窗口中可以使用任何GDB中的命令,Emacs把GDB的命令和快捷键都做了绑定。
此外,Emacs还有另外的增强功能。
由于GDB的功能已经非常强大,所以足以应对程序调试中的各项问题了。
在Emacs中的GDB调试过程中,下半部分的窗口会显示出程序的运行情况,这样就大大方便了用户的使用。
4.Emacs的Shell模式
此外,Emacs的强大还在于它可以在内部运行Shell命令。
Emacs里的Shell和普通的Shell 没有区别。
在Emacs中有两种执行Shell 指令的方法: 一种是进入Shell command mode,另一种是进入Shell mode,二者都可以执行Shell 的指令。
在Shell 模式下,用户可以进行任意操作。
但是,在Emacs的Shell环境下不能运行某些需要对控制台的程序,如mc等。