学指令 emacs篇

原文地址:http://jianlee.ylinux.org/Computer/Emacs/emacs%E5%BF%AB%E9%80%9F%E5%8F%82%E8%80%83.html

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.

原文地址:https://www.cnblogs.com/wangkangluo1/p/2098859.html