|
程序员的Emacs
这主要是跟编辑有关的Emacs按键。
Table of Contents
1 格式
- Emacs的缩进是靠变量 left-margin 来控制的。
键盘操作 | 命令名称 | 动作 |
---|---|---|
ESC C-\ | indent-region | 对光标和文本块标记之间的每一行进行缩进 |
ESC m | back-to-indentation | 把光标移到当前行的第一个非空白字符上 |
ESC ^ | delete-indentation | 把当前行合并到上一行去 |
ESC ; | indent-for-comment | 注释 |
ESC j | indent-new-comment-line | 如果注释的内容用一个文本行容纳不下,就需要在下一行继续写完注释;也可能将写好的注释分为两行。 |
平时很多时候需要注释一行代码,常用的办法是先选中该行,然后再 ESC ; 即可。
2 C 和 C++ 模式
- 进入 C 模式: ESC x c-mode RET
- 进入 C++ 模式: ESC x c++mode RET
2.1 C 模式下的移动命令
键盘操作 | 命令名称 | 动作 |
---|---|---|
ESC a | c-beginning-of-statement | 移动到当前语句的开头 |
ESC e | c-end-of-statement | 移动到当前语句的末尾 |
ESC q | c-fill-paragraph | 如果光标在注释文本中间,则进行段落重排,保留缩进和前导字母 |
ESC C-a | beginning-of-defun | 移动到光标所在函数的开头 |
ESC C-e | end-of-defun | 移动到光标所在函数的末尾 |
ESC C-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-forwrad-conditional | 移动到下一个预处理器条件 |
2.2 etags
- etags *.[ch]
- ESC x visit-tags-table RET
- ESC .
- C-x 4 .
- ESC ,
2.3 编程中常用的命令
键盘操作 | 动作 |
---|---|
C-u C-@ | 跳到上一个光标的位置,就好比vim中的 `` 一样 |
ESC C-n | 向下跳转与大括号匹配 } 但是一定要注意光标位置一定要在 { 前面 |
ESC C-p | 向上跳转与大括号匹配的 { 但是一定要注意光标位置一定要在 } 后面 |
ESC g g | 输入line-number,跳转指定的行 ESC x goto-line |
C-a-k | 按着C-a再按k, 删除一行 |
C-k | 删除光标后面的行 kill line |
C-q Tab | 相当于Tab,直接按Tab会整行缩进 |
ESC ! | 执行shell命令 |
ESC x linum-mode | 显示行号, 像vi的 :set nu |
ESC x show-paren-mode | 显示匹配括号 |
C-x C-f /user@host:/remotepath | 远程编辑文件 |
3 Emacs for vi users
今天偶然看到一篇文章,这都得赐我朝最近开放几天, 于是我将文章全部复制过来,以免以后看不到了。地址在 .
Emacs for vi users "Why can't I enter command mode?" Introduction This is intended as an introductory guide for vi users wishing to learn the basics of Emacs. I'm writing it because I'm one of them, and I suspect that I'm not alone in being mystified by the lack of a command mode, text objects and an underlying ex editor, as well as the plethora of strange and unfamiliar key combinations. The intent is to give fledgling Emacs users a basic set of commands, sufficient for basic editing. This page is a basic Emacs survival guide for the vi user. It is grounded in familiarity of vi and (quite naturally) assumes a vi-centric view of the world. Since the structure is that of a list of corresponding commands, I will not list features that are unique to Emacs. I believe there to be sufficient overlap between the capabilities of each editor to motivate this approach. This is not a joke. It is not about religion or the Editor war and I will not present one editor as better than the other. Neither is it about the Emacs mindset, since I have yet to acquire it myself. Finally, it is not a proper Emacs tutorial. If you want to learn Emacs propely, go find a proper tutorial. There is one built into Emacs, for example. Finally, it is not complete and I welcome contributions. Basics Emacs doesn't have a separate command mode. In a sense, you're always in insert mode. Therefore, special modifier keys are needed to tell commands apart from typed characters. The two commonly used modifiers are Control and Meta. On many systems, the Alt key can be used as Meta. If your system lacks a functional Meta key, you can type Escape before the specified key. Since Control and Meta are so frequently used in Emacs, they have created a special convention for writing such commands, so for example C-a corresponds to Control+A, and M-f corresponds to Meta+F. The Emacs command column will use this convention. This is also consistent with the documentation in Emacs. Many Emacs commands take numerical prefixes, but you need to hold down Meta while typing them. So, for example, type M-2 M-3 M-g g instead of 23G to go to line 23. Commands Program operations Action gi Emacs Notes on Emacs Exit program :q C-x C-c If changes exist, will ask whether Enter or not to save them. Unconditionally exit :q! C-x C-c Just say no. program Enter Save current buffer and :wq C-x C-s exit program Enter C-x C-c Cancel command Ctrl+c C-g Redraw screen Ctrl+l C-l Command line : M-x File operations Action vi Emacs Notes on Emacs Open file, or create :e filename C-x C-f named buffer Enter filename Save current buffer :w Enter C-x C-s Will not save a new, unmodified file. Save current buffer :w filename C-x C-w under new name Enter filename Move to next buffer :n Enter C-x b buffer Move to previous buffer :prev Enter C-x b Enter Navigation Action vi Emacs Notes on Emacs Go to beginning 1G M-< of buffer Go to end of G M-> buffer Go left one h C-b Will wrap to previous line. character Left Go right one l C-f Will wrap to next line. character Right Go up one line k C-p Up Go down one line j C-n Down M-x goto-line Enter Go to line n nG n M-g g n Enter M-n M-g g Go to beginning 0 C-a of line Go to end of line $ C-e Places cursor one step beyond last character. Go to next word w M-f Stops at first non-word character before the word. Go to previous b M-b word Go to next page Ctrl+f C-v PageUp Go to previous Ctrl+b M-v page PageDn C-x r Space x Set mark x mx M-x point-to-register Enter x C-x r j x Go to mark x 'x M-x register-to-point Enter x Go to first H displayed line Go to last L displayed line Move buffer one Ctrl+y C-1 M-v line up Move buffer one Ctrl+e C-1 C-v line down Text editing Action vi Emacs Notes on Emacs Insert text i Always in insert mode. Append text a C-f Only cursor movement is needed. Insert at beginning of I C-a Only cursor movement is needed. line Append to end of line A C-e Only cursor movement is needed. Delete character x C-d forwards Delete Delete character X Backspace backwards Change to end of line C C-k Only deletion is needed. Delete to end of line D C-k Removes line entirely if empty. Delete entire line dd C-a C-k For empty lines C-a C-k C-k For non-empty lines Delete word forwards dw M-d Does not delete whitespace before next word. Delete word backwards db M-Backspace Open line above O C-o Open line below o C-e Enter Join lines J C-n M-^ Undo last edit u C-x u Yanking and placing Action vi Emacs Notes on Emacs C-a C-k For empty lines Yank line yy C-a C-k C-k For non-empty lines Yank n lines nyy C-Space (move to line below last desired) M-w Cut n lines down ndd M-n C-k Paste before P C-y cursor Paste after p cursor Searching and substitution Action vi Emacs Notes on Emacs Search forwards /pattern Enter C-s pattern Enter Search backwards ?pattern Enter C-r pattern Enter Global replace :%s/pattern/with/gc M-% word Enter with Enter text Enter C-M-% pattern Enter with Enter Window operations Action Vim Emacs Notes on Emacs Split horizontally Ctrl+w s C-x 2 Split vertically Ctrl+w v C-x 3 Close current window Ctrl+w c C-x 0 Close all but current windows Ctrl+w o C-x 1 Credits This page was partly inspired by Emacs for Vi Programmers. Thanks to Kaj, magda, Ian D, LeViMS, C. Warrington, E. Bowler and R. Pereira for Emacs commands. © elmindreda
Date: 2012-12-28 Fri
version 7.9.2 with version 23