版权声明:对于本博客所有原创文章,允许个人、教育和非商业目的使用,但务必保证文章的完整性且不作任何修改地以超链接形式注明原始作者、出处及本声明。
博客地址:http://blog.csdn.net/shuxiao9058
原始作者:季亚
第十二章程序员的Emacs
表12-1:基本缩进命令速查表
键盘操作 |
命令名称 |
动作 |
C-M-\ |
indent-region |
对光标和文本块标记之间的每一行进行缩进 |
M-m |
back-to-indentation |
把光标移到当前行的第一个非空白字符上 |
M-^ |
delete-indentation |
把当前行合并到上一行去 |
表12-2:C模式高级移动命令速查表
键盘操作 |
命令名称 |
动作 |
M-a |
c-beginning-of-statement |
移动到当前语句的开头 |
M-e |
c-end-of-statement |
移动到当前语句的末尾 |
M-q |
c-fill-paragraph |
如果光标在注释文本中间,则进行段落重排,保留缩进和前导字符 |
C-M-a |
beginning-of-defun |
移动到光标所在函数的开头 |
C-M-e |
end-of-defun |
移动到光标所在函数的末尾 |
C-M-h |
c-mark-function |
把光标放到函数的开头,把文本块标记放到函数的末尾——即把函数整个选取为一个文本块 |
C-c C-q |
c-indent-defun |
按缩进样式对整个函数进行缩进 |
C-c C-u |
c-up-conditional |
移动到当前预处理器条件的开始位置 |
C-c C-p |
c-backward-conditional |
移动到上一个预处理器条件 |
C-c C-n |
c-forward-conditional |
移动到下一个预处理器条件 |
表12-3:C模式缩样式速查表
缩进样式 |
说明 |
bsd |
BSD系列的UNIS版本使用的编程风格 |
cc-mode |
默认的编程风格;其他样式都是从它推导出来的 |
ellemtel |
瑞典Ellemtel电讯系统实验室的C++文档里使用的编程风格 |
gnu |
Emacs自身和其他GNU程序所使用的C语言书写风格 |
java |
在编写Java代码时使用的风格(Java模式的默认值) |
k&r |
Kernighan和Ritchie合著的《The C Programming Language》一书中使用的编程风格,这本书是C语言的开山之作 |
linux |
部分Linux内核中C代码所使用的一种风格 |
python |
Python扩展中使用的风格 |
stroustrup |
Bjarne Stroustrup所著的《The C++ Programming Language》一书中使用的编程风格,这本书是C++语言的标准参考书 |
user |
通过定制.emacs文件或自定义(参见第10章)。如果你设置所有其他了它们,所有其他样式将继承自这些自定义 |
whitesmith |
Whitesmith公司在他们的C和C++编译器软件的文档里使用的编程风格 |
表12-4:S-表达式处理命令速查表
键盘操作 |
命令名称 |
动作 |
C-M-b |
backward-sexp |
移动到上一个S-表达式 |
C-M-f |
forward-sexp |
移动到下一个S-表达式 |
C-M-t |
transpose-sexps |
交换光标前后的两个S-表达式的位置 |
C-M-@ |
mark-sexp |
把文本块标记设置在当前S-表达式的末尾,把光标设置在当前S-表达式的开头 |
C-M-k |
kill-sexp |
删除光标后面的那个S-表达式 |
(无) |
backward-kill-sexp |
删除光标前面的那个S-表达式 |
表12-5:列表处理命令速查表
键盘操作 |
命令名称 |
动作 |
C-M-n |
forward-list |
移动到上一个列表 |
C-M-p |
backward-list |
移动到下一个列表 |
C-M-d |
down-list |
向前移动,进入下一级括号层次 |
(无) |
up-list |
向前移动,退出当前的括号层次 |
C-M-u |
backward-up-list |
向后移动,退出当前的括号层次 |
表12-6:以函数定义(defun)为单位进行移动的命令速查表
键盘操作 |
命令名称 |
动作 |
C-M-a |
beginning-of-defun |
移动到当前函数的开头 |
C-M-e |
end-of-defun |
移动到当前函数的结尾 |
C-M-h |
mark-defun |
把光标放到函数的开头,把文本块标记放到函数的结尾 |
表12-7:FORTRAN模式中的移动命令速查表
键盘操作 |
命令名称 |
动作 |
C-c C-n |
fortran-next-statement |
向前移动一个语句 |
C-c C-p |
fortran-previous-statement |
向前向移动一个语句 |
ESC C-a |
beginning-of-fortran-subprogram |
移动到当前子程序的开头 |
ESC C-e |
end-of-fortran-subprogram |
移动到当前子程序的结尾 |
ESC C-h |
mark-fortran-subprogram |
把光标放到子程序的开头,把文本块标记放到子程序的结尾 |
表12-8:FORTRAN模式中的Emacs变量
变量 |
默认值 |
说明 |
fortran-minimum-statement-indent |
6 |
开始输入语句之前需要保留的缩进量(例如:缩进量为6时语句将从7列开始输入) |
fortran-do-indent |
3 |
do语句块里的语句还需要增加的缩进量 |
fortran-if-indent |
3 |
if语句块里的语句还需要增加的缩进量 |
fortran-continuation-char |
$ |
续行时放在第6列里的续行标记字符 |
fortran-continuation-indent |
5 |
语句续行时的缩进量(比如从第6列开始再缩进5个字符的位置) |
fortran-comment-line-column |
6 |
占据一整行的注释所使用的缩进量;“ESC;”命令使用的就是这个值 |
fortran-comment-indent-style |
‘fixed |
这个变量的值可以取“nil”、“’fixed”或“’relative(相对值)”,注意后两个值的前面带有单引号;请参见下面的用法示例 |
comment-start |
nil |
与程序代码同在一行上的注释的前导字符;请参见下面的用法示例。如果这个变量取值为“nil” |
fortran-line-unmber-indent |
1 |
行号的最大缩进量,用来保证行号不会延伸到第5列(续行标记列)上。请参考后面对语句自动编号功能的讨论 |
fortran-comment-region |
“c$$$” |
由fortran-comment-region(“C-c;”)命令插入到每一行前面去的字符串 |
表12-9:FORTRAN模式下的一些缩略词汇
缩略词汇 |
关键字 |
;c |
continue |
;dp |
double precision |
;dw |
do while |
;f |
format |
;fu |
function |
;g |
goto |
;in |
integer |
;p |
|
;rt |
ENTER |
;su |
subroutine |
表12-10:编译模式命令速查表
键盘操作 |
命令名称 |
动作 |
C-x ‘ |
next-error |
移动到下一条出错信息并访问与之对应的源代码 |
M-n |
compilation-next-error |
移动到下一条出错信息 |
M-p |
compilation-previous-error |
移动到上一条出错信息 |
C-c C-c |
compilation-goto-error |
访问对应于当前出错信息的源代码 |
SPACE |
scroll-down |
下卷屏幕显示内容 |
DEL |
scroll-up |
上卷屏幕显示内容 |
第三版新增内容
表12-11:JDEEMakefile条目
Makefile条目 |
示例 |
说明 |
prefix |
/usr/local |
任何软件的“shared”和“info”顶级目录 |
datadir |
$(prefix)/share |
Emacs主目录所在的地方 |
locallisppath |
$(datadir)/emacs/site-lisp |
所有本地LISP文件应该放置的地方 |
ELIBDIR |
$(locallisppath)/elib |
ELIB LISP文件将放在这个目录 |
EMACS |
/usr/bin/emacs |
这个命令用来启动Emacs。可以是绝对路径或“emacs”能检测到你当前系统所安装的Emacs版本 |
表12-12:JDEE的环境变量
JDEE变量名 |
示例值 |
jde-global-classpath |
/usr/local/j2se:. |
jde-jdk-registry |
Version = 1.4.2 Path = /usr/local/j2se |
表12-13:生成代码菜单选项
键盘操作 |
菜单选项(M-x 命令) |
动作 |
C-c C-v C-l(小写的“L”) |
Println Wizard(jde-gen-println) |
提示插入一个完整的System.out.println()方法 |
C-c C-v C-z |
Import Class(jde-import-find-and-import) |
提示输入(简单)类名,以自动导入,并在文件头添加适当的导入说明 |
C-c C-v i |
Implement Interface(jde-wiz-implement-interface) |
提示输入要实现的接口的名称。添加任何缺少的import语句(包括依赖导入,如方法参数的导入)。为每个接口中的方法提供注释框架 |
表12-14:JDEE调试控制
键盘操作 |
菜单选项 |
JDB命令 |
C-c C-a C-s |
Step Into |
step |
C-c C-a C-n |
Step Over |
next |
C-c C-a C-c |
Continue |
cont |
C-c C-a C-b |
Toggle Breakpoint |
stop in/stop at/clear |
C-c C-a C-p |
Display Expression |
|
C-c C-a C-d |
Display Object |
dump |
第十三章用LISP语言对Emacs做进一步开发
表13-1:交互式函数的参数类型代码
参数类型代码 |
参数类型 |
b |
一个现有编辑缓冲区的名字 |
e |
事件(鼠标动作或功能键动作) |
f |
一个现有文件的名字 |
n |
数字(整数) |
s |
字符串 |
这些代码还有相应的大写变体:
参数类型代码 |
参数类型 |
B |
一个可能不存在的编辑缓冲区的名字 |
F |
一个可能不存在的文件的名字 |
N |
如果命令在调用时带有一个前缀参数,按前缀参数指示的情况办理;否则就是数字 |
S |
符号 |
表13-2:LISP语言的基础函数
算术运算 |
+、 -、 *、 /(加、减、乘、除) |
% (求余数) |
|
1+ (递增) |
|
1- (递减) |
|
max(最大值)、 min(最小值) |
|
比较运算 |
>、 <、 >=、 <=(大于、小于、不小于、不大于) |
/= (不等于) |
|
= (等于,用于数字和字符) |
|
equal(等于,用于字符串和其他复杂的数据对象) |
|
逻辑运算 |
and(与)、or(或)、not(非) |
表13-3:ANSI方向键输出的字符代码
箭头键 |
字符代码 |
上 |
ESC O A |
下 |
ESC O B |
右 |
ESC O C |
左 |
ESC O D |
表13-4:与编辑缓冲区和文本有关的函数
函数名称 |
返回值或执行动作 |
point |
光标的字符位置 |
point-min |
最小字符位置(通常是1) |
bolp |
光标是否位于行首(取值为“t”或“nil”) |
insert |
把任意个数的参数(字符串或字符)插入到编辑缓冲区光标位置之后 |
number-to-string |
把一个数值参数转换为一个字符串 |
表13-5:正则表达式基本操作符
|
表13-6:正则表达式操作符速查表
操作符 |
作用 |
. |
匹配任意一个字符 |
* |
匹配其前面的字符或字符组出现零次或更多次的情况 |
+ |
匹配其前面的字符或字符组出现一次或更多次的情况 |
? |
匹配其前面的字符或字符组出现零次或一多次的情况 |
[...] |
字符的集合,参见下面的说明 |
\\( |
开始一个字符组 |
\\) |
结束一个字符组 |
\\| |
匹配“\\|”前、后的子表达式 |
^ |
如果出现在正则表达式的开始,匹配文本行首或字符串的开始 |
$ |
如果出现在正则表达式的末尾,匹配文本行首或字符串的末尾 |
\n |
在正则表达式里匹配换行符LINEFEED |
\t |
在正则表达式里匹配制表符TAB |
\\< |
匹配单词的开始 |
\\> |
匹配单词的结尾 |
下面的操作符出现在字符集里时的含义:
操作符 |
作用 |
^ |
如果出现在字符集的开始,则该字符集将被用做不匹配字符集 |
- (dash) |
用来设定字符范围 |
下面的操作符出现在regexp替换字符串里时的含义:
操作符 |
作用 |
\\n |
替换第N个“\\(”和“\\)”之间的部分匹配,从左归组操作符“\\(”向右编号,编号从1开始 |
第十四章 Emacs编辑器和X窗口系统
表14-1:Emacs的窗格操作命令速查表
键盘操作 |
命令名称 |
动作 |
C-x 5 f |
find-file-other-frame |
访问另一窗格里的某个文件 |
C-x 5 d |
dired-other-frame |
在另一个窗格里运行Dired模式 |
C-x 5 0 |
delete-frame |
删除当前窗格 |
C-c 5 b |
switch-to-buffer-other-frame |
切换到另一个窗格 |
第十五章 Emacs下的版本控制
表15-1:VC命令速查表
键盘操作 |
命令名称 |
动作 |
C-x v v |
vc-next-action |
前进到下一个合乎逻辑的版本控制状态 |
C-x v d |
vc-directory |
列出某个子目录下所有的已注册文件 |
C-x v = |
vc-diff |
生成一份版本差异报告 |
C-x v u |
vc-revert-buffer |
丢弃上次修订版之后的一切修改 |
C-x v ~ |
vc-version-other-window |
在另外一个窗口打开指定的修订版 |
C-x v l |
vc-print-log |
显示某个文件的修改注释和修改记录 |
C-x v i |
vc-register |
把文件注册到版本控制系统 |
C-x v h |
vc-insert-headers |
给文件加上供版本控制系统使用的标题块 |
C-x v r |
vc-retrieve-snapshot |
签出一个已命名的项目快照 |
C-x v s |
vc-create-snapshot |
创建一个项目快照并给它起个名字 |
C-x v c |
vc-cancel-version |
丢弃一个已经保存起来的修订版 |
C-x v a |
vc-update-change-log |
刷新一个GNU格式的ChangLog文件 |
第三版新增内容
表15-2:Ediff命令速查表
键盘操作 |
命令名称 |
动作 |
Space或n |
ediff-next-difference |
移动到该文件下一个修改过的地方 |
Del或p |
ediff-previous-difference |
移动到该文件上一个修改过的地方 |
j |
ediff-jump-to-difference |
转到前缀数字参数所指定差异的地方 |
v或C-v |
ediff-scroll-vertically |
两个编辑缓冲区均向前移动一页 |
V或M-v |
ediff-scroll-vertically |
两个编辑缓冲区均向后移动一页 |
< |
ediff-scroll-horizontally |
将每个编辑缓冲区向左滚动 |
> |
ediff-scroll-horizontally |
将每个编辑缓冲区向右滚动 |
| (竖线) |
ediff-toggle-split |
切换查看缓冲区方式,是只查看当前文件,还是同时查看这两个编辑缓冲区 |
m |
ediff-toggle-wide-display |
在正常窗口与最宽窗口之间切换 |
a |
ediff-copy-A-to-B |
将编辑缓冲区A中与编辑缓冲区B不同的内容信息复制到编辑缓冲缓冲区B中 |
b |
ediff-copy-B-to-A |
将编辑缓冲区B中与编辑缓冲区A不同的内容信息复制到编辑缓冲缓冲区A中 |
r a或r b |
ediff-restore-diff |
恢复编辑缓冲区A(或B)从另一缓冲区复制之前的状态 |
A或B |
ediff-toggle-read-only |
对指定编辑缓冲区切换到(或退出)只读模式 |
g a或g b |
ediff-jump-to-difference-at-point |
在最近(当前光标位置)差异的地方与指定的编辑缓冲区进行比较,并将光标移动到有差异的地方 |
C-l |
ediff-recenter |
恢复比较显示,使所有编辑缓冲区被比较突出的地方是高亮的;如果你做别的东西,并要回去之前的光标位置的时候比较有用 |
! |
ediff-update-diffs |
重新计算并显示突出显示的区域;当手动且对编辑缓冲区有很大的修改时比较有用. |
w a或w b |
ediff-save-buffer |
将指定的编辑缓冲区保存起来 |
E |
ediff-documentation |
打开Ediff手册 |
z |
ediff-suspend |
关闭Ediff的控制窗口,但当前会话还在活动,稍后你还可以恢复它 |
q |
ediff-quit |
关闭Ediff的控制窗口并结束当前比较的会话 |
第十六章在线帮助
表16-1:用来查找详细资料的帮助命令
键盘操作 |
命令名称 |
回答的问题 |
C-h c |
describe-key-briefly |
这个按键组合将运行哪个命令 |
C-h k |
describe-key |
这个按键组合将运行哪个命令?这个命令的作用是什么 |
C-h l |
view-lossage |
最近输入的100个字符是什么 |
C-h w |
where-is |
这个命令的按键绑定是什么 |
C-h f |
describe-function |
这个函数的作用是什么 |
C-h v |
describe-variable |
这个变量的含义是什么?它有哪些可取值 |
C-h m |
describe-mode |
查看当前编辑缓冲区所在编辑模式的有关资料 |
C-h b |
describe-bindings |
这个缓冲区都有哪些按键绑定 |
C-h s |
describe-syntax |
这个编辑缓冲区使用的是哪个语法表 |
表16-2:apropos命令
键盘操作 |
命令名称 |
回答的问题 |
C-h a |
command-apropos |
这个概念都涉及到哪些命令 |
(无) |
apropos |
这个概念都涉及到哪些函数和变量 |
(无) |
super-apropos |
哪些函数和变量的文档里提到了这个概念 |
表16-3:用来查找一般性资料的帮助命令
键盘操作 |
命令名称 |
动作 |
C-h t |
help-with-tutorial |
运行Emacs教程 |
C-h i |
info |
启动文档阅读器Info程序 |
C-h C-f |
Info-goto-emacs-command-node |
启动文档阅读器Info程序,并前进到指定的结点;这个帮助命令的参数是一个命令名 |
C-h C-k |
Info-goto-emacs-key-command-node |
启动文档阅读器Info程序,并前进到指定的结点;这个帮助命令的参数是对应于某个命令的按键组合 |
C-h n |
view-emacs-news |
查看关于Emacs新增和改进功能的信息 |
C-h F |
view-emacs-FAQ |
查看Emacs的常见问题答疑文件 |
C-h p |
finder-by-keyword |
沿着这个命令弹出的菜单可以查到关于安装在本系统上的Emacs LISP程序包资料 |
C-h c |
describe-copying |
阅读Emacs的“通用公共许可证”(General Public License) |
C-h C-d |
describe-distribution |
阅读从自由软件基金会订购的Emacs信息 |
C-h C-p |
describe-project |
查阅关于GNU软件开发项目的信息 |
C-h C-w |
describe-no-warranty |
查阅Emacs的免责条款 |
备注:本文大部分内容摘自学习GNU Emacs(第二版),文中紫色部分摘自Learning GNU Emacs, 3rd Edition,并由本人翻译整理而得。