GNU Emacs编辑器
emacs [-nw] [-qQ] [+line[:column]] [-t file] [-u user] [gnu-opts] [files]
emacs [--help] [--version]
emacs是一个传统的功能丰富的全屏幕编辑器,支持普通的字符终端,也支持X Windows终端。emacs提供大量的交互帮助信息与手段。无论何时,只要按下Ctrl-H组合键即可进入帮助机制,显示相应的帮助信息。其中,按下“Ctrl-H t”组合键即可进入emacs自学界面,其他帮助功能详见“联机帮助”一节。
当需要编辑文件时,输入下列emacs命令即可启动基于文本的常规编辑器(其中的“-nw”必须是第一个选项,如果省略,将会进入基于X Windows界面的编辑器),把指定的文件读入缓冲区,在终端窗口中显示文件前部的内容,在底部显示缓冲区(文件)的名字。如果指定的文件不存在,emacs将显示一个空的屏幕,同时在底部显示“New file”信息。“-q”选项表示禁止读取“ ~/.emacs”用户启动文件,确保使用未定制的标准编辑器功能。
$ emacs -nw -q file
在emacs的屏幕窗口中,底部是一个反显的条形模式行(Mode Line),其中展示了当前编辑的是哪一个缓冲区(文件),缓冲区中的内容是否已经修改,当前窗口中的内容在缓冲区的位置,如当前行号和已读数据的百分比等。如果拆分成多个窗口,每个窗口都会存在一个模式行。屏幕底部是一个单行的交互信息区(Echo Area),用于显示各种信息,提请用户确认,以及用户输入命令等。
emacs通常总是处于插入模式。当需要输入数据时,可以使用箭头键等移动光标,在光标位置输入数据即可。也可以使用Delete或退格符等键删除字符。利用撤销功能撤销最近一次或最近若干次的修改,校正编辑错误。使用检索命令正向或反向检索、增量或非增量检索,详见“编辑命令”一节的说明。
当需要退出emacs编辑器时,可以按下Ctrl-X与Ctrl-C组合键。如果编辑的文件需要保存,emacs将会在交互信息区提示用户是否需要保存文件。此时可以输入y或n表示保存或放弃,或者直接按下Ctrl-G组合键返回编辑界面。在编辑期间,也可以按下Ctrl-X与Ctrl-S组合键,随时保存已编辑的文件。如果当前的缓冲区没有任何改动,emacs将会在交互信息区给出“No changes need to be saved”的提示信息。
emacs提供大量的编辑命令,这些命令大部分都捆绑到一定的键序列,其中包括C-x(即Ctrl-X,简写作^X)、Meta-x和Meta-C-x等组合键(x可以是任何字母)。在不提供Meta键的终端上,可以使用ESC键或Alt键替代。例如,当需要按下Meta-x键时,可以先按ESC键,释放后再按x键,或者同时按下Alt与x键。至于Meta-C-x键,可以先按ESC键,释放后再按下Ctrl-X组合键。
如果没有绑定的键序列可用,可以按下Meta-x键,然后在交互信息区输入emacs命令。如果命令太长,可用空格或制表键补缺。也可以使用“?”命令查询可用的命令列表。
+line[:column] 直接跳转到指定的行或行与列。从指定的文本行开始编辑文件。注意,加号与行号之间没有空格,冒号前后也没有空格。这个选项仅适用于文本文件。
-q, --no-init-file 禁止加载初始化文件。
-Q, --quick 等价于指定了“-q”等选项。
-t file, --terminal file 使用指定的文件取代终端作为标准输入与标准输出。如果存在,这个选项必须是命令行的第一个选项。
-u user, --user user 加载用户的初始化文件~/.emacs。
--debug-init 在处理用户启动文件~/.emacs期间启用Emacs Lisp调试器。这个选项主要用于调试用户启动文件中的问题。
--file file, --find-file file, --visit file 编辑指定的文件。这与在命令行上直接指定文件参数一样。
--multibyte, --no-unibyte 启用多字节模式(默认)。
-nl, --no-shared-memory 禁止使用共享内存。
-nw, --no-window-system 禁止使用X Windows界面,从而禁止使用鼠标和菜单。作为一个普通的图形界面编辑器,直接使用按键方式编辑文件。
--unibyte, --no-multibyte 启用单字节模式。
文件操作
^X^F 提示用户输入文件名,读取其中的数据,置于一个新的缓冲区中,使用文件的名字(不包括扩展名)命名缓冲区。
^X^V 提示用户输入文件名,读取其中的数据,置于当前的缓冲区中(覆盖当前缓冲区中的数据)。
^X 4 ^F 提示用户输入文件名,读取其中的数据,置于一个新的缓冲区中,使用文件的名字(不包括扩展名)命名缓冲区。针对新的缓冲区,创建一个新的窗口,然后进入该窗口。这个命令将会把原先的窗口分成上下两半(假定原先只有一个窗口)。
^X^S 把当前缓冲区中的数据写入原先的文件。
^X S 提示用户确认是否保存每个修改过的缓冲区。
Meta-x set-visited-file-name 提示用户输入文件名,使用该文件名命名当前的缓冲区。
^X^W 提示用户输入文件名,使用该文件名命名当前的缓冲区,然后把当前缓冲区中的数据写入该文件或另行指定的其他文件中。
Meta-~ 清除当前缓冲区的修改标志。
光标定位
^F, ← 光标左移一个字符位置。
^B, → 光标右移一个字符位置。
^P,↑ 光标移至上一行的同一字符位置。
^N,↓ 光标移至下一行的同一字符位置。
Meta-f 光标右移一个字(由字母和数字组成的字符串),移至当前或下一个字的字尾。
Meta-b 光标左移一个字(由字母和数字组成的字符串),移至当前或前一个字的字首。
^A 光标移至当前行的行首。
^E 光标移至当前行的行尾。
Meta-r 光标移至终端窗口中间一行的行首。
^V 终端窗口内容前(下)滚一屏。
Meta-v 终端窗口内容后(上)滚一屏。
Meta-a 把光标移至当前句子的句首。
Meta-e 把光标移至当前句子的句尾。
Meta-{ 把光标移至当前段落的起始位置。
Meta-} 把光标移至当前段落的结尾位置。
Meta-< 把光标移至缓冲区的起始位置。
Meta-> 把光标移至缓冲区的结尾位置。
^L 清除并刷新终端窗口,把当前行滚动至终端窗口的中间行。
联机帮助
^H a 提示用户输入字符串,显示包含字符串的命令列表。
^H b 列出当前有效的键序列与emacs命令绑定关系列表。
^H c keyseq 显示绑定到指定键序列的emacs命令的名字。
^H k keyseq 显示绑定到指定键序列的emacs命令文档的名字。
^H i 从顶级菜单开始运行info命令(使用q)退出。
^H l 显示最近输入的100个字符。
^H n 显示emacs新闻文件。
^H t 进入emacs自学界面。
^H w 提示用户输入命令的名字,显示绑定到指定命令的键序列(如果已绑定)。
删除命令
退格键 删除光标位置之前的字符。
^D,Delete 删除光标位置的字符。
Meta-d 删除从光标位置开始至当前字字尾间的字符串。
Meta-退格键 删除从光标位置开始至前一个字字首间的字符串。
Meta-k 删除从光标位置开始直至句尾间的任何字符。
^K 删除从光标位置开始直至行尾间(不包括换行符)的任何数据。
^U 1 ^K 删除从光标位置开始直至行尾(包括换行符)的任何数据。
^U 0 ^K 删除从光标位置左边开始直至行首间的任何数据。
Meta-z char 删除从光标位置开始直至第一个指定字符之间的任何数据。
Meta-w 把当前区域中的数据复制到删除环形缓冲区(但不会从缓冲区中删除区域内的数据)。
^W 删除当前缓冲区内已设区域中的数据。
^Y 召回最近删除的数据,写到当前缓冲区的光标位置。
Meta-y 清除刚召回的数据,旋转删除环形缓冲区,召回下一个数据。注意,这个命令只能在Ctrl-Y之后使用。
^_ 撤销最近一次的改动。
^_^_ 撤销最近两次的改动。
^Q 插入特殊字符,如控制字符或3个八进制数值编码表示的字符等。
窗口操作命令
^X b 提示用户输入缓冲区的名字,在当前窗口中切换到默认或指定的缓冲区。
^X 2 把当前的窗口纵向一分为二。
^X 3 把当前的窗口横向一分为二。
^X o 选择其他窗口。
Meta-C-v 滚动其他窗口。
^X 4b 提示用户输入缓冲区的名字,在其他窗口选择该缓冲区。
^X 4f 提示用户输入文件的名字,在其他窗口选择该文件。
^X 0 关闭当前的窗口。
^X 1 保留当前的窗口,关闭其他所有的窗口。
^X shrink-window 使当前的窗口缩短一行。
^X ^ 使当前的窗口增高一行。
^X { 使当前的窗口缩进一列。
^X } 使当前的窗口扩展一列。
缓冲区操作命令
^X^S 把当前缓冲区中的数据写入相关的文件。
^X^F 提示用户输入文件名,打开该文件。
^X b 提示用户输入缓冲区的名字,然后选中相应的缓冲区。如果缓冲区不存在,则创建新的缓冲区。
^X 4b 提示用户输入缓冲区的名字,在另外一个窗口显示缓冲区中的数据。
^X^B 创建名为“Buffer List”的缓冲区,在另外一个窗口中显示其内容。现有的窗口仍然存在且仍为当前窗口,但新的窗口可能会叠加在上方。在“Buffer List”缓冲区中,显示每个缓冲区中的名字、大小、编辑模式或最初的文件名。
Meta-x rename-buffer 提示用户输入一个新的缓冲区名,把新的缓冲区名赋予当前缓冲区。
Meta-x append-to-buffer 提示用户输入缓冲区的名字,把当前区域中的数据附加到指定缓冲区的后面。
Meta-x prepend-to-buffer 提示用户输入缓冲区的名字,把当前区域中的数据插入到指定缓冲区的前面。
Meta-x copy-to-buffer 提示用户输入缓冲区的名字,删除指定缓冲区中的数据,把当前区域中的数据复制到指定的缓冲区。
Meta-x insert-buffer 提示用户输入缓冲区的名字,把其中的全部数据插入到当前缓冲区的光标位置。
^X k 提示用户输入缓冲区的名字,删除指定的缓冲区。
Meta-x kill-some-buffers 遍历缓冲区表,从而提供删除每个缓冲区的机会。
行操作命令
Meta-x occur 提示用户输入正则表达式,把包含匹配正则表达式的每一行写入名为Occur的缓冲 区中。
Meta-x delete-matching-lines 提示用户输入正则表达式,从光标的当前位置开始,正向删除匹配正则表达式的每 一行。
Meta-x delete-non-matching-lines 提示用户输入正则表达式,从光标的当前位置开始,正向删除不匹配正则表达式的每一行。
检索命令
^S 提示用户开始执行增量检索,逐步输入字符,正向检索匹配的字符串。
^S CR 提示用户输入完整的字符串,按下Enter键之后开始正向检索。
^R 提示用户开始执行增量检索,逐步输入字符,反向检索匹配的字符串。
^R CR 提示用户输入完整的字符串,按下Enter键之后开始反向检索。
M-C-s 提示用户开始执行增量检索,逐步输入正则表达式,正向检索匹配的字符串。
M-C-s CR 提示用户输入完整的正则表达式,按下Enter键之后开始正向检索。
Meta-x isearch-backward-regexp 提示用户开始执行增量检索,逐步输入正则表达式,反向检索匹配的字符串。
Meta-x isearch-backward-regexp CR 提示用户输入完整的正则表达式,按下Enter键之后开始反向检索。
替换与响应命令
Meta-x replace-string 分两次提示用户输入两个字符串,从标记开始正向检索,使用第二个字符串替换发现的第一个字符串实例。在命令执行的起始位置设置标记。
Meta-%, Meta-x query-replace 同上,但每个替换都需要事先提请用户确认。
Meta-x query-regexp 分两次提示用户分别输入一个正则表达式与字符串,从标记开始正向检索,使用字符串替换匹配正则表达式的字符串实例。在命令执行的起始位置设置标记。
Meta-x query-replace-regexp 同上,但每一个替换都需要事先提请用户确认。
CR 退出整个检索与替换操作。
退格键 认可当前的替换,继续下一个替换确认。
Delete 禁止执行当前的替换,继续下一个替换确认。
, 认可当前的替换,显示替换结果,提示用户输入另外一个命令。
. 认可当前的替换,但检索与替换到此为止。
! 认可当前的替换,其余的所有替换无须确认自动替换即可。
区域操作命令
^@ 在当前的光标位置设置标记,从而设定区域的边界。
Meta-W 把区域中的数据复制到删除环形缓冲区。
^W 删除区域中的数据。
Meta-x print-region 复制区域中的数据,提交给打印服务打印。
Meta-x append-to-buffer 提示用户输入缓冲区的名字,把区域中的数据附加到该缓冲区。
^X^U 把当前区域中的数据转换成相应的大写字母。
^X^L 把当前区域中的数据转换成相应的小写字母。
字母大小写转换命令
Meta-l 把光标右边的单字或光标位置开始的当前单字转换成小写字母。
Meta-u 把光标右边的单字或光标位置开始的当前单字转换成大写字母。
^X^L 把区域中的数据转换成相应的小写字母。
^X^U 把区域中的数据转换成相应的大写字母。
运行Shell命令
Meta-! 提示用户输入Shell命令,按下Enter键后立即执行,显示输出结果。
^U Meta-! 提示用户输入Shell命令,按下Enter键后立即执行,把命令的输出结果插入当前的光标位置。
Meta-| 提示用户输入Shell命令,把指定区域中的数据作为命令的输入,执行命令并显示其输出结果。
^U Meta-| 提示用户输入Shell命令,把指定区域中的数据作为命令的输入,执行命令,删除区域中的数据,把命令的输出结果插入区域中。
1. 利用emacs编辑器,在普通的终端窗口中编辑文件。
$ emacs -nw mycode.c
索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z