按键约定

组合按键

Emacs中大量的按键操作都是各式各样的组合按键(快捷键),下面是几种通常的约定:

  • ​Ctrl​​键:表示为​​C​
  • ​Alt​​键:表示为​​M​
  • ​Shift​​键:表示为​​S​
  • 组合按键:比如向下移动一行的组合按键是​​Ctrl+n​​,就表示为:​​C-n​​,其含义表示同时按下键盘上的​​Ctrl​​和​​n​​键。

按键顺序

有时候用多个组合按键来表示一种操作,比如以下按键序列:​​C-x C-f [文件路径] <RET>​​就表示​​打开文件​​的操作,它表示这样的操作含义:先同时按下​​Ctrl​​和​​x​​键,然后松开,紧接着马上再同时按下​​Ctrl​​和​​f​​键,然后再松开,然后在下方的输入栏中输入文件路径,输入完之后按回车键(用​​<RET>​​表示),最后就打开了一个文件。

还有一种按键顺序:​​C-x o​​,表示切换到另外一个缓冲区,它是这样一组按键:先同时按下​​Ctrl​​和​​x​​键,然后松开,然后紧接着按字母​​o​​键。

还有另外一种按键顺序,比如以下按键序列:​​C-u [10] C-p​​,就表示这样的操作含义:先同时按下​​Ctrl​​和​​u​​键,然后松开,然后依次按​​1​​和​​0​​键,然后松开,最后再同时按​​Ctrl​​和​​p​​键。这组按键达到的效果就是把光标从当前位置往上移动10行。

特殊按键

  • 表示输入内容,用方括号括起来:​​[输入的内容]​
  • 表示回车键:​​<RET>​
  • 表示其他键:比如​​<Backspace>​​表示退格键(删除键),​​<Delete>​​表示删除键,​​<TAB>​​表示TAB键,​​<Left>​​表示左箭头键,​​<Right>​​表示右箭头键,​​<Up>​​表示上箭头键,​​<Down>​​表示下箭头键,​​<f5>​​表示F5键。
Quick Start

文本操作,无外乎打开文件、编辑文件、保存文件,涉及的核心、最高频命令非常简单,整理如下:

  • ​C-x C-f [文件路径] <RET>​​:打开一个文件
  • ​C-n​​:将光标向下移动一行
  • ​C-p​​:将光标向上移动一行
  • ​C-g​​:取消之前的按键(将会成为最常用的按键之一)
  • ​C-x C-s​​:保存文件
  • ​C-x C-c​​:退出Emacs
常用操作分类汇总

文件操作

  • ​C-x C-f [文件路径] <RET>​​:打开一个文件
  • ​C-x C-s​​:保存文件
  • ​C-x 4 f [文件路径] <RET>​​:在一个新的窗格(缓冲区)中打开文件
  • ​C-x 5 f [文件路径] <RET>​​:在一个新的窗口中打开文件

移动操作

  • ​C-n​​:将光标向下移动一行
  • ​C-p​​:将光标向上移动一行
  • ​C-b​​:将光标左移一个字符
  • ​C-f​​:将光标右移一个字符
  • ​M-f​​:将光标右移一个单词
  • ​M-b​​:将光标左移一个单词
  • ​C-v​​:向下移动一屏
  • ​M-v​​:向上移动一屏
  • ​C-l​​:将当前光标所在行移动到屏幕中央(注意:这里是字母​​L​​)
  • ​C-a​​:将光标移到行首
  • ​C-e​​:将光标移到行尾
  • ​M-S-<​​:将光标移动到文件开头
  • ​M-S->​​:将光标移动到文件末尾
  • ​M-m​​:将光标移动到行首的第一个非空白字符

查找与替换操作

  • ​C-s [查找的内容]​​:向前查找
  • ​C-r [查找的内容]​​:向后查找
  • ​C-M-s [查找的内容]​​:向前正则查找
  • ​C-M-r [查找的内容]​​:向后正则查找
  • ​M-S-%​​:查找并替换,操作步骤如下:按下​​M-S-%​​键启动查找替换,输入要被替换的词,回车,然后输入要替换的词,再回车。被替换的词此时会高亮起来,这时,输入y替换并跳到下一个,输入n忽略并跳到下一个,输入q结束,输入!替换剩下的全部。

文本选择操作

  • ​C-S-e​​:选中从当前位置到行尾的文本
  • ​C-S-n​​:从当前位置开始往下选中一行文本
  • ​C-S-p​​:从当前位置开始往上选中一行文本
  • ​C-S-f​​:从当前位置开始往后选中一个字符
  • ​C-S-b​​:从当前位置开始往前选中一个字符
  • ​M-S-f​​:从当前位置开始往后选中一个单词
  • ​M-S-b​​:从当前位置开始往前选中一个单词
  • ​M-S-e​​:选中从当前位置开始到当前句尾的文本
  • ​M-S-a​​:选中从当前位置开始到当前句首的文本
  • ​C-S-@ [其他移动操作]​​:从一个起始位置,选中连续的字符,比如​​C-S-@ C-e​​就表示选中从当前光标位置到行尾的所有字符
  • ​C-S-v​​:向下选择一屏
  • ​M-S-v​​:向上选择一屏
  • ​C-S-l​​:让当前光标所在行居中
  • ​C-x h​​:全选

