前言
C - chr 表示当输入字符 chr 时按住 CONTROL 键。
M - chr 表示当输入字符 chr 时按住 ALT(或 EDIT 或 META)键。
视图移动
- C - v 向前移动一屏
- M - v 向后移动一屏
- C - l 将光标所在行置于屏幕的中央(多按几次会在屏幕最上方或最下方,可以加参数)
基本的光标控制
单格移动
- C - n 下一行
- C - p 上一行
- C - f 下一格
- C - b 上一格
跨词移动
- M - f 到下一个词末尾
- M - b 到上一个词开头
【这里的“词”指英文单词,对中文来说,则是指移动到下一个标点符号。】
行间和行内移动
- C - a 移动到当前行开头
- C - e 移动到当前行末尾
- M - a 移动到句首
- M - e 移动到句尾
全文移动
- C - < 移动到全文开头
- C - > 移动到全文末尾
前缀参数
-
C - u + 数字 + 其他命令 一般表示这个命令重复做几次
-
例外:给C-v 和 M-v 给定一个参数时,它们将滚动你指定的“行数”。
终止命令、退出、窗格
- C - g 退出当前命令,或者退出minibuffer
- C - x + C - c 退出emacs
- C - x + 1 留下当前窗格
- C - z 最小化,如果在终端里是挂起
【即可以在终端进入另一个进程,用 % emacs 或者 fg 回去。】
插入与删除
- backspace 删除光标前的一个字符
- C - d 删除光标后的一个字符
- M - backspace 移除光标前的一个词
- M - d 移除光标后的一个词
- C - k 移除从光标到“行尾”间的字符,
【或者叫剪切,但不在剪切板里,在emacs自己的缓冲区】 - M - k 移除从光标到“句尾”间的字符
- C - y 召回最近一次的移除
- M - y 选择某次移除召回(多次使用或者指定参数以选择)
- C - @ 选中
- C - w 删除选中的内容
tips:
-
单独的 C-k 会把一行的内容移除,而第二个C-k则会移除换行符,并使其后所有的行都向上移动。C-k处理数字参数的方式很特别,它会把参数指定的那么多行连同其后的换行符一起移除。
-
如果你一次连按了好几下C-k,那么所有被移除的行会被存储在一起,算作同一次移除,只要一个C-y 就可以把它们都召回。
撤销
- C - /
- C - _
- C - x + u
效果全都一样,可加前缀参数
文件
- C - x + C - f + 绝对路径 寻找并打开一个文件,如果没有则新建一个
- C - x + C - s 储存这个文件
【关掉文件备份用如下命令:M - x + customize-variable + 回车 + make-backup-files + 回车】
缓冲区(BUFFER)
Emacs 把每个编辑中的文件都放在一个称为“缓冲区(buffer)”的地方。每寻找到一个文件,Emacs 就在其内部开辟一个缓冲区。
- C - x + C - b 列出缓冲区
- C - x + b + 缓冲区名 进入某个缓冲区
【大多数情况下,缓冲区与跟其对应的文件是同名的(不包括目录名),不过这也
不是绝对的。用 C-x C-b 得到的缓冲区列表总是显示缓冲区名。】
- C - x + s + 回答询问 保存多个缓冲区
命令集扩展
扩展命令有两种风格:
- C - x 字符扩展。 C - x 之后输入另一个字符或者组合键。(上面提到了好多)
- M - x 命令名扩展。M - x 之后输入一个命令名。
比如:
- M - x + replace-string 全文替换
- M - x + recover-file 将自动保存文件提取到当前文件
模式
- M - x + 模式名称 切换到模式
主模式:比如 Fundamental模式,Lisp 模式, Text 模式。
【主模式通常会改变一些命令的行为。不能同时使用多个。】
辅模式:比如 Auto Fill模式(自动换行,以后再学)
【辅模式是开关(enabled-disabled)而非切换】
搜索
- C - s 向前搜索
- C - r 向后搜索
【每输入一个字符都会搜索一次。】
【在输入字符串之后使用上面两个快捷键会搜索下一个或上一个结果】
【使用C - g或者enter退出搜索,前者使光标回到搜索前的位置,后者停留在当前搜索结果处】
多窗格
- C - x + 0 关闭当前窗格
- C - x + 2 将屏幕划分成两个窗格
- C - x + 3 在当前窗格右边新建一个窗格~~(雾)~~
- C - M - v 在另一个窗格移动视图
- C - M - Shift - v 同上,反向
- C - x + o 切换窗格
- C - x + 4 + C - f 在下一个(切换窗格的顺序)窗格中打开文件
- C - x + 5 + C - f 在新文件
多窗口
- M - x + make-frame 打开新窗口
- M-x delete-frame 关闭当前选中的窗口(必须要留有一个)
递归编辑
递归编辑状态由位于状态栏的方括号所指示,其中包含了用小括号来指明的模式名称。【比如在用 M-% 进行交互式替换的时候你又用了 C-s 进行搜索,这时替换模式并没有结束,但你又进入了搜索模式,这就是所谓的递归编辑。】
并无卵用
稍微有用的**tips:**离开递归编辑可以用 ESC ESC ESC。这是一个最通用的“离开”命令,你甚至可以使用它来关掉多余的窗格,或者离开小缓冲。你不能用 C-g 退出递归编辑,因为 C-g 的作用是取消“本层递归编辑之内”的命令和其参数。
帮助
- C - h ? 有什么可以提供的帮助?
- C - h + c + 命令 简短的解释
- C - h + k + 命令 长篇大论的解释
- C - h + f + 函数名 解释一个函数
- C - h + v + 变量名 解释一个变量
- C - h + a 相关命令搜索
- C - h + i for more information
简单的配置
(set-background-color "black")
(set-foreground-color "grey")
(column-number-mode)
(global-linum-mode t)
(tool-bar-mode 0)
;;(menu-bar-mode 0)
(scroll-bar-mode 0)
(setq-default cursor-type 'box)
(global-set-key (kbd "TAB") 'self-insert-command)
(setq c-basic-offset 4)
(setq-default tab-width 4)
(electric-pair-mode t)
(global-set-key (kbd "<backtab>") 'un-indent-by-removing-4-spaces)
(defun un-indent-by-removing-4-spaces ()
"remove 4 spaces from beginning of of line"
(interactive)
(save-excursion
(save-match-data
(beginning-of-line)
;; get rid of tabs at beginning of line
(when (looking-at "^\\s-+")
(untabify (match-beginning 0) (match-end 0)))
(when (looking-at "^ ")
(replace-match "")))))
字体大小有点麻烦,到options->set default font里面手动修改就好了