emacs快捷键

2014-08-12 (2014-08-27更新)

快捷键说明

本文件中快捷键表示方法如下:

  • c-x就是ctrl+x
  • m-x就是alt+x, Meta(或者Alt,Esc)通常等同于Alt键
  • S:即Shift
  • s:Super,通常是带Windows图标的那个键

开始和退出

启动emacs只需在终端中键入emacs命令,在X11下会默认启动GUI,可使用emacs –nw(run it without any window)启动文本模式。

退出emacs使用C-x-c,退出前会提示保存文件。

命令简述

GNU Emacs的快捷键都是绑定于CTRL键和ALT键上

  • C-x 后按快捷键执行命令
  • M-x 后输入命令执行命令
  • C-c 后跟系统命令
  • C-h 后跟帮助指令

使用emacs命令的时候,如果命令输错或者命令执行一半想暂停,可以使用C-g来取消。

Tab键可以补全命令,在M-x,后按Tab键就可以得到所有可使用的命令

执行shell命令

  • M-x shell 打开SHELL窗口(通过c-x k,删除缓冲区退出命令模式)
  • M-! 系统指令 执行SHELL命令 (shell-command)
  • M-1 M-! 执行SHELL命令,命令输出插入光标位置,不打开新输出窗口
  • M-| 系统指令使用编辑窗口中选定的区域作为该Shell命令的输入(shell-command-on-region),

窗口操作

Frame:顶层窗口,也就操作系统的窗口,对应命令区间为C-x 5

Window:默认只有一个Window,使用命令C-x 2可以对窗口进行对半分割

  • C-x 0 关闭本窗口
  • C-x 1 只留下一个窗口
  • C-x 2 垂直均分窗口
  • C-x 3 水平均分窗口
  • C-x o 切换窗口
  • C-x s 保存所有窗口的缓冲
  • C-x b 选择当前窗口的缓冲区
  • C-x ^ 纵向扩大窗口
  • C-x } 横向扩大窗口
  • C-M-v在另一个窗格中滚动

缓冲操作

emacs中编辑的文件都对应一个缓冲区(Buffer),切换文件实际上就是切换缓冲区, 但也有的缓冲区如Scratch并不对应到具体的文件

用C-x-b切换缓冲区,emacs会要求输入缓冲区名,可以使用C-x C-b查看所有缓冲区列表缓冲区名和文件名一般是相同的,在输入的时候都可以用Tab补齐。Minibuffer:特殊缓冲区,每个Frame最多只有一个,主要功用是接受命令和显示消息,支持Tab补全,可以使用M-p、M-n切换历史命令(命令行)

  • C-x C-b 打开缓冲区列表
  • C-x k 删除缓冲区

缓冲区列表操作:

在某清单的行上按k或d,清单前面显示D代表该行被标记删除,按u去掉该标记,也可以按s进行存盘标记;按下%立马变为只读标记,按x执行;q退出缓冲区清单。

  • d or k 标记为删除
  • ~ 标记为未修改状态
  • % 标记为只读
  • s 保存缓冲
  • u 取消标记
  • x 执行标记的操作
  • f 在当前窗口打开该缓冲区
  • o 在其他窗口打开该缓冲区

目录操作

Directory Editor (Dired)

C-x d 打开目录模式

  • s 按日期/文件名排序显示
  • v 阅读光标所在的文件
  • q 退出阅读的文件
  • d 标记为删除
  • x 执行标记
  • D 马上删除当前文件
  • C 拷贝当前文件
  • R 重命名当前文件
    • 新建文件夹
  • Z 压缩文件
  • ! 对光标所在的文件执行SHELL命令
  • g 刷新显示
  • i 在当前缓冲区的末尾插入子目录的内容
  • [n]m 标记光标所在的文件,如果指定n,则从光标所在的文件起后n个文件被标记
  • [n]u 取消当前光标标记的文件,n的含义同上
  • t 反向标记文件
  • %-m 正则标记
  • q 退出目录模式

说明:在目录模式中,如果输入!,在命令行中包含或者?,有特殊的含义。匹配当前光标所在的文件和所有标记的文件,?分别在每一个标记的文件上执行该命令。

文件操作

  • C-x C-f 打开文件,出现提示时输入/username@host:filepath可编辑FTP文件
  • C-x C-v 打开一个文件,取代当前缓冲区
  • C-x C-s 保存文件
  • C-x C-w 存为新文件
  • C-x i 插入文件
  • C-x C-q 切换为只读或者读写模式
  • C-x C-c 退出Emacs

emacs会定期自动保存文件,自动保存的文件首尾都有一个#,输入 M-x recover file 恢复你的自动保存文件。

