C-f 光标前进一个字符
C-b 光标后退一个字符
C-p 上移一行
C-n 下移一行
M-f 前进一个单词
M-b 后退一个单词
C-a 行首
C-e 行尾
M-a 句首
M-e 句尾
M-{ 上一个段落
M-} 下一个段落
C-v 屏幕上卷一个屏
M-v 屏幕下卷一个屏
C-M-v 另一个窗口下卷一个屏幕
C-M-V 另一个窗口上卷一个屏幕
M-< 文件头
M-> 文件尾
C-u n 或 M-n 重复执行n次后继命令
Emacs中的删除
C-d 删除光标上的字符
DEL 删除光标前的字符
M-d 删除光标后的单词
M-DEL 删除光标前的单词
C-k 从光标位置删除到行尾
C-S-Backspace 删除当前行
C-y 恢复删除最近的一个
M-y 循环恢复删除上一个
文本块操作
C-@ 标记文本块的开始
C-x C-x 互换插入点和文本标记的位置
M-h 标记整个段落
C-x C-p 标记整个页面
C-x h 标记整个缓冲区
查找与替换
简单查找替换
C-s 向前递增查找
C-r 反向递增查找
C-s C-w 向前递增查找,把光标所在的单词作为查找对象
C-r C-w 反向递增查找,把光标所在的单词作为查找对象
replace-string 查找替换光标后所有的内容
M-% 查询替换操作
对于M-%,需要注意的是其相关的一些操作:
SPACE或y 用新字符串替换原来的,并进入下一个位置
DEL或n 不替换,进入下一个位置
. 在当前位置做替换后退出查询-替换操作
, 替换,并显示替换情况(再按空格或y进入下一个位置)
! 对后面的内容全部进行替换,不再提问
^ 返回上一个替换了的位置
RETURN或q 退出查询替换操作
C-r 进入递归编辑状态
C-w 删除此处内容并进入递归编辑状态(好进行其他修改)
M-C-c 退出递归编辑状态,继续完成查询-替换操作
C-] 退出递归编辑状态和查询替换操作
正则表达式查找与替换
C-M-s Return 向前查找正则表达式
C-M-r Return 反向查找正则表达式
C-M-s 向前递归查找正则表达式
C-M-r 反向递归查找正则表达式
query-replace-regexp 查询-替换正则表达式
replace-regexp 无条件替换正则表达式(慎用)
正则表达式中的字符:
^ 匹配行首
$ 匹配行尾
. 匹配任意单个字符
.* 匹配任意个字符
\< 匹配单词的开头
\> 匹配单词的结尾
[] 匹配[]中的任何一个字符,如[a-z]匹配任何一个小写字母
Emacs 的C/C++ 模式
指定为C++模式的方法
一般根据扩展名自动设定,不用指定,不过有时候你希望.h文件是C++模式的(缺省是C模式),在文件第一行(或其末尾)上加入
// -*- C++ -*-
语法高亮
不是C模式专有,顺便提一下,M-x global-font-lock-mode RET 或在.emacs中加入(global-font-lock-mode t)。在console下,Emacs21才支持语法高亮。(语法高亮,不同关键字用不同的颜色来突出)
编译和调试
M-x compile RET 编译
M-x gdb RET 调试
C-x ` (出错信息中)下一个错误,一个窗口显示错误信息,另一个
显示源码的出错位置
C-u C-x ` 在compile buffer 列出同样的错误。
C-c C-c 转到出错位置
启动gdb调试器后,光标在源码文件缓冲区中时:
C-x SPC 在当前行设置断点
C-c C-c 中断
C-c C-z 中止
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
C-x C-a C-d 删除当前断点
C-x C-a C-l 到达最后一行
显示vector元素值
GDB 在调用成员函数的时候需要首先找到函数的代码才能执行。如果一个成员函数是内联的、并且没有在程序中被使用,那么 GDB 将找不到其代码,也就不能执行此成员函数。
方法1 在源程序的查看之前的位置使用一次 at() 成员函数。
方法2 执行 print vec_obj 可以列出 vector 的内部数据结构,使用这些结构也可以查看各个元素。
假设列出了如下内容:
$1 = {<std::_Vector_base<int,std::allocator<int> >> = {
_M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>},
< No data fields>}, _M_start = 0x8095040,
_M_finish = 0x809505c, _M_end_of_storage = 0x8095060}}, <No data fields>}
可以这样查看第一个元素:print vec_obj._M_impl._M_start[0]
为方便使用,可以定义一个宏来使用:
define print_vector
print $arg0._M_impl._M_start[$arg1]
end
这样,print_vector vec_obj 2 就可查看第三个元素。
在C/C++代码中操作
M-a 移动到当前语句的开始
M-e 移动到当前语句的末尾
C-M-a 移动到当前函数的开始
C-M-e 移动到当前函数的结尾
M-q 若光标在注释文本中间,则进行段落重排,保留缩进和前导字符
C-M-h 把光标放在当前函数开头,把文本块标记放在函数结尾, 即把函数整个选作为一个文本块。
C-c C-q 对整个函数进行缩进
C-x h 选定整个buffer, 然后C-M-\可以对代码进行重新排版
C-c C-u 移动到当前预处理条件的开始位置
C-c C-p 移动到上一个预处理条件
C-c C-n 移动到下一个预处理条件
M-; 对当前行进行注释
C-x C-x 快速返回移动前的光标位置
C-c C-c 对一块代码进行注释;取消注释用命令 uncomment-region
子模式
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个…)
TAB 重新缩进当前行
M-/ 自动补齐(缓冲区中能找得到的串)
M-; 行尾加入注释
C-c C-e 扩展宏
C-c C-c 注释掉整个区域
C-c C-\ 将区域中的每一行结尾都加入一个'\'字符
Emacs中的register
在多个文件中逛的时候,我们常常需要快速切换到先前访问的某个位置。因此,我们需要把文件及其光标位置暂时存放在某个地方。
在Emacs中,我们可以使用register暂时性保存这些信息。
将当前光标所在位置保存入一个register中:
C-x r SPACE + register名(一个字符,比如a吧)
然后我们就可以到处瞎逛,若要回到保存的register a位置,我们可以输入:
C-x r j a
挺好用的吧:)
如果你记性和我一样不好,恐怕会常常想看看自己保存了哪些register,我们可以输入:
M-x view-register 查看某一个register
M-x list-registers 查看所有的register
其实我常用的就是以上功能,为了使笔记稍微完整一点,下面开始Copy 《GNU Emacs Manual》的相关章节:
在下面,我们使用r来命名所有的register:
Save Positions in Registers
C-x r SPC r
Save position of point in register r (point-to-register).
C-x r j r
Jump to the position saved in register r (jump-to-register).
Saving Text in Registers
C-x r s r
Copy region into register r (copy-to-register).
C-x r i r
Insert text from register r (insert-register).
M-x append-to-register RET r
Append region to text in register r.
M-x prepend-to-register RET r
Prepend region to text in register r.
Saving Rectangles in Registers
C-x r r r
Copy the region-rectangle into register r (copy-rectangle-to-register).
With numeric argument, delete it as well.
C-x r i r
Insert the rectangle stored in register r (if it contains a rectangle) (insert-register).
Saving Window Configurations in Registers
C-x r w r
Save the state of the selected frame's windows in register r (window-configuration-to-register).
C-x r f r
Save the state of all frames, including all their windows,
in register r (frame-configuration-to-register).
Keeping Numbers in Registers
C-u number C-x r n r
Store number into register r (number-to-register).
C-u number C-x r + r
Increment the number in register r by number (increment-register).
C-x r g r
Insert the number from register r into the buffer.
分享到:
相关推荐
Emacs使用详解Emacs使用详解Emacs使用详解
emacs使用手册(很权威),比较全面的介绍了emacs的快捷键和各种技巧
gnu emacs 是个强大的编辑器,使用起来是有一定的难度的,但是这个文档能帮你很快的适应它的操作。
emacs使用手册 简要介绍emacs的使用
Emacs使用手册 Emacs使用手册 Emacs
可以对emacs有一个比较深入的了解,同时也能加强英语的学习
手把手教你学习emacs(此文档为pdf格式,共14页,内部含图,介绍详尽)
emacs在LINUX/UNIX使用比较多. 文字处理, 多个BUFFER. ...
emacs使用手册和常用命令 emacs使用手册和常用命令
Goism: 在Emacs 使用Go语言 替代Emacs Lisp语言
Emacs使用前的配置,便于U盘携带,可以任意改变软件放置位置 原理就是改变了HOME目录,使得可以把配置文件.emacs放置在软件目录下,任意随软件迁移
Emacs使用记录
emacs 使用指南,简单介绍了emacs的一直快捷键,如何设置等
Emacs官方使用指南(中文版的)希望有所帮助!
自诞生以来,Emacs演化出了众多分支,其中使用最广泛的两种分别是:1984年由Richard Stallman发起并由他维护至今的GNU Emacs,以及1991年发起的XEmacs。XEmacs是GNU Emacs的分支,至今仍保持着相当的兼容性。它们都...
Learn_GNU_Emacs.pdf 清晰资源 Emacs,著名的集成开发环境和文本编辑器。Emacs被公认为是最受专业...Emacs使用Emacs Lisp,这种有着极强扩展性的编程语言,从而实现了包括编程、编译乃至网络浏览等等功能的扩展。
Emacs使用手册 Emacs 启动: 直接打emacs, 如果有X-windows就会开视窗. 如果不想用X 的版本, 就用 emacs -nw (No windows)起动. 符号说明 C-X 表示按住CTRL键, 然後按X, 再把CTRL, X一起放开. M-X META META ...
这是叶文彬写的emacs lisp入门手册。我把它整理了一下。原文链接的pdf加密了,打不开。...本文的读者应当有一定 emacs 使用经验,会至少一种编程语言。如果不符合这个条件,我想你也不会对 elisp 感兴趣的。
emacs-26.1-x86_64.zip下载集成开发环境和文本编辑器 EMACS,即Editor MACroS(编辑器宏)的缩写,最初由...Emacs使用Emacs Lisp,这种有着极强扩展性的编程语言,从而实现了包括编程、编译乃至网络浏览等等功能的扩展
Emacs 配置 插件 包括最新插件 基本配置 没有那么冗余 新手必备