/emacs

Jiang Bian's Emacs Config

Primary LanguageEmacs Lisp

Emacs学习笔记

安装

cp emacs ~/.emacs
cp -r emacs.d ~/.emacs.d

快捷键

Linux

  • Disable All Menu Access Keys

Edit->Keyboard Shortcuts->Disable all menu access keys

Mac

  • 需要屏蔽掉ibus

文件操作

按键作用
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

重新加载文件

按键命令作用
F5revert-buffer重新加载当前文件
C-F5revert-buffer-with-coding-system重新加载当前文件

Ctags操作

按键作用
M-.查找一个tag,比如函数定义类型定义等
C-u M-.查找下一个tag的位置
M-*回到上一次运行M-.前的光标位置
M-TAB自动补齐函数名

光标移动

按键作用
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-g M-g按下M-x后在辅助输入区中输入”goto-line”跳到指定的行

文本块操作

按键作用
C-@标记文本块的开始(或结束)位置
C-x C-x互换插入点和文本标记的位置
C-w 或 SHIFT-DEL删除文本块
M-w复制文本块
M-h标记段落
C-x C-p标记页面
C-x h标记整个缓冲区
Tab C-q Tab插入Tab

列操作

按键作用
C-x r k剪切矩形块
C-x r y粘贴矩形块
C-x r o插入矩形块
C-x r c删除矩形块
C-x r t填充矩形块

大小写操作

按键作用
M-c单词首字母改为大写
M-u单词的字母全部改为大写
M-l单词的字母全部改为小写

删除快捷键

按键命令作用
删除C-ddelete-char删除光标处字符
Backspacedelete-backward-char删除光标前字符
M-\delete-horizontal-space删除光标处的所有空格和Tab字符
M-SPCjust-one-space删除光标处的所有空格和Tab字符,但留下一个
C-x C-odelete-blank-lines删除光标周围的空白行,保留当前行
M-^delete-indentation将两行合为一行,删除之间的空白和缩进
C-kkill-line从光标处起删除该行
C-S-Backspacekill-whole-line删除整行
C-wkill-region删除区域
M-wkill-ring-save复制到kill 环,而不删除
M-dkill-word删除光标起一个单词
M-Backspacebackward-kill-word删除光标前单词
M-kkill-sentence删除光标起一句
C-x Backspacebackward-kill-sentence删除光标前删一句
M-z charzap-to-char删至字符char为止
C-yyank召回
M-yyank-pop召回前一个
C-M-wappend-next-kill下一个删掉内容和上次删除合并
C-h vdescribe-variable显示变量内容
(none)append-to-buffer将区域中内容加入到一个buffer中
(none)prepend-to-buffer将区域中内容加入到一个buffer光标前
(none)copy-to-buffer区域中内容加入到一个buffer中,删除该buffer原有内容
(none)insert-buffer在该位置插入指定的buffer中所有内容
(none)append-to-file将区域中内容复制到一个文件中
(none)cua-mode启用/停用CUA绑定

窗口快捷键

按键命令作用
C-x 2split-window-vertically垂直拆分窗口
C-x 3split-window-horizontally水平拆分窗口
C-x oother-window选择下一个窗口
C-M-vscroll-other-window滚动下一个窗口
C-x 4 bswitch-to-buffer-other-window在另一个窗口打开缓冲
C-x 4 C-odisplay-buffer在另一个窗口打开缓冲,但不选中
C-x 4 ffind-file-other-window在另一个窗口打开文件
C-x 4 ddired-other-window在另一个窗口打开文件夹
C-x 4 mmail-other-window在另一个窗口写邮件
C-x 4 rfind-file-read-only-other-window在另一个窗口以只读方式打开文件
C-x 0delete-window关闭当前窗口
C-x 1delete-other-windows关闭其它窗口
C-x 4 0kill-buffer-and-window关闭当前窗口和缓冲
C-x ^enlarge-window增高当前窗口
C-x {shrink-window-horizontally将当前窗口变窄
C-x }enlarge-window-horizontally将当前窗口变宽
C-x -shrink-window-if-larger-than-buffer如果窗口比缓冲大就缩小
C-x +balance-windows所有窗口一样高
windmove-right切换到右边的窗口(类似:up, down, left)

tabbar切换buffer快捷键

按键命令作用
M-n下一个buffer
M-p上一个buffer
C-x k关闭当前buffer