tiddlers: Emacs基础快捷键
This data as json
title | meta | text | revision |
---|---|---|---|
Emacs基础快捷键 | {"created": "20230529093321063", "creator": "root", "tags": ["Emacs"], "title": "Emacs\u57fa\u7840\u5feb\u6377\u952e", "modified": "20230529100258856", "modifier": "root", "type": "text/vnd.tiddlywiki"} | [[学习材料|https://zhuanlan.zhihu.com/p/403076883]] 要先说明 Emacs 的主体逻辑。与其它编辑器类似,Emacs 也是通过命令进行交互的。而所谓命令,就是 Emacs 中使用 Elisp 语言定义的一些函数。这些函数可以完成一些功能。例如,即使是最最简单的“将光标上移一行”,也对应着命令 previous-line 。一切操作都对应一个命令,而快捷键的本质是在调用这些命令。 对 Emacs 输入命令需要先按下 M-x,此时你会看到 Emacs 最下面的空行上出现了 "M-x ",然后等待你的输入,随后你便可以输入一个函数名。''M-x快捷键可以说是最重要的一个快捷键了,只要有它,即使你忘记了其它快捷键,也可以输入函数名进行调用。'' !! 快捷键 !!! 打开帮助 启动后可以看到这样的界面,可以看到其中有一个 "Emacs tutorial",本篇算是把该教程的内容梳理了一下,并稍加拓展,读者也可以同时去参考自带教程。可以通过输入 ``M-x help-with-tutorial-spec-language`` 来更改语言,输入 Chinese 就可以看到中文。 打开帮助还可以使用 ``C-h t`` (注意松开 ``Control`` 键和 ``h`` 键之后再按 ``t`` 键) !!! 退出 退出程序: ``C-x C-c``。 !!! 放弃 对于输了一半的命令,或者按了一部分快捷键但不想继续了,可以按下 ``C-g`` 放弃。此外在任何场合如果出现了卡住等情况,也都可以尝试输入 ``C-g`` 打断。 !!! 光标移动 由于方向键在键盘上处于非常偏的位置,按方向键时你的右手需要做移动,而按方向键又是常见操作,Emacs 认为这种程度的手部移动就已经在打断写代码的连贯性了。 于是,方向键上、下、左、右的快捷键是 ``C-p``、 ``C-n``、 ``C-b``、 ``C-f``。它们的英文含义分别是:previous(前)、next(后)、back(退)、forward(进)。一开始看的确很奇怪,但熟练之后确实方便顺手。 !!! 光标跳跃 * 以词为单位: ``M-b`` 光标向左移动一个词, ``M-f`` 光标向右移动一个词。 * 首尾: ** 行: ``C-a`` 光标移至行首, ``C-e`` 光标移至行尾。而代码经常是有缩进的,但 ``C-a`` 会直接移动到整个行首,并不能直接编辑开头的文字,这种情况可使用 ``M-m`` 来移动到文字的开头。不过这里只是介绍默认按键,笔者之后会直接推荐一个插件 ``mwim``,避免这个琐碎的小区别。 ** 句子: ``M-a`` 光标移至句首, ``M-e`` 光标移至句尾。 ** 整个文件: ``M-<`` 移动到文件开头, ``M->`` 移动到文件末尾。注意这里需要同时按下 ``Meta`` 键、 ``Shift`` 键和``逗号/句号``键。 * 窗口:``M-r`` 按第一次——光标移动到窗口中间行;接着按第二次——光标移动到窗口最上面一行;接着按第三次——光标移动到窗口最下面一行。 <<< 如果想增加一些趣味性,可以玩 Emacs 内的贪吃蛇游戏来锻炼对方向键的熟练度。按 ``M-` `` 调用 ``tmm-menubar`` ,按 ``t`` 选择 Tools,按 ``g`` 选择 Games,按 ``s`` 选择 Snake,然后开始游戏吧! <<< !!! 编辑操作 * 删除字符:删除一个字符与正常一样,按下删除键(在 Emacs 中删除键写为 ``<DEL>``或 ``<backspace>`` )即可删掉光标左侧的字符。如果想要删掉右侧的字符,就按下 ``C-d`` 键。 * 移除词:``M-d`` 移除光标右边一整个词。``M-<DEL>`` 移除光标左侧一整个词。 * 移除右侧直到句子结尾: ``M-k``。 * 移除右侧直到行结尾: ``C-k`` 。 * 选中部分区域(region):把光标移动到某处,按下 ``C-SPC`` ( ``SPC`` 表示空格键,space),此时 Emacs 最下方的空行显示 “Mark set“,表示当前打了一个标;接着任意移动光标到另一个位置,可以看到半透明的选择框。这就是和平日里使用鼠标进行选择是一样的。 * 复制: ``M-w`` 复制选中的区域。 * 移除: ``C-w`` 移除选中的区域。 “删除”和“移除“两种说法,”删除“对应于 "delete",是真的删除,而“移除”对应于 "kill",相当于“剪切”,之后可以再次插入到其它位置,即 "insert",相当于粘贴。 * 剪贴板历史:按下 ``C-y``,这被称为 "yank",它会将最近一次移除的内容插入回来。那么如何粘贴历史记录呢?在一次 "yank" 的基础上,再按 ``M-y`` ,就可以得到倒数第二次移除的内容,再按一次 ``M-y`` 即可得到倒数第三次移除的内容,以此类推。 * 撤销(undo): ``C-/`` 或 ``C-_`` 或 ``C-x u`` 。撤销刚刚的操作。对字符进行编辑例外,例如你按了 5 次删除键删除了 5 个字符,按一下撤销即可复原。 * 重做(redo):Emacs 对于历史记录也维护成了一个环。但 Emacs 并没有直接的重做操作,而是先按一下 ``C-g`` ,即没有操作,此时再按撤销键时,会撤销上次的“撤销”,相当于重做;也可以理解为按下 C-g 后这个环的移动方向会改变。所以 Emacs 其实不分 undo 和 redo,而是靠改变历史记录的移动方向来控制。 !!! 标记与跳转 Emacs 还有一个标记跳转功能,例如我们先在文本的第一行,按下两次 ``C-SPC``(这样我们即打了标记,又没有选中文本),然后光标移动到别的位置(甚至以后学过之后,到别的文件),这时候按下 ``C-x C-SPC`` 或 ``C-u C-SPC``,即可立刻跳转回刚刚的位置。 想要跳到特定的行,``M-g M-g`` 加行号、回车即可 。 !!! 重复操作 !!! 页面移动 !!! 搜索文本 !!! 其它小操作 !!! 获得帮助 | 4 |