Chinaunix首页 | 论坛 | 博客
  • 博客访问: 150322
  • 博文数量: 39
  • 博客积分: 2020
  • 博客等级: 大尉
  • 技术积分: 281
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-10 11:24
文章分类

全部博文(39)

文章存档

2010年(39)

我的朋友

分类:

2010-09-21 14:27:52

topEmacs常用快捷键

剪切复制文本区域
   1. 把光标移动到区域的首字符
   2. C-@ 设置标记
   3. 把光标移动到区域后的第一个字符
   4. C-w 剪切,M-w 复制
   5. C-y 粘贴


查找替换
   1. M-%
   2. 键入查找字符串,回车
   3. 键入替换字符串,回车
   4. 根据提示输入需要的操作: y (替换当前的字符串并移动到下一个字符串), n (不替换当前字符串,直接移动到下一个字符串), ! (进行全局替换,并要求不再显示), . (替换当前字符串,然后退出查找替换操作), q (退出查找替换操作,光标定位到操作开始时的位置)

文件操作
C-x C-s    保存文件
C-x C-w    另存文件
C-x C-f    打开文件
C-x C-r    只读打开文件
C-x k    关闭当前缓冲区(即关闭文件)

窗口操作
C-x o    移动到其他窗口
C-x 0    删除当前窗口
C-x 1    删除除当前窗口外的所有窗口
C-x 2    水平切分屏幕
C-x 3    垂直切分屏幕


    * 如果直接输入,键盘上的数字、字母以及符号仅仅插入该字符。
    * 常用的函数被绑定到 Ctrl 或者 Meta 键所对应的快捷键上(例如 C-e 到行尾, C-_ 是撤消, C-y 是粘贴)。
    * 如果绑定到前缀 Ctrl 上的函数操作对象是一个字符,那么绑定到前缀 Meta 上的函数对应的的操作对象则是一个词(如果这快捷键有意义的话)。类似的,如果前缀 Ctrl 对应的快捷键操作对象是一行,那么前缀 Meta 对应的快捷键将操纵句子。例如: C-t 互换两个字符,而 M-t 互换两个词。 C-e 移动到行尾,而 M-e 移动到句子的尾部。
    * 一些不是特别常用的函数绑定到前缀 C-x 上。例如 C-x C-c 退出 Emacs, C-x 2 水平分割当前 window 。
    * 与某个 mode 相关的的函数被绑定到前缀 C-c 上。
    * 最不常用的函数根本没有键绑定,而是使用 M-x 然后输入函数名来调用他们。
    * 前缀 C-x 4 被保留作操作另外一个 window 用的函数,例如 C-x 4 C-f 在另外一个 window 里面打开文件。类似的, C-x 5 被绑定到操纵其他frame 的函数上面: C-x 5 C-f 才另外一个 frame 里面打开文件。注意到这两个函数与 C-x C-f (打开文件) 有同样的键绑定,只是在中间插入了 4 或者 5,这并不是一个巧合。


