emacs c/c++ 中使用的命令大杂烩
注释,缩进,光标移动等
键盘操作 | 键盘操作对应函数名 | 说明 |
---|---|---|
ESC Ctrl | indent-region | 对光标和标记之间的每行文本进行缩进 |
ESC ; | indent-for-comment | 如果没有选中任何文本,则在光标所在行的最后加上:/* */;如果选中了文本,则注释掉选中的文本;如果选中的文本已经是被注释的了,则去掉注释。 |
ESC j | /* */里写注释的时候,换行,并自动缩进到和上一行相同的位置。 | |
ctrl x ; | 设置控制缩进的变量comment-column。注:具体的缩进值,由变量comment-column,来决定 | |
ctrl u ctrl space | 让光标跳回上一个mark | |
ESC q | 把注释整形 | |
ESC ctrl a | beginning-of-defun | 移动光标到函数的开头 |
ESC ctrl e | end-of-defun | 移动光标到函数的末尾 |
ESC ctrl h | c-mark-function | 移动光标到函数的开头,并把mark放到函数的末尾,即把整个函数的内容复制了,在按ctrl y时,粘贴的就是整个函数的内容。 |
在条件编译块间移动
当读开源的源码时,发现为了应对不同的系统,有很多条件编译在里面,有了以条件编译块为单位的移动,简直是一种极大的恩赐。
键盘操作 | 键盘操作对应函数名 | 说明 |
---|---|---|
ctrl c ctrl u | c-up-conditonal | 当光标在条件编译块中时,把光标移动到当前条件编译块的起始位置 |
ctrl c ctrl p | c-backwark-conditonal | 当光在条件编译块的起始行时,把光标移动到上一个条件编译块的起始位置 |
ctrl c ctrl n | c-forward-conditonal | 当光在条件编译块的起始行时,把光标移动到当前条件编译块的末尾位置 |
请看下面的例子,假设...处都有上百行的代码。
#ifdef aaa //-----①
... //-----④
#else
... //-----
#endif
... //-----②
#ifdef bbb//-----③
... //-----
#else
... //-----
#endif
1,当光标在①的行首时,按ctrl c ctrl n,光标移动到②的行首
2, 当光标在②或者③时,按ctrl c ctrl p,光标移动到①的行首
3,当光标在④时,按ctrl c ctrl u,光标移动到①的行首
选择代码的样式(缩进等)(函数名:c-set-style)
自动换行(ctrl c ctrl a)(c-toggle-auto-state)
当输入【;】,【{】, 【}】会自动换行并缩进
饥饿删除(ctrl c ctrl d)(c-toggle-hungry-state)
当按【backspace】键时,如果光标前有多个空格,或者回车,会把他们全部删除