Emacs Docs


编辑模式(Edit mode)

主模式(major mode)

模式功能
基本模式(fundamental mode)默认模式,无特殊行为
文本模式(text mode)书写文字
邮件模式(mail mode)书写电子邮件
阅读电子邮件模式(RMAIL mode)阅读和组织电子邮件
只读模式(view mode)查看文件,不能编辑
shell 模式(shell mode)运行 shell 命令
FTP 模式(ange-ftp mode)查看远程系统上的文件
Telnet 模式(telnet mode)登录到远程系统
大纲模式(outline mode)书写大纲
缩进文本模式(indented text mode)自动缩进模式
图形模式(picture mode)绘制图形
Emacs LISP 模式(Emacs LISP mode)编辑emacs lisp代码
LISP 模式(LISP mode)编辑lisp代码
LISP 互动模式(LISP interaction mode)编辑和运行emacs lisp代码

副模式(minor mode)

模式功能
自动换行模式(auto-fill mode)打开文字自动换行模式
改写模式(overwrite mode)输入时替换字符
自动保存模式(auto-save-mode)文件按照一定时间自动保存
行号模式(line number mode)在状态行上显示文本行号
缩略词模式(abbrev mode)允许使用单词的简写形式
VC 模式(VC mode)在 Emacs 下使用版本控制系统

文件编辑(Edit file)

与文件操作有关的命令

键盘操作命令名称解释说明实现
C-x C-ffind-fileopen file查找文件并在一个新缓冲区打开
C-x C-vfind-alternate-file读入另一个文件替换掉用 “C-x C-f” 读入的文件
C-x iinsert-fileinsert file把文件插入到光标所在位置
C-x C-ssave-buffersave-buffer保存文件
C-x C-wwrite-filesave buffer as把缓冲区内容写入一个文件
C-x C-csave-buffers-kill-emacsexit emacs退出 Emacs

帮助相关命令

键盘操作命令名称功能
C-hhelp-commandhelp进入 Emacs 的在线帮助系统
C-h C-h 或 C-h ?help-for-help帮助命令手册
C-h fdescribe-function描述 “命令”描述 “指定命令” 的在线帮助信息
C-h kdescribe-key描述 “键”描述 “指定键” 的在线帮助信息
C-h thelp-with-tutorialemacs tutorial启动 Emacs 教程
C-h iinfo-goto-emacs-command-nodebrowse manual启动 Info 文档阅读器
C-h bdescribe-bindings当前编辑缓冲区有哪些按键绑定
C-h mdescribe-mode查看当前编辑缓冲区所在编辑模式的有关资料
C-h vdescribe-variable显示变量的含义
C-h wwhere-is显示命令的按键绑定
C-h lview-lossage列出最近输入的100个字符
C-h cdescribe-key-briefly显示按键组合键运行的命令

光标移动命令

