emacs 速查手册

作者: rollingstarky | 来源:发表于2018-06-29 03:49 被阅读18次

    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

    相关文章

      网友评论

        本文标题:emacs 速查手册

        本文链接:https://www.haomeiwen.com/subject/gnbteftx.html