emacs 速查手册

Emacs 是一个历史悠久的文本编辑器(最初版本发布于 1976 年)。它的核心是一个 Emacs Lisp(Lisp 编程语言的一种方言)的解释器,这给予了它近乎变态的扩展性定制性
Emacs 有着“神之编辑器”和“伪装成操作系统的编辑器”的称号,功能的强大与灵活可想而知。

一、进入 emacs

直接在终端输入 emacs 命令即可进入 emacs 编辑器,该命令后面可跟一个或多个需要编辑的文件。
使用 --no--init-file-q 选项可以在启动时不使用任何初始配置文件( ~/.emacsdefault.el

GNU Emacs 默认界面

当然这个界面,看上去稍微有些年代感……
稍微修改一下启动配置文件(~/.emacs),内容如下:

; .emacs 界面配置
(setq default-frame-alist
    '((vertical-scroll-bars)
      (top . 25)
      (left . 45)
      (background-color . "black")
      (foreground-color . "grey")
      (cursor-color . "gold1")
      (tool-bar-lines . 0)
      (menu-bar-lines . 1)))
(set-default-font "Source Code Pro 16")
(setq inhibit-startup-message t)

修改后的效果:
自定义界面

二、退出 emacs

组合键定义:
C 表示 Ctrl 键,M 表示 Windows系统里的 alt 键和 MacOS 系统里的 option 键。

功能 快捷键 命令(按下 M-x 后输入)
挂起 emacs(在图形模式下:最小化/还原 C-z suspend-emacs(suspend-frame)
退出 emacs C-x C-c save-buffers-kill-terminal

三、文件操作

功能 快捷键 命令(按下 M-x 后输入)
读取文件内容到 emacs 中(打开文件) C-x C-f find-file
保存文件 C-x C-s save-buffer
保存所有文件 C-x s save-some-buffers
将另一个文件的内容插入到当前正在编辑的文件中 C-x i insert-file
关闭当前文件并打开另一个文件 C-x C-v find-alternate-file
将当前 buffer 中的内容写入到指定的文件(另存为) C-x C-w write-file
启用/关闭当前 buffer 的只读模式 C-x C-q read-only-mode

四、获取帮助

功能 快捷键 命令
新手指引 C-h t help-with-tutorial
显示匹配指定正则表达式的命令 C-h a apropos-command
显示绑定指定快捷键的函数的帮助信息 C-h k describe-key
显示指定函数(命令)的帮助信息 C-h f describe-function
显示 Mode 相关的信息 C-h m describe-mode

五、错误恢复

功能 快捷键 命令
中断正在输入或执行中的命令 C-g keyboard-quit
恢复由于系统崩溃未保存的文件 M-x recover-session recover-session
撤销不想要的操作 C-x u 或 C-_ 或 C-/ undo
将 buffer 恢复到初始状态 M-x revert-buffer revert-buffer

六、增量搜索

功能 快捷键 命令
向前搜索(向文档底部搜索) C-s isearch-repeat-forward
向后搜索(向文档顶部搜索) C-r isearch-repeat-backward
正则表达式搜索(向文档底部) C-M-s isearch-forward-regexp
正则表达式搜索(想文档顶部) C-M-r isearch-backward-regexp
中断当前搜索 C-g keyboard-quit

重复使用 C-sC-r 可以继续当前方向对同一关键字的搜索(即跳转到下一个匹配项)

七、Buffers

功能 快捷键 命令
列出所有的 Buffer 信息 C-x C-b list-buffers
切换到另一个 Buffer C-x b switch-to-buffer
关闭 Buffer C-x k kill-buffer

八、Shell 命令

功能 快捷键 命令
执行 Shell 命令 M-! shell-command
异步执行 Shell 命令 M-& async-shell-command
开启一个 *Shell* 窗口用于执行命令 M-x shell shell

九、移动

对象 方向向后(文档顶部) 方向向前(文档底部)
字符 C-b C-f
单词 M-b M-f
C-p C-n
跳转到行首(行尾) C-a C-e
句子 M-a M-e
段落 M-{ M-}
页面 C-x [ C-x ]
函数 C-M-a C-M-e
跳转到文档开头(结尾) M-< M->

十、跳转

功能 快捷键 命令
滚动到下(后)一屏 C-v scroll-up-command
滚动到上(前)一屏 M-v scroll-down-command
向左滚动屏幕 C-x < scroll-left
向右滚动屏幕 C-x > scroll-right
将当前行置于屏幕中央/顶部/底部 C-l recenter-top-bottom
跳转到指定行 M-g g goto-line
跳转到指定字符 M-g c goto-char

十一、选择

功能 快捷键 命令
在当前位置设置标记 C-@ set-mark-command
选中整个段落 M-h mark-paragrath
选中整个页面 C-x C-p mark-page
选中整个函数 C-M-h mark-defun
选中整个 Buffer C-x h mark-whole-buffer

十二、搜索替换

功能 快捷键 命令
以交互的方式检索并替换字符串 M-% query-replace
使用正则表达式检索替换 M-x query-replace-regexp query-replace-regexp
交换模式中的合法输入
替换当前匹配并跳转到下一个 SPACE 或 y
替换当前匹配后不做移动 ,
跳过当前匹配直接到下一个 DELETE 或 n
替换剩余的所有匹配项 !
跳转到上一个匹配项 ^
退出搜索替换模式 ENTER

十三、多窗口

功能 快捷键 命令
关闭其他所有窗口(只显示当前窗口) C-x 1 delete-other-windows
分割当前窗口(上下) C-x 2 split-window-below
关闭当前窗口 C-x 0 delete-window
分割当前窗口(左右) C-x 3 split-window-right
滚动另一个窗口的内容 C-M-v scroll-other-window
移动光标到另一个窗口 C-x o other-window
在另一个窗口打开文件 C-x 4 f find-file-other-window
在另一个窗口运行 Dired C-x 4 d dired-other-window
增大当前窗口高度 C-x ^ enlarge-window
缩减当前窗口宽度 C-x { shrink-window-horizontally
增大当前窗口宽度 C-x } enlarge-window-horizontally

十四、Minibuffer

功能 快捷键
尽可能补全 TAB
补全至一个完整单词 SPACE
补全并执行 ENTER
显示所有可能的补全结果 ?
获取上一个输入 M-p
获取下一个或默认输入 M-n
向后搜索输入历史(正则表达式) M-r
向前搜索输入历史(正则表达式) M-s
中断命令或输入 C-g

十五、简单定制

功能 按键
定义变量或外观 M-x customize
自定义全局按键映射(例子) (global-set-key (kbd "C-c g") 'search-forward)

参考资料 & 拓展阅读

Emacs Reference Cards
GNU Emacs manual
An Introduction to Programming in Emacs Lisp
Emacs Lisp Reference Manual

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 225,498评论 6 524
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,668评论 3 406
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 172,857评论 0 370
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,305评论 1 303
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,308评论 6 401
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,747评论 1 316
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,078评论 3 431
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 41,080评论 0 280
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,649评论 1 327
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,644评论 3 347
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,760评论 1 355
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,352评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,076评论 3 341
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,490评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,651评论 1 277
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,353评论 3 383
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,828评论 2 367

推荐阅读更多精彩内容