键盘操作命令名称动作
C-fforward-char光标右移一个字符
C-bbackward-char光标左移一个字符
C-pprevious-line光标上移一行
C-nnext-line光标下移一行
M-fforward-word光标右移一个单词
M-bbackward-word光标左移一个单词
C-abeginning-of-line光标移到行首
C-eend-of-line光标移到行尾
M-eforward-sentence光标左移一个句子
M-abackward-sentence光标右移一个句子
M-}forward-paragraph光标右移一个段落
M-{backward-paragraph光标左移一个段落
C-vscroll-up屏幕上卷一屏
M-vscroll-down屏幕下卷一屏
C-x }forward-page光标右移一页
C-x {backward-page光标左移一页
M-<beginning-of-buffer光标左移到文件头
M->end-of-buffer光标右移到文件尾
goto-line光标前进到文件的第 [n] 行
goto-char光标前进到文件的第 [n] 个字符
C-lrecenter重新绘制画面,并将当前行放到画面中心处
M [n]digit-argument重复执行 [n] 次后续命令
C-u [n]universal-argument重复执行 [n] 次后续命令(省略 [n] 时 重复 4 次)

文本删除命令

键盘操作命令名称动作
C-ddelete-char删除光标所在位置的字符
DELdelete-backward-char删除光标左侧的字符
M-dkill-word删除光标右侧的单词
M-DELbackward-kill-word删除光标左侧的单词
C-kkill-line从光标位置删除到行尾
M-kkill-sentence删除光标右侧的句子
C-x DELbackward-kill-sentence删除光标左侧的句子
C-yyank恢复被删除的文本
C-wkill-region删除文本块
kill-paragraph删除光标右侧的段落
backward-kill-paragraph删除光标左侧的段落

文本块操作命令

键盘操作命令名称动作
C-@ 或 C-SPACEset-mark-command标记文本块的开始(或结束)位置
C-x C-xexchange-point-and-mark互换插入点和文本标记的位置
C-wkill-region删除文本块
C-yyank粘贴最近删除或复制的文本
M-wkill-ring-save复制文本块
M-hmark-paragraph标记段落
C-x C-pmark-page标记页面
C-x hmark-whole-buffer标记整个缓冲区
M-yyank-pop在用过 “C-y” 命令后粘贴更早删除的文本

位置交换命令

键盘操作命令名称动作
C-ttranspose-chars交换两个字符的位置
M-ttranspose-words交换两个单词的位置
C-x C-ttranspose-lines交换两个文本行的位置
transpose-sentences交换两个句子的位置
transpose-paragraphs交换两个段落的位置

字母大小写编辑命令

键盘操作命令名称动作
M-ccapitalize-word把单词的首字符改为大写
M-uupcase-word把单词的字符全部改为大写
M-ldowncase-word把单词的字符全部改为小写
M - M-cnegtive-argument; capitalize-word把前一个单词的首字符改为大写
M - M-unegtive-argument; upcase-word把前一个单词的字符全部改为大写
M - M-lnegtive-argument; downcase-word把前一个单词的字符全部改为小写

命令的中止和撤销

键盘操作命令名称动作
C-gkeyboard-quit放弃当前命令
C-x uadvertised-undo撤销上一次编辑
C-_ 或 C-/undo撤销上一次编辑
revert-buffer把缓冲区恢复到上次文件存盘状态

GNU Emacs Reference Card

./photo/GNU Emacs Reference Card.png

./photo/GNU Emacs Reference Card-version22.png

Dired 操作命令

键盘操作解释说明命令名称动作
C-x dOpen Directorydired启动 Dired
CCopy todired-do-copy复制文件
dFlagdired-flag-file-deletion给文件加上删除标记
DDeletedired-do-delete删除文件
eFind This Filedired-find-file编辑文件
fdired-advertised-find-file查找文件(并进行编辑)
gRevert Bufferrevert-buffer从磁盘上重新读入目录
GChang Groupdired-do-chgrp改变文件的组权限
kdired-do-kill-lines从画面上删除光标所在的那一行
mMarkdired-mark给文件加上 * 待操作标记
ndired-next-line移动到下一行
oFind in Other Windowdired-find-file-other-window在另一个窗口里查找文件,并移动到新窗口
C-oDisplay in Other Windowdired-display-file在另一个窗口里查找文件,不移动到新窗口
qdired-quit退出 Dired
Qdired-do-query-replace在有待操作标记的文件里对字符串进行查找-替换操作
RRename todired-do-rename重新命名文件
uUnmarkdired-unmark去掉待操作标记
vView This Filedired-view-file查看文件内容
xdired-do-flagged-delete删除有待删除标记”D”的文件
ZCompressdired-do-compress对文件进行压缩或解压缩操作
Unmark Alldired-unmark-all-files把文件上待操作标记移除
~Flag Backup Filesdired-flag-backup-files给备份文件加上待删除标记(去掉这些标记的命令是 “C-u ~”)
*Mark Executablesdired-mark-executables给可执行文件加上 * 标记(去掉这些标记的命令是 “C-u *”)
#Flag auto-save Filesdired-flag-auto-save-files给自动保存文件加上待删除标记(去掉这些标记的命令是 “C-u #”)
`Mark Old Backupsdired-clean-directory给带编号的备份文件加上待删除标记
/Mark Directoriesdired-mark-directories给目录加上 * 标记(去掉这些标记的命令是 “C-u /”)
=Diffdired-diff把当前文件与(文本标记处的)另一个文件进行比较
Compare With Backupdired-backup-diff把当前文件与它的备份文件进行比较
!Shell commanddired-do-shell-command执行shell命令(命令的操作对象是有待操作标记的文件)
Next Markeddired-next-marked-file移动到有 * 或 D 标记的下一个文件
Previous Markeddired-prev-marked-file移动到有 * 或 D 标记的上一个文件
%dRegexp Flagdired-flag-files-regexp给匹配此正则表达式的文件加上待删除标记
%mRegexp Flagdired-mark-files-regexp给匹配此正则表达式的文件加上待操作标记
+Create Directorydired-create-directory新建目录
>Next Dirlinedired-next-dirline移动到下一个目录
<Prev Dirlinedired-prev-dirline移动到上一个目录
sdired-sort-toggle-or-edit对Dired编辑缓冲区里的文件清单按日期或文件名重新排序
U取消所有标记
^移动到上一层目录

日历移动命令

键盘操作解释说明命令名称动作
.Todaycalendar-goto-today移动到今天的日期
C-fcalendar-forward-day向前移动一天
C-bcalendar-backward-day向后移动一天
C-ncalendar-forward-week向前移动一周
C-pcalendar-backward-week向后移动一周
M-}calendar-forward-month向前移动一个月
M-{calendar-backward-month向后移动一个月
C-x ]calendar-forward-year向前移动一年
C-x [calendar-backward-year向后移动一年
C-aBeginning of Weekcalendar-beginning-of-week移到本星期开始
C-eEndo of Weekcalendar-end-of-week移到本星期结束
M-aBeginning of Monthcalendar-beginning-of-month移到本月开始
M-eEnd of Monthcalendar-end-of-month移到本月结束
M-<Beginning of Yearcalendar-beginning-of-year移到本年开始
M->End of Yearcalendar-end-of-year移到本年结束
C-u nuniversal-argument重复执行随后命令n次
ocalendar-other-month把制定月份放在日历
C-x <Forward 1 Monthscroll-calendar-left前卷一个月
C-x >Backward 1 Monthscroll-calendar-right后卷一个月

大纲模式命令

键盘操作命令名称动作
C-c C-noutline-next-visible-heading移动到下一个标题
C-c C-poutline-previous-visible-heading移动到上一个标题
C-c C-foutline-forward-same-level移动到下一个同级标题
C-c C-boutline-backward-same-level移动到上一个同级标题
C-c C-uoutline-up-heading移动到上一级的标题
C-c C-thide-body隐藏全体正文行
C-c C-dhide-subtree隐藏某标题的下级标题及正文
hide-entry隐藏某标题的正文部分(不包括下级标题和正文)
C-c C-lhide-leaves隐藏某标题的正文部分,同时隐藏下级标题和正文
C-c C-ashow-all显示所有内容
C-c C-sshow-subtree显示某标题的下级标题和正文
show-entry显示某标题的文本(包括下级标题和正文)
C-c C-kshow-branches显示当前标题的正文及所有下级标题的正文
C-c C-ishow-children显示当前标题的下一级标题(不包括正文)

单词简写模式命令

键盘操作命令名称动作
abbrev-mode进入(或退出)单词简写模式
define-global-abbrev RET abbrev RET exp RET定义一个全局简写词(先输入简写词,后输入短语)
write-abbrev-file保存简写词汇表文件
edit-abbrevs编辑简写词汇表
list-abbrevs查看简写词汇表
kill-all-abbrevs本次编辑工作禁用单词简写模式

查找字符串命令

键盘操作命令名称动作
C-sisearch-forward向下递增查找
C-risearch-backward向上递增查找
C-gkeyboard-quit取消递增查找操作
C-s C-w把光标位置处的单词用作查找字符串
C-s M-y把删除环中的文本用作查找字符串
- 查找字符串时区分大小写(默认不区分大小写): 
    `M-x set-variable RETURN case-fold-search RETURN nil`

替换字符串命令

键盘操作命令名称动作
M-%query-replace开始 查询-替换 操作
C-M-%query-replace-regexp开始 正则查询-替换 操作
SPACE 或 y用新字符串替换查询字符串,并前进到下一个位置
DEL 或 n不替换;前进到下一个位置
.在当前位置做替换后退出
,替换并显示替换情况(再次按 SPACE或y 移动到下一个位置)
!对后面的内容全部替换,不再询问
^返回上一次替换的位置
q退出替换操作
- 替换时不改变大小写情况:
  `M-x set-variable RETURN case-replace RETURN nil`

宏命令

键盘操作命令名称动作
C-x (start-kbd-macro开始录制一个宏
C-x )end-kbd-macro结束录制宏
C-x ecall-last-kbd-macro执行最近一次录制的宏

窗口操作

键盘操作命令名称动作
C-x 1delete-other-windows关闭所有窗口,只保留当前窗口
C-x 0delte-window关闭当前窗口
C-x 2split-window-vertically把当前窗口分割为上、下两个窗口
C-x oother-frame移动到其它窗口

编辑缓冲区命令

键盘操作命令名称解释说明动作
C-x bswitch-to-buffer移动到指定编辑缓冲区
C-x C-blist-bufferList All Buffers显示所有编辑缓冲区
C-x kkill-bufferKill Current Buffer删除当前编辑缓冲区
kill-some-buffers以问答方式删除各个编辑缓冲区
C-x ssave-some-buffers以问答方式保存修改过的编辑缓冲区

编辑缓冲区操作命令

键盘操作动作执行情况
C-x n 或 SPACE移动到下一个编辑缓冲区立即执行
C-p移动到上一个编辑缓冲区立即执行
d 或 k给编辑缓冲区加上待删除标记按”x”键时执行
s给编辑缓冲区加上存盘标记按”x”键时执行
u移除编辑缓冲区的操作标记立即执行
x对所有带有操作标记的编辑缓冲区执行相应的操作立即执行
DEL移除上一个编辑缓冲区的操作标记立即执行
%转换编辑缓冲区的只读状态立即执行
f显示当前编辑缓冲区的内容立即执行
q退出立即执行

书签命令

键盘操作解释说明命令名称动作
C-x r mSet Bookmarkbookmark-set设置一个书签
C-x r bJump to Bookmarkbookmark-jump跳转到书签
Rename Bookmarkbookmark-rename重命名书签
Delete Bookmarkbookmark-delete删除书签
Savebookmark-save保存书签
C-x r lEdit Bookmark Listbookmark-menu-list编辑缓冲区
Insert Contentbookmark-insert把书签文件中的文本插入到指定光标位置上
writebookmark-write把书签保存到指定文件中

书签编辑命令

命令动作
d给书签加上待删除标记
r书签重命名
s保存清单里的全部书签
f显示当前书签
m给书签加上待显示标记
v显示有待显示标记的书签;如果没有,显示当前书签
t切换书签关联文件路径的显示/不显示
w显示书签关联文件的路径
x删除有待删除标记的书签
u移除书签的待操作标记
DEL移除上一行书签的待操作标记
q退出

neotree 命令

键盘操作命令名称动作
neotree-toggle显示/隐藏 neotree
neotree-show显示 neotree
neotree-hide隐藏 neotree
neotree-dir显示 neotree, root 为当前文件所在目录
Aneotree-stretch-toggle最大化/最小化 neotree 窗口
Hneotree-hidden-file-toggle切换显示隐藏文件
gneotree-refresh刷新目录
n 或 C-nneotree-next-line下一行
p 或 C-pneotree-previous-line上一行
SPACE 或 Tab 或 Enterneotree-quick-look若是文件,在其它buffer打开;若是目录,展开/收起目录
C-c C-nneotree-create-node创建文件
C-c C-dneotree-delete-node删除文件/目录
C-d C-rneotree-rename-node重命名文件/目录
C-c C-cneotree-change-root改变根目录

对 Emacs 进行定制

Tips

  • 通过emacs -q 启动emacs不会读取.emacs文件配置

Emacs 配置

use-package

  • 常用格式
(use-package package-name
             :ensure t ; 是否一定要确保已安装
             :defer t ; 是否要延迟加载
             :init (setq ...) ; 初始化配置
             :config (...) ; 初始化后的基本配置参数
             :bind (...) ; 快捷键绑定
             :hook (...) ; hook的绑定)
  • 建议添加的配置
;; `use-package-always-ensure` 避免每个软件包都加 ":ensure t"
;; `use-package-always-defer` 避免每个软件包都加 ":defer t"

(setq use-package-always-ensure t
      use-package-always-defer t
      use-package-enable-imenu-support t
      use-package-expand-minimally t)
  • 操作系统判断
(defconst *is-mac* (eq system-type 'darwin))
(defconst *is-linux* (eq system-type 'gnu/linux))
(defconst *is-windows* (or (eq system-type 'ms-dos) (eq system-type 'windows-nt)))
  • 用 y/n 代替 yes/no
(defalias 'yes-or-no-p 'y-or-n-p)

Emacs 阅读推荐


浙ICP备17060547号-1