emacs 快捷键
【转载自emacs china】
光标的移动是编辑器中最常用的操作所以必须熟知。
C-f
为前移一个字符,f
代表 forward。C-b
为后移一个字符,b
代表 backward。C-p
为上移至前一行,p
代表 previous。C-n
为上移至下一行,n
代表 next。C-a
为移至行首,a
代表 ahead。C-e
为移至行尾,e
代表 end。
常用的文件操作快捷键组合也必须熟记。
C-x C-f
为打开目标文件,f
代表 find/fileC-x C-s
为保存当前缓冲区(Buffer),s
代表 save
C-x
是 Emacs 的快捷键中常用的前缀命令。这些前缀命令常常代表了一系列有关联的指 令,十分重要,请特别牢记。其它常见的还有 C-c
, C-h
。打断组合键为 C-g
,它 用于终端取消之前的指令。快捷键就是用预先绑定好的方式告诉 Emacs 去执行指定的命令。 (之后会介绍到更多有关绑定的内容)
内置功能
Emacs 功能强大,但是部分功能默认情况下并未开启。下面就有几个例子,
编辑器内显示行号可使用 M-x linum-mode
来开启。
获取帮助
Emacs 是一个富文档编辑器(Self document, extensible editor)而下面的三种方法在学 习 Emacs 的过程中也非常重要。他们分别是,
C-h k
寻找快捷键的帮助信息C-h v
寻找变量的帮助信息C-h f
寻找函数的帮助信息
在开始配置之前让我们先来区别 Emacs 中 Major Mode 与 Minor Mode 的区别。Major Mode 通常是定义对于一种文件类型编辑的核心规则,例如语法高亮、缩进、快捷键绑定等。 而 Minor Mode 是除去 Major Mode 所提供的核心功能以外的额外编辑功能(辅助功能)。 例如在下面的配置文件中 tool-bar-mode
与 linum-mode
等均为 Minor Mode*。
简单来说就是,一种文件类型同时只能存在一种 Major Mode 但是它可以同时激活一种或多 种 Minor Mode。如果你希望知道当前的模式信息,可以使用 C-h m
来显示当前所有开启 的全部 Minor Mode 的信息。
下面是一些简单的编辑器配置信息,你需要做的就是将其写入你的配置文件中 ( ~/.emacs.d/init.el
)即可。
;; 关闭工具栏,tool-bar-mode 即为一个 Minor Mode
(tool-bar-mode -1)
;; 关闭文件滑动控件
(scroll-bar-mode -1)
;; 显示行号
(global-linum-mode 1)
;; 更改光标的样式(不能生效,我们需要区分 setq
与 setq-default
: setq
设置当前缓冲区(Buffer)中的变量值, setq-default
设 置的为全局的变量的值)
;; (setq cursor-type 'bar)
(setq-default cursor-type 'bar)
;; 关闭启动帮助画面
(setq inhibit-splash-screen 1)
;; 通常我们的配置文件以及项目文件均使用版本控制系统,所以自动生成的备份文件就显 得有些多余。我们还可以禁止 Emacs 自动生成备份文件,例如 init.el~
(setq make-backup-files nil)
;; 更改显示字体大小 16pt
;; http://stackoverflow.com/questions/294664/how-to-set-the-font-size-in-emacs
(set-face-attribute 'default nil :height 160)
;; 快速打开配置文件
(defun open-init-file()
(interactive)
(find-file "~/.emacs.d/init.el"))
;; 这一行代码,将函数 open-init-file 绑定到 <f2> 键上
(global-set-key (kbd "<f2>") 'open-init-file)
在每次编辑配置文件后,刚刚做的修改并不会立刻生效。这时你需要重启编辑器或者重新加 载配置文件。重新加载配置文件你需要在当前配置文件中使用 M-x load-file
双击两次 回车确认默认文件名,或者使用 M-x eval-buffer
去执行当前缓冲区的所有 Lisp 命令。 你也可以使用 C-x C-e
来执行某一行的 Lisp 代码。这些可使刚刚修改的配置文件生效。 当然你也可以将这些函数绑定为快捷键。
关于分屏的使用,如果你已经读过 Emacs 自带的教程,现在你应该已经掌握了基本的分屏 操作方法了。关于分屏的更多内容你可以在这里找到。
C-x 1
仅保留当前窗口C-x 2
将当前窗口分到上边C-x 3
将当前窗口分到右边