原文地址:http://jianlee.ylinux.org/Computer/Emacs/emacs%E5%BF%AB%E9%80%9F%E5%8F%82%E8%80%83.html
Emacs快速参考
by Jian Lee
1 与文件操作有关的命令
C-x C-f 查找文件并且在新缓冲区中打开 C-x C-v 读入另一个文件替换掉用C-x C-f打开的文件 C-x i 把文件插入到光标的当前位置 C-x C-s 保存文件 C-x C-w 把缓冲区内容写入一个文件 C-x C-c 退出Emacs
2 与光标移动操作有关的命令
C-f 光标前移一个字符(右) C-b 光标后移一个字符(左) C-p 光标前移一行(上) C-n 光标后移一行(下) M-f 前移一个单词 M-b 后移一个单词 C-a 移动到行首 C-e 移动到行尾 M-e 前移一个句子 M-a 后移一个句子 M-} 前移一个段落 M-{ 后移一个段落 C-v 屏幕上卷一屏 M-v 屏幕下卷一屏 C-x ] 前移一页 C-x [ 后移一页 M-< 前移到文件头 M->; 后移到文件尾 C-l 重新绘制屏幕,当前行放在画面中心 M-n 或者 C-u n 重复执行n次后续命令 按下M-x后在辅助输入区中输入"goto-line"跳到指定的行,输入"goto-char"跳到指定的字符
3 删除操作有关的命令
C-d 删除光标位置上的字符 DEL 删除光标前面的字符 M-d 删除光标后面的单词 M-DEL 删除光标前面的单词 C-k 从光标位置删除到行尾 M-k 删除光标后面的句子 C-x DEL 删除光标前面的句子 C-y 恢复被删除的文本或者粘贴最近删除或复制的文本 C-w 删除文件块 C-u 0 C-k 删除从光标位置到行首 按下M-x后在辅助输入区中输入"kill-paragraph"删除光标后面的段落,按下"backward-kill-paragraph"删除光标前面的段落
4 与文本块操作有关的命令
C-@ 标记文本块的开始(或结束)位置 C-x C-x 互换插入点和文本标记的位置 C-w 或 SHIFT-DEL 删除文本块 M-w 复制文本块 M-h 标记段落 C-x C-p 标记页面 C-x h 标记整个缓冲区
5 与位置交换操作有关的命令
C-t 交换两个字符的位置 M-t 交换两个单词的位置 C-x C-t 交换两个文本行的位置 按下M-x后在辅助输入区中输入"transpose-sentences"交换两个句子的位置,按下"transpose-paragraph"交换两个段落的位置
6 与改变字母大小写操作有关的命令
M-c 单词首字母改为大写 M-u 单词的字母全部改为大写 M-l 单词的字母全部改为小写
7 与查找操作相关的命令
C-s 向前递增查找 C-r 向后递增查找 C-s C-w 开始递增查找,把光标位置的单词做查找字符串 C-s C-y 开始递增查找,把光标位置到行尾之间的文本做查找字符串 C-s M-y 开始递增查找,将clipboard的内容作为查找字符串 C-s return searchstring return 向前开始非递增查找操作 C-r return searchstring return 向后开始非递增查找操作 C-s return C-w 向前开始单词查找(不受换行符、空格、标点符号影响) C-r return C-w 向后开始单词查找(不受换行符、空格、标点符号影响)
8 与使用编辑缓冲区和窗口有关的命令
C-x b 如果输入一个新的文件名则新建一个文件并且编辑,否则打开该文件 C-x s 保存全部缓冲区 C-x k 删除缓冲区 M-x rename-buffer 重命名当前缓冲区 C-x C-q 把当前编辑缓冲区设置为只读属性 C-x 0 删除当前所在的窗口 C-x 1 当前缓冲区满屏显示 C-x 2 创建上下排列的窗口 C-x 3 创建左右排列的窗口 C-x o 在窗口之间移动 C-x ^ grow window taller C-x { shrink window narrower C-x } grow window wider
EMACS常用模式
C和C++模式
=== 指定为C++模式的方法 ===
一般根据扩展名自动设定,不用指定,不过有时候若希望.h文件是C++模式的(缺省是C模式),在文件第一行(或其末尾)上加入
// -- C++ --
=== 语法高亮 ===
不是C模式专有,M-x global-font-lock-mode RET 或在.emacs中加入(global-font-lock-mode t)。
=== 子模式 ===
auto-state 输入时自动缩进,自动换行 hungry-state Backspace时,自动删除尽可能多的空白和空行 C-c C-t 同时转换(开/关)auto-state和hungry-state子模式 C-c C-a 转换 auto-state 子模式 C-c C-d 转换 hungry-state 子模式
=== 编辑命令 ===
C-c . 设置缩进风格(按TAB键可列出可用的风格,缺省的为gnu,其缩进为2个字符;linux为8个;k&r为5个,java为4个) TAB 重新缩进当前行 M-/ 自动补齐(缓冲区中能找得到的串) M-; 行尾加入注释 C-c C-e 扩展宏 C-c C-c 注释掉整个区域 C-u C-c C-c 取消注释 C-c C-\ 将区域中的每一行结尾都加入一个'\'字符 C-M \ 自动缩进所选区域
=== 编译和调试 ===
M-x compile RET 编译 M-x gdb RET 调试 C-x ` (出错信息中)下一个错误,一个窗口显示错误信息,另一个显示源码的出错位置 C-c C-c 转到出错位置 启动gdb调试器后,光标在源码文件缓冲区中时: C-x SPC 在当前行设置断点 C-x C-a C-s step C-x C-a C-n next C-x C-a C-t tbreak C-x C-a C-r continue
Dired模式
常用命令:
m : mark u : unmark d : mark delete D : 立即删除 x : 执行删除 g : refresh C : copy R : move + : 创建目录 Hideshow minor mode
在编程时可以隐藏函数的实现。M-x hs-minor-mode
(setq hs-minor-mode-prefix [(contrl o)]) 可以改变复杂的命令前缀. 用法: `C-c @ C-h' : Hide the current block (`hs-hide-block'). `C-c @ C-s' : Show the current block (`hs-show-block'). `C-c @ C-c' : Either hide or show the current block (`hs-toggle-hiding') `C-c @ C-M-h' : Hide all top-level blocks (`hs-hide-all'). `C-c @ C-M-s' : Show everything in the buffer (`hs-show-all').
十六进制模式
查看文本的十六进制编码 M-x hexl-mode C-c C-c 退出十六进制模式
ECB快捷键
C-c . g d 目录列表窗口 C-c . g s 源码窗口 C-c . g m 方法和变量窗口 C-c . g h 历史窗口 C-c . g l 最后选择过的编辑窗口 C-c . g 1 编辑窗口1 C-c . g n 编辑窗口n C-c . l c 选择版面 C-c . l r 重画版面 C-c . l t 拴牢版面(锁定版面) C-c . l w 拴牢可见的ecb窗口 C-c . \ 拴牢编绎窗口
cscope 使用
pluskid 的文章
简介
对于浏览源代码来说,在 Emacs 里面也有很多工具可用,比如自带的 etags 就不错,不过功能不如 Cscope 强大。 Cscope 并不像 etags 那 样属于 Emacs ,它是一个独立的程序。它是一个具有完全 Unix 血统的 程序,用于帮助开发人员浏览源代码。它最初(那还是 PDP-11 的时代) 是由 Bell 实验室开发,并且多年以来一直是 AT&T Unix 商业发行版的 一部分。它已经被用于管理超过两千万行代码的工程。在2000年4月,多 亏了 Santa Cruz Operation, Inc. (SCO) , Cscope 的源代码在 BSD license 下开放了源代码。
Cscope 的发行包里面有个 xcscope.el 能很好地用于 (X)Emacs 。它处 于源代码包的 contrib/xcscope 目录下。该目录下面还有一个名为 cscope-indexer 的脚本文件,用于处理源代码并不是在一个文件夹下面 的情况。
安装和配置
首先到 Cscope 的主页 上去下载最新的源代码包,编译安装。要在 Emacs 里面使用,首先必须把 xcscope.el 拷贝到 load-path 里面包含 的目录里面。并在 ~/.emacs 里面加上 (require 'xcscope) 就可以 了,或者,如果你希望在打开 c 或者 c++ 文件的时候才加载 xcsope ,可以写:
(add-hook 'c-mode-common-hook '(lambda () (require 'xcscope)))
如果源代码全部处于同一个目录下面,现在就可以使用了。否则,如果 源代码有多层目录,或者其他地方还有附加的源代码,则需要 cscope-indexer 脚本。把那个脚本拷贝到系统 PATH 里面去(如 /usr/bin/)。如果所有的源代码以及子目录都是在同一个目录下面的, 只要执行 C-c s I(cscope-index-files) 就可以生成 Cscope 的数据 库,接下来就可以使用了。
使用简介
默认是的快捷键都是绑定到 C-c s 的前缀上面,如果嫌麻烦的话可以自 己更改快捷键绑定。这是默认的用于查找的键绑定:
C-c s s Find symbol. C-c s d Find global definition. C-c s g Find global definition (alternate binding). C-c s G Find global definition without prompting. C-c s c Find functions calling a function. C-c s C Find called functions (list functions called from a function). C-c s t Find text string. C-c s e Find egrep pattern. C-c s f Find a file. C-c s i Find files #including a file. ------------------------------------------ C-c s a 设定初始化的目录,一般是代码的根目录 C-s s I 对目录中的相关文件建立列表并进行索引 C-c s s 序找符号 C-c s g 寻找全局的定义 C-c s c 看看指定函数被哪些函数所调用 C-c s C 看看指定函数调用了哪些函数 C-c s e 寻找正则表达式 C-c s f 寻找文件 C-c s i 看看指定的文件被哪些文件include
下面是在搜索到的结果之间切换用的快捷键:
C-c s b Display *cscope* buffer. C-c s B Auto display *cscope* buffer toggle. C-c s n Next symbol. C-c s N Next file. C-c s p Previous symbol. C-c s P Previous file. C-c s u Pop mark.
更详细的使用说明请参见 xcscope.el 文件头部的注释。
base64
Base64 is an encoding that encodes three bytes into four characters, thereby increasing the size by about 33%. The alphabet used for encoding is very resistant to mangling during transit.
The following functions are defined by this library:
- base64-encode-region
- base64 encode the selected region. Return the length of the encoded text. Optional third argument no-line-break means do not break long lines into shorter lines.
- base64-encode-string
- base64 encode a string and return the result.
- base64-decode-region
- base64 decode the selected region. Return the length of the decoded text. If the region can't be decoded, return nil and don't modify the buffer.
- base64-decode-string
- base64 decode a string and return the result. If the string can't be decoded, nil is returned.
完