文本编辑操作

  • 插入文本:只要光标在当前缓冲区,就可以直接输入插入文本。
  • ​C-k​​:删除光标到行尾的所有字符
  • ​C-u [N] [操作序列]​​:重复执行一个操作序列N次
  • ​C-/​​或​​C-x u​​:撤销(undo)上次操作,多次按可以撤销之前的多次操作
  • ​C-g C-/​​:重做(redo),用于重做上次的撤销动作(撤销之后后悔了,想恢复重做)
  • ​<Backspace>​​:删除当前光标前的一个字符
  • ​C-<Backspace>​​:删除当前光标前的一个单词
  • ​C-d​​或​​<Delete>​​:删除当前光标后的一个字符
  • ​M-<Backspace>​​:剪切当前光标前的一个字符到剪贴板
  • ​M-d​​:剪切当前光标后的一个字符到剪贴板
  • ​C-k​​:剪切从光标到行尾的字符到剪贴板
  • ​C-y​​:粘贴剪贴板中的文本到当前光标位置
  • ​M-w​​:复制当前选中的字符
  • ​C-w​​:剪切当前选择的字符到剪贴板
  • ​C-a C-k​​:剪切一整行到剪贴板中,其实也可以用于删除一整行
  • ​C-e <RET>​​:在当前行下方插入一空行
  • ​C-x C-q​​:让当前buffer在“只读”和“读写”两种编辑模式之间切换

多窗格与多窗口

首先要明确一下Emacs中窗格与窗口的概念的区别:每个窗格其实就是一个缓冲区,一个窗口中可以同时打开多个窗格,而窗口就是像Windows那样的GUI窗口。

  • ​C-x 1​​:仅保留当前窗格,关闭其他窗格
  • ​C-x 2​​:在垂直方向打开2个窗格
  • ​C-x 3​​:在水平方向打开2个窗格
  • ​C-x o​​:在不同窗格之间切换
  • ​C-x 0​​:关闭当前窗格
  • ​C-x S-{​​:减小当前窗格的水平宽度
  • ​C-x S-}​​:缩小当前窗格的水平宽度
  • ​C-x S-^​​:增大当前窗格的垂直高度
  • ​C-M-v​​:在另一个窗格中向下滚动一屏(但光标还保留在当前窗格)
  • ​C-M-S-v​​:在另一个窗格中向上滚动一屏(但光标还保留在当前窗格)
  • ​M-x make-frame​​:打开一个新窗口
  • ​M-x delete-frame​​:关闭当前窗口
  • ​C-z​​:挂起当前的窗口(相当于最小化当前的窗口)

文本编码

  • ​M-x describe-coding-system <RET>​​:查看当前缓冲区的编码格式
  • ​C-x <RET> r <TAB>​​:列出当前的所有编码
  • ​C-x <RET> f utf-8 <RET>​​:改变当前缓冲区的编码为utf-8

命令与函数操作

  • ​M-x [函数名] <RET>​​:执行一个函数
  • ​M-S-! [命令] <RET>​​:执行一个命令行命令
  • ​M-x shell <RET>​​:在一个新窗格中、当前目录位置打开命令行

一些常用操作

  • ​M-x goto-line <RET> [行号] <RET>​​:跳转到某一行,将其绑定到快捷键​​C-c j​​:
;; 快速跳到某一行
(global-set-key (kbd "C-c j") 'goto-line)


  • ​M-x electric-pair-mode <RET>​​:打开括号配对模式

缓冲区

  • ​C-x C-b​​:在一个新窗格中列出当前所有的缓冲区
  • ​C-x b xxx <RET>​​:切换到名为​​xxx​​的缓冲区
  • ​C-x k xxx <RET>​​:关闭一个名为​​xxx​​的缓冲区(如果直接按回车,默认关闭的是当前缓冲区)
  • ​C-x s​​:一个个询问是否保存当前每个缓冲区的内容
  • ​M-x kill-some-buffers <RET>​​:一个个询问是否关闭当前打开的缓冲区
  • ​C-x <Left>​​:在多个缓冲区之间切换
  • ​C-x <Right>​​:在多个缓冲区之间切换

配置相关

  • ​C-x d S-~ <RET>​​:打开Emacs配置文件所在路径
  • ​C-h v load-path <RET>​​:查看Emacs的加载路径

帮助操作

  • ​C-h t​​:查看Emacs快速指南
  • ​C-h f​​:查看一个函数(命令)的帮助文档
  • ​C-h S-?​​或​​M-x [help]​​:查看帮助
  • ​C-h c [命令序列]​​:显示命令序列对应的函数名
  • ​C-h k [命令序列]​​:显示命令序列的详细文档(打开一个新窗格)
  • ​C-h a [关键词]​​:打开一个新窗格列出所有含有此关键词的命令
  • ​C-h i​​:查看信息字典文档
  • ​C-h r​​:查看使用手册
  • ​C-h m​​:查看当前缓冲区的major mode和minor mode及其介绍
  • ​C-h b​​:查看和当前缓冲区绑定的快捷键列表
  • ​C-h v [变量名]​​:查看某个变量的值
  • ​C-h w [函数名]​​:查看某个函数绑定的快捷键
  • ​C-h i m [elisp] <RET>​​:查看elisp文档

命令行操作

以下操作都是在系统命令行中的操作:

  • ​emacs -nw -Q​​:在命令行中打开Emacs,​​-nw​​参数表示:​​no window​​,​​-Q​​参数表示:不显示欢迎界面。在命令行打开Emacs后,各项操作和按键与在GUI窗口中是一致的



作者:m2fox