自己设置快捷键,比如设置F4跳行,F5编译,F6调试
(global-set-key[f4] 'goto-line);
(global-set-key[f5] 'compile);
(global-set-key[f6] 'gdb);

   1. M-! 执行shell命令
   2. 直接在终端中运行emacs emacs -nw
   3. C-X 表示按住CTRL键, 然后按X, 再把CTRL, X一起放开.
   4. M-X 等于先按 ESC键, 接著按 X键.
   5. M-X 等于alt键.
   6. C-X或 M-X的X没有大小写分别.
   7. 超过两个以上的按键命令, Emacs会在萤幕最下面一行显示你按过什么.这一行叫作mini buffer
   8. 结束Emacs按 C-x C-c
   9. 取消执行 C-g
  10. C-p 向上移 (previous line)
  11. C-n 向下移(next line)
  12. C-f 向右移 (forward)
  13. C-b 向左移 (backward)
  14. C-v 下一页(view next screen)
  15. M-v 上一页
  16. C-L 重画萤幕
  17. M-f 向前跳一个字(word)
  18. M-b 往后跳一个字(word)
  19. C-a 移到行头
  20. C-e 移到行尾
  21. M-a 移到句首 (M-a 到上一个句点后面,一个句子的起头.)
  22. M-e 移到句尾 (M-e 到句点后面)
  23. M-< 移到档头
  24. M-> 移到档尾
  25. C-d 删除游标目前指的后面的字
  26. DEL 删除游标目前指的前面的字 (Delete键)
  27. M-DEL 往回删一个字(word)
  28. M-d 往前删 (游标后面)
  29. C-k 删至行尾 (kill)
  30. M-k 删到一句子结尾(删到句点) (kill)
  31. C-x u 撤消操作
  32. C-_ 也是撤消操作
  33. C-k 剪切 (kill)
  34. M-k 剪切 (kill)
  35. 剪切一段文字的方法: 将光标移到想要剪切的文字段开头, 用 C-@ (或 C-SPC )设标记( Mark set ), 将光标移到想要剪切的文字段末尾, 用 M-w 剪掉那段文字.
  36. C-y 粘贴 (yank) , kill & yank 就是 cut & paste的意思.
  37. C-x C-f 打开文件(可以用tab 或SPC键自动补全文件名)
  38. C-x C-s 保存文件
  39. C-x s 保存所有的文件
  40. C-x i 插入文件(把另外的档案的内容读入目前编辑区内)
  41. C-x 0 关掉目前的视窗
  42. C-x 1 会让目前的视窗占满整个萤幕 (One Window), 取消/关掉其他的视窗.
  43. C-x o 跳到另一个视窗
  44. C-x 2 把目前的视窗切成两个 (水平分割)
  45. C-x 3 (垂直分割)
  46. C-x 4 是一串与视窗有关的指令.
  47. C-x 5 则是扩展到X的视窗, 称为frame.
  48. C-x 5 2 就是再开另一个X视窗 (frame).
  49. C-x C-b 看目前有那些buffer (buffer就是emacs放开起的档案的地方).
  50. C-x b 然后在minibuffer输入buffer的名字, 可以切换编辑buffer, TAB键也有作用. 有些内部的buffer (就是没有档案的buffer), 是用*开头和结束, 这个也要打, 如*scratch*
  51. 按 M-x 之后就可以打一个Emacs命令来执行
  52. C-x C-c 就是结束Emacs,比较常用的是C-z
  53. C-z 把Emacs暂停, 回到命令列. 当你下次再需要编辑时, 打fg %emacs 或者 fg 就可以把Emacs唤醒. 在X下, C-z 会把emacs缩成icon.
  54.


2007-04-04 00:58

`C-'                 Control-(即 Ctrl-),按住 Ctrl 键再按其他键
`M-'                 Meta-(或 Alt-),按住 Alt 键再按其他键;或按一下 ESC,再按其他键
`C-M-'               Control-Alt-,按住 Ctrl 和 Alt 两个键再按其他键
point                位点。文档中的一个位置,一般是光标的左下角
mark                 标记。由命令设置,用来定义/保存文档中的位置信息
region               区域。在 mark 和 point 之间部分,称为一个 region

RET                  回车键
TAB                  制表符键
ESC                  ESC 键
SPC                  空格键
Backspace, DEL      退格键
Delete         删除键

=== 如果不知道 ===

C-x C-c              退出并关闭 Emacs

C-z                
C-x C-z              退出并挂起 Emacs

C-x C-f              打开文件/目录
C-x i                插入文件内容
C-x C-r              只读方式打开一个文件

C-x u                Undo( 想要Redo,动一下光标或按一下 C-g 再Undo :)
C-x C-s              保存文件
C-x s                询问保存所有未存盘文件
C-x C-w              文件另存为…

C-l                  刷新窗口,并将当前行移至窗口中心。给定参数,可以设置
                     当前行的位置,不妨试试 M-0 C-l 或 M-- C-l 或 M-4 C-l

C-g                  退出当前命令。如果你不知道Emacs正在干什么呢,多按几次
                     C-g,就会恢复到正常状态

===     在线帮助     ===

C-h t                TUTORIAL
C-h i                Online Info

C-h c                给出键序列(简称键)绑定的命令名字
C-h w                由命令名字给出键的绑定

=== 给命令传参数 ===

C-u                  给定参数前缀

M-0
...
M-9                  参数0...9

M--                  负参数

=== 光标的移动     ===

C-a                  行首
C-e                  行尾

C-n                  下一行
C-p                  上一行
C-f                  前进一个字符
C-b                  后退一个字符

M-f                  前进一个词
M-b                  后退一个词
C-M-n C-M-p 括号间跳转

=== 搜索和替换     ===

C-s                  增量搜索
C-r                  向后增量搜索

M-x search-forward
                     搜索
M-x search-backward
                     向后搜索

C-M-s
M-x isearch-forward-regexp
                     正则表达式增量搜索
C-M-r
M-x isearch-backward-regexp
                     正则表达式向后增量搜索

M-x search-forward-regexp
                     正则表达式搜索
M-x search-backward-regexp
                     正则表达式向后搜索

ESC %                询问替换
M-x query-replace-regexp
                     正则表达式询问替换

M-x replace-string 替换
M-x replace-regexp 正则表达式替换


===区域的拷贝和粘贴===
* 区域是Mark和Point之间的部分,Point就是光标的左下角,Mark由命令设置。
* `Yanking ring'是一个存放文本的地方,从这里你可以拷贝删除(kill)的文本。
* `Yanking'表示插入刚刚删除(kill)的文本。

C-SPC              
C-@                
M-x set-mark-command
                     设置 mark
C-x C-x              交换 mark 和 point

C-w                  将区域的文本删除,并放入yanking ring中
M-w                  复制区域到yanking ring中

C-y                  将yanking ring中最后一个区域插入当前缓冲区

M-y                  按一次C-y后,多次按M-y,则用yanking ring中的其他区域替
                     换刚刚插入的区域

C-o                  在光标后面插入空行
C-x C-o              将光标附近的空行去掉,多行的时候,第一次只剩一行,第二
                     次全部删除

C-d                  删除一个字符(不能yank)
M-d                  删除光标附近的一个词

C-x h                将整个缓冲区设置为区域(缓冲区尾是mark,首是point)

C-k                  删除(kill)从光标处到行尾

=== 基本编辑 ===

C-q                  插入下一个的字符,比如插入字符`^X'用“C-q C-x”

C-t                  交换两个字符
M-t                  交换两个词
C-x C-t              交换两行

C-x =                显示光标所在字符的信息

C-v                  向下滚动窗口
M-v                  向上滚动窗口

=== 多窗口和多缓冲区 ===

C-x b                转到另一个缓冲区
C-x k                删除缓冲区

C-x 2                水平分个窗口
C-x 3                垂直分割窗口
C-x 1                去掉其它窗口
ESC ESC ESC          同上
C-x 0                去掉当前窗口

C-x o                光标到另一个窗口中

C-M-v                向下滚动另一个窗口,给一个负的参数,则向上滚动

=== 宏 ===

C-x (                开始一个宏的定义
C-x )                结束一个宏的定义

C-x e                执行宏

M-x name-last-kbd-macro
                     给最后一个宏命名

M-x insert-kbd-macro
                     在当前文件中插入一个已定义并命名过的宏

=== 矩形区域操作 ===

* 矩形区域的两端是由 Mark 和 Point 确定的。

C-x r t              用串填充矩形区域
C-x r o              插入空白的矩形区域
C-x r y              插入之前删除的矩形区域
C-x r k              删除矩形区域
C-x r c              将当前矩形区域清空

;; C-c g f 快速打开文件
(global-set-key (kbd "C-c g f") 'ffap)



C-  意思是按住 Ctrol 键

    M-   意指 Meta 键 (键盘上若无Meta 键,则可以ALT ESC 键来取而代之)
    DEL  意指退格键 (不是 删除(Delete) key)
    RET  意指回车键
    SPC  意指空格键
    ESC  意指Escape键
    TAB  意指Tab键

    像 "C-M-" (or "M-C") 这样连在一起的意味着同时按住 Control 和 Meta 键不放.



用方向键
   C-p 、 C-b 、 C-f 和 C-n 这四个命令。它们的功能和方向键是一样的,如下图所示:

            上一行 C-p (Prev line)
                          .
                          .
                          .                             
  向左移 C-b .... 。.... 向右移 C-f (Forward  character)
 (Backward )     .
                          .
                          .
              下一行 C-n (Next line)

“P N B F”四个字母分别代表了四个词,用这四个词记忆这些组合键会更容易:
P 代表 previous(上一行),
N 代表 next(下一行),
B 代表 backward(回
退),
F 则代表 forward(前进)


进入Emacs
要进入GNU Emacs,只需键入它的名字             emacs
离开Emacs
挂起Emacs:                                    C-z
永久离开Emacs                                  C-x C-c

文件
读取文件到Emacs                                C-x C-f
保存文件到磁盘                                  C-x C-s
保存所有文件                                    C-x s
插入其它文件的内容到当前缓冲                    C-x i
用将要读取的文件替换当前文件                    C-x C-v
将当前缓冲写入指定的文件                        C-x C-w
Version control checkin/checkout                     C-x C-q

取得帮助
进入帮助系统很简单,只需要输入C-h(或F1)并跟随要获取帮助的对象,初次使用Emacs的用户可以输入C-h t进入使用手册
离开帮助窗口                                    C-x 1
滚动帮助窗口                                    C-M-v
匹配:显示与字符a串匹配的命令                   C-h a
显示一个键的功能                                C-h c
详细描述一个功能                                C-h f
取得详细模式的信息                              C-h m

错误恢复
取消当前要执行的命令                            C-g
恢复系统崩溃后丢失的文件                        M-x recover-file
撤销更新                                        C-x u或C-_
使缓冲回复到初始内容                            M-x revert-buffer
Redraw garbaged scree   n                         C-l

增量查找(Incremental Search)
向前查找                                        C-s
向后查找                                        C-r
规则表达式查找                                  C-M-s
反向规则表达式查找                              C-M-r
选择前一个查找字符串                            M-p
选择下一个查找字符串                            M-n
退出增量查找                                    RET
取消上一个字符的作用                            DEL(Backspace)
退出当前查找模式                                C-g
在查找的过程中可重复使用C-s和C-r来改变查找方向

移动(Motion)
向前一个字符                                    C-f
向后一个字符                                    C-b
向前一个字                                      M-f
向后一个字                                      M-b
向上一行                                        C-p
向下一行                                        C-n
到行首                                          C-a
到行尾                                          C-e
到句首                                          M-a
到句尾                                          M-e
到段首                                          M-{
到段尾                                          M-}
到页首                                          C-x [
到页尾                                          C-x ]
到表达式首部                                    C-M-f
到表达式尾部                                    C-M-b
到函数首部                                      C-M-a
到函数尾部                                      C-M-e
到缓冲首部                                      M-<
到缓冲尾部                                      M->
滚动到下一屏                                    C-v
滚动到上一屏                                    M-v
滚动到右边一屏(内容向左移动)                  C-x <
滚动到左边一屏(内容向右移动)                  C-x >
滚动当前行到屏幕中央                            C-u C-l

Killing和Deleting
向前delete字符                                  C-d
向后delete字符                                  DEL(Backspace)
向前delete到字首                                M-d
向后delete到字尾                                M-DEL(Backspace)
向前delete到行首                                M-0 C-k
向后delete到行尾                                C-k
向前delete到句首                                C-x DEL(Backspace)
向后delete到句尾                                M-k
向前delete到表达式首部                          M-- C-M-k
向后delete到表达式尾部                          C-M-k
Kill区域                                        C-w
拷贝区域到Kill Ring                              M-w
Kill到下一个给定字符出现的位置                  M-z
拉回(yank)上次kill的内容                      C-y
用更早kill的内容取代拉回的上次kill的内容        M-y

标记(Marking)
标记当前位置                                    C-SPC或C-@
以字符为单位使用移动命令动态标记区域            C-x C-x
以字为单位使用移动命令动态标记区域              M-@
标记一段                                        M-h
标记一页                                        C-x C-p
标记一个表达式                                  C-M-@
标记一个函数                                    C-M-h
标记整个缓冲区                                  C-x h

Query Replace
交互式地替换一个文本串                          M-%
交互式地替换一个规则表达式                      M-x query-replace-regexp
替换当前的并移动到下一处                        SPE
替换当前的但不移动到下一处                      ,
不替换当前的并移动到下一处                      L(Backspace)
替换所有剩下的符合条件的文本                    !
退出替换模式                                    RET
进入递归的编辑模式                              C-r
退出递归的编辑模式                              C-M-c

多窗口(Multiple Windows)
(When two commands are shown,the second is for “other frame”)
删除所有其它窗口                                C-x 1
上下分割当前窗口                                C-x 2 C-x 5 2
左右分割当前窗口                                C-x 3
删除当前窗口                                    C-x 0 C-x 5 0
滚动其它窗口                                    C-M-v
切换光标到另一个窗口                            C-x o
选择另一个窗口中的缓冲                          C-x 4 b C-x 5 b
显示另一个窗口中的缓冲                          C-x 4 C-o C-x 5 C-o
在另一窗口中查找并打开文件                      C-x 4 f C-x 5 f
在另一窗口中以只读方式打开文件                  C-x 4 r C-x 5 r
在另一窗口中运行dired命令                       C-x 4 d C-x 5 d
在另一窗口中查找tag                             C-x 4 . C-x 5 .
增加窗口高度                                    C-x ^
减小窗口宽度                                    C-x {
增加窗口宽度                                    C-x }
格式(Formatting)
缩进当前行(与模式相关)                        TAB
缩进区域(与模式相关)                          C-M-
缩进表达式(与模式相关)                        C-M-q
Indent region rigidly arg. Columns                    C-x TAB
在光标后插入一个新的行                          C-o
静态地将一行下移                                C-M-o
删除光标附近的空行(留下一行)                  C-x C-o
与上一行合并成一行                              M-^
删除光标附近的所有空格                          M-
删除光标附近的空格(留下一格)                  M-SPC
Fill paragraph                                     M-q
Set fill column                                    C-x f
设置每一行开始的前缀                            C-x .
设置字体                                        M-g

Case Change
将一个字设置为大写                              M-u
将一个字设置为小写                              M-l
将一个字首字母设置为大写                        M-c
将一个区域设置为大写                            C-x C-u
将一个区域设置为小写                            C-x C-l

The Minibuffer
(the following keys are defined in the minibuffer)
最大程度地补全命令                              TAB
补全命令中的一个字                              SPC
完成并执行一个命令                              RET
列出命令所有可能的后续部分                      ?
列出在当前命令之前输入的命令                    M-p
列出在当前命令之后输入的命令                    M-n
用规则表达式在命令历史记录中向后搜寻            M-r
用规则表达式在命令历史记录中向前搜寻            M-s
重复执行上一条命令                              C-x ESC ESC

缓冲(Buffer)
选择另一个缓冲                                  C-x b
列出所有的缓冲                                  C-x C-b
Kill一个缓冲                                     C-x k

置换(Transposing)
字符置换                                        C-t
字置换                                          M-t
行置换                                          C-x C-t
表达式置换                                      C-M-t

拼写检查(Spelling Check)
对当前的字进行拼写检查                          M-$
检查区域内所有的字                              M-x ispell-origin
检查缓冲内所有的字                              M-x ispell-buffer

标记 (Tags)
查找标记                                        M-.
查找标记下一次出现的位置                        C-u M-.
指定一个新的标记文件                            M-x visit-tags-table
Regexp search on all files in tabs table                 M-x tags-search
在所有文件中执行查询-替换                       M-x tags-query-replace
继续进行上一次标记查找或查询-替换               M-,

Shells
执行一个shell命令                               M-!
在一个区域上执行sheel命令                       M-|
通过shell命令过滤区域                           C-u M-|
在窗口中启动一个shell                            M-x shell

矩形(Rectangles)
拷贝一个矩形到寄存器                            C-x r r
Kill矩形                                         C-x r k
拉回矩形                                        C-x r y
打开一个矩形, 将文本移动至右边                  C-x r o
清空矩形                                        C-x r c
为矩形中每一行加上一个字符串前缀                C-x r t

规则表达式(Regular Expressions)
除换行符外的所有单个字符                        .
零个或多个重复                                  *
一个以上的重复                                  +
零个或一个重复                                  ?
转译字符                                       
选择(or)                                      |
分组                                            (…)
与第n个组相同的文本                            n
At work break                                    b
Not at work break                                 B

寄存器(Register)
存储区域到寄存器                                C-x r s
插入矩形内容到缓冲                              C-x r i
存储光标位置到寄存器                            C-x r SPC
跳跃到寄存器中存储的光标位置                    C-x r j

键盘宏(Keyboard Macros)
开始定义一个键盘宏                              C-x (
结束键盘宏的定义                                C-x )
执行上一次定义的键盘宏                          C-x e
追加到上一个键盘宏                              C-u C-x (
为上一个键盘宏命名                              M-x name-last-kbd-macro
在缓冲中插入Lisp                                M-x insert-kbd-macro


Tags
    Tags 是一个显为人知的功能? 所以我想提一下. 这不是emacs发明的, 而是vi 原本的特异功能. emacs只是发扬光大而已.

假设你有一个目录, 里面是一个程式的原始码, 比如说, tin 的原始码, 放在 ~/tin-1.3beta 下面. 你想看它们.

首先, 叫emacs cd到该目录:  M-x cd

然后, 建立tag table. tag table 就是一张对照表, 记录哪个符号(variable/function call) 对映到哪个档案的哪个地方. 有这张表, emacs可以让我们快速的在程式码内游走. 一般这张表是一个档案, 叫作TAGS (大写)

  M-! etags *.c

M-! 是执行external shell command的意思. etags就是emacs的建表程式. 你只要告诉它你的source code在那里即可.

vi的话是使用ctags这个程式, 它建出来的档名叫tags (小写). 因为我们介绍emacs, 所以不管它.

然后, 怎么看程式? 你知道所有的C 程式都是由main()开始, 所以你想找到main()在哪个档案. 这时只要按 M-. 然后emacs会问你tag table在哪里. 因为我们已经cd到该目录, 直接按enter就好了. 然后输入main, emacs就会把你带到main(){ ... }去.

如果 你看到某个程式片断呼叫一个你没看过的函式, 你可以把游标移到该函式的名字上, M-. ENTER 就搞定了.

如果 emacs找错了 (比如有变数和函式同名, emacs跳到变数去), 那你可以用 C-u M-. 找下一个.

在编辑程式码的时候, M-SPC 很有用, 它会把游标附近的空白缩成一个. 在其它地方也有效.

拼写检查

当然只是针对英文。

Ispell

选中一块区域,或者对整个编辑缓冲区进行拼写检查: M-x ispell-buffer RET, 这时会打开ispell缓冲区,C-h可以查看一些拼写检查的帮助信息。

检查单词。在一个单词上执行M-$,会对这个单词进行拼写检查。

单词拼写补全。在一个未拼完的单词后执行ESC TAB(M-TAB)。

只要启用过Ispell, 他就将一直在后台运行。M-x ispell-kill-ispell,可以杀死这个进程。

感觉很好用。

flyspell

一个扩展,可以在编辑的时候直接进行拼写检查,也就是spell-check on the fly。它也是利用Ispell。

M-x flyspell-mode RET
Tips

改变buffer的只读属性

M-x toggle-read-only

在C模式下输入tab

C-q TAB : 对TAB不做解释,直接输
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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-/ 将区域中的每一行结尾都加入一个'/'字符

M-x c-beginning-of-defun
M-x c-end-of-defun  跳到函数的开头或结尾

C-c C-u    跳转到前面的一个#ifdef

C-c C-p

C-c C-n   跳转到宏的开头或结尾

C-M-h   选中整个函数区域

C-c C-\   在所选区域的每一行后面添加" \ "

M-x auto-insert 自动添加

   #ifndef TEST_H
   #define TEST_H
   #endif


M-@  把光标移动到单词开头,选中整个单词区域

C-M-h  选中当前行


C-u, C-@   回到上次标签的位置


===编译和调试===

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


Emacs的快捷键都是绑定于ctrl和alt(或称meta)上的,例如c-x就是ctrl+x,m-x就是alt+x.
当然所有的按键都可以自定义。

常用的帮助按键:
c-h a : 查询一个命令
c-h c : 查询一个按键
c-h t : Tutorial
m-x customized-group RET ... 自定义模式
m-x describe-... RET 各种各样的帮助信息


光标操作:
m-< : 光标到buffer头 m-> : 光标到buffer尾
m-a : 光标到前一句
m-e : 光标到后一句
c-up : 光标到前一段
c-down : 光标到后一段
c-left 或 m-left : 光标到前一个词
c-right 或 m-right : 光标到后一个词

常用按键:
c-g : 取消当前命令或者按键

文件操作:
c-x c-f : 打开文件或目录
c-x c-s : 保存当前文件
c-x c-w : 当前文件另存为
c-x u : undo

剪切操作:
c-spc : 选定区域,建议自行绑定此键,因为和windows的ctrl+space冲突。
c-x h : 全选
m-w : 复制
c-w : 剪切
c-y : 粘贴 (handy for german keyboard :)
m-y : 粘贴剪贴板前一项内容
c-k : 剪切一行

查找和替换:
c-s : 向后寻找 (i-search)
c-r : 向前寻找(i-search)
m-% : 查找并替换

窗口操作:
c-x l : 显示文件(buffer)总行数
c-x 1 : 当前窗口最大化
c-x 2 : 上下两窗口模式
c-x 3 : 左右两窗口模式
c-x 0 : 关闭当前窗口(Buffer仍然存在)
c-x o : 切换窗口

Buffer操作:
c-x b : 切换buffer
c-x c-b : buffer 列表
c-x k : 关闭buffer
g : 刷新目录(dired)或者buffer列表

编码操作:
c-x RET r : 改变当前buffer的编码
c-x RET f : 改变保存当前文件所使用的编码

几个好用的自定义按键:
(global-set-key [(meta g)] 'goto-line) ;; m-g 跳到某一行
(global-set-key [(ctrl tab)] 'kill-this-buffer) ;; c-tab 关闭当前buffer
(global-set-key [(ctrl c) (ctrl c)] 'comment-or-uncomment-region) ;;c-c c-c区域注释或取消注释
(global-set-key [(meta r)] 'eval-buffer) ;; m-r 执行buffer中的lisp代码
(global-set-key [(ctrl <)] 'set-mark-command) ;; c-< 选定区域

dired操作尚在研究中,据说可以有替代TC的可能。

ps:
Emacs是什么? Emacs是世界上最强大的编辑器,但他不仅仅是编辑器,Emacs是一种生活方式。
世界上有三种人,一种使用 Emacs,一种使用 vi,另一种包括其他所有人。wakaka

阅读(835) | 评论(0) | 转发(0) |
0

上一篇:字节那些事儿

下一篇:DNS INSTALL

给主人留下些什么吧!~~