编辑操作

  • C-f 前进一个字符
  • C-b 后退一个字符
  • M-f 前进一个单词
  • M-b 后退一个单词
  • C-a 移到行首
  • C-e 移到行尾
  • M-a 移到句首
  • M-e 移到句尾
  • C-{ 移到段落的开始处
  • C-} 移到段落的结尾处
  • M-< 缓冲区头部
  • M-> 缓冲区尾部
  • C-p 后退一行
  • C-n 前进一行
  • M-x goto-line 跳到指定行
  • C-v 向下翻页
  • M-v 向上翻页
  • C-l 当前行居中

  • M-d 删除一个单词
  • C-k 删除一行
  • M-k 删除一句
  • C-w 删除标记区域
  • M-@ 标记从光标到当前词尾的所有文本
  • C-@ or C-Space 标记开始区域,两次C-@或者C-Space启用文本块高亮显示
  • M-h 标记当前段落,不管光标处在什么位置。
  • C-x h 标记所有文字
  • C-x C-x 交换光标位置和区域标记区开头
  • M-w 复制标记区域
  • C-_ or C-/ or C-x u 撤消操作,撤销最近的修改,移动光标不算修改,输入字符以20个字符为一组撤销
  • C-g C-/ or C-g C-_ 重做操作
  • C-y 粘贴删除的内容,C-y可以粘贴连续C-k删除的内容

说明:

删除和移除是有区别的,删除的内容不能在召回,而移除的内容还在缓冲区中,可以被召回。

C-y召回(yank)刚刚最近一次被移除的文本,被移除的文本形成一个环,可以在C-y之后使用M-y被循环的召回。

  • C-M-f 向前匹配括号
  • C-M-b 向后匹配括号
  • M-n or C-u n 重复操作随后的命令n次
  • C-u 重复操作随后的命令4次
  • C-u C-u 重复操作随后的命令8次
  • C-x ESC ESC 执行历史命令记录,M-p选择上一条命令,M-n选择下一条命令
  • C-d 删除一个字符

编辑模式

Emacs采取的编辑方式是对不同类型的文本进入相应的编辑模式,即“主模式”(major mode),Emacs针对多种文档定义了不同的主模式,包括普通文本文件、各种编程语言的源文件、HTML文档、TEX与LaTeX文档,以及其他类型的文本文件等等。

Emacs还能进一步定义“次/辅模式”(minor mode)。每一个缓冲区(buffer)只能关联于一种主模式,却能同时关联多个次模式。

M-x text-mode切入text-mode

如M-x c-mode切换到C模式,M-x auto-fill-mode切入auto-fill-mode次模式用于在编辑过程中自动换行。

Emacs根据文件后缀名自动判断主模式,也可以在文件第一个非空白行添加“-- mode --”来注明主模式

  • C-h m 可以查看当前主模式的文档
  • EMACS 的大纲模式(outline mode)只呈现文章的大纲部份
  • shell: 终端模式(ESC+!)
  • r-mode:R语言
  • org-mode:org-mode
  • c++-mode:C++语言
  • c-mode:C语言
  • latex-mode:LaTeX文件
  • perl-mode:Perl语言
  • tex-mode TeX文件

程序编译

  • M-x compile 执行编译操作(此操作默认是调用make命令编译的)
  • M-x gdb GDB排错
  • M-x dbx DBX排错
  • M-x xdb XDB排错
  • M-x sdb SDB排错

搜索模式

  • C-s key 向前搜索
  • C-s 查找下一个
  • ENTER 停止搜索
  • C-r key 反向搜索
  • C-s C-w 以光标所在位置的字为关键字搜索
  • C-s C-s 重复上次搜索
  • C-r C-r 重复上次反向搜索
  • C-s ENTER C-w 进入单词搜索模式
  • C-r ENTER C-w 进入反向单词搜索模式
  • M-x replace-string ENTER search-string ENTER 替换
  • M-% search-string ENTER replace-string ENTER 交互替换
  • C-r 在进入查找/替换模式后,该命令进入迭代编辑模式
  • C-M-x 退出迭代编辑模式,返回到查找/替换模式
  • C-M-s 向前正则搜索
  • C-M-r 向后正则搜索
  • C-M-% 正则交互替换

SHELL模式

  • C-c C-c 相当于Bash下的C-c
  • C-c C-z 相当于Bash下的C-z
  • C-c C-d 相当于Bash下的C-d
  • M-p 执行前一条命令
  • M-n 执行下一条命令
  • C-c C-o 删除最后一条命令产生的输出
  • C-c C-r 屏幕滚动到最后一条命令输出的开头
  • C-c C-e 屏幕滚动到最后一套命令输出的结尾
  • C-c C-p 查看前一条命令的输出
  • C-c C-n 查看后一条命令的输出

打印资料

  • M-x print-buffer 先使用pr,然后使用lpr
  • M-x lpr-buffer 直接使用lpr
  • M-x print-region
  • M-x lpr-region

收发邮件

  • M-x mail 发送邮件, C-c C-s 发送,C-c C-c 发送并退出
  • M-x rmail 接受邮件

用 gnus 收发邮件,阅读新闻组

M-x gnus 可以通过强大的 gnus 来收发邮件,阅读新闻组。可以阅读 gnus 自带的 manual 来获得详细信息。

Fork me on GitHub