Marvin's Blog【程式人生】

Ability will never catch up with the demand for it

20 Feb 2021

EMACS自带教程学习笔记

Emasc Tutorial

C-x C-c退出Emcas。C-V下滚。M-V回滚(没有M的话可以用ESC替代)。C-l刷屏,并且移动半屏位置。

C-p上一行;C-n下一行;C-b左移;C-f右移。M-fM-b按单词而不是字符进行左移或者右移。

C-a行首;C-e行尾;M-a句首;M-e句尾。

M-<移到页首,M->移到页尾。

可以使用方向键按位移动。可以尝试结合C或者M观察效果。

C-u num作为前缀可以开启循环模式。

执行C-g可以取消当前悬置命令,重新再来。

有一些命令默认是disalbed。比如C-x C-l。这些命令会触发一个确认,问你是否要执行,如果要,则敲空格。

C-x 1关闭其他窗口。

C-h k C-f可以上下分屏。

一些删除相关的命令:

  • <DEL>, delete
  • C-d, delete
  • M-<DEL>, kill
  • M-d, kill
  • C-k, kill
  • M-k, kill

C-<SPC>可以开启选择。对于选中的操作,可以执行比如C-w等操作。delete和kill是两个不同的概念。delete就是纯粹的删除,但是kill的内容可以重新插入。这个插入的操作叫做yank,对应的快捷键是C-yM-y

撤销的快捷键是C-/。等效的快捷键包括C-_以及C-x u

C-x C-f用来寻找一个文件。C-x C-s保存一个文件。C-x s会遍历未保存的缓冲,提示你保存。

EMACS的扩展命令格斯:

  • C-x 后面跟单个字符
  • M-x 后面跟长命令名

一个M-x的例子:M-x replace-string

emacs会周期性帮你保存文件。如果你的文件是hello.c,那么自动保存的文件内容会存在#hello.c#。这个临时文件在不需要的时候会自动删除。电脑崩溃的时候,emacs会提醒是否从临时文件恢复。也可以手动输入M-X recover-this-file来恢复。

emacs可以在不同模式切换。模式栏显示一些模式相关的状态信息。默认情况emacs执行的是fundamental-mode。通过M-x text-mode可以切换到文本模式。还有许多其他模式。通过C-h m可以查看当前模式的帮助。

模式分主辅。一个主模式可以搭配多个辅模式使用。比如使用M-x auto-fill-mode可以开启自动分行模式。

通过C-x f可以修改默认行宽(70)。C-u 2 0 C-x f)可以将行宽设为20。使用M-q重排段落。

通过C-s可以开始渐进式搜索。C-r类似,但是执行方向相反。

C-x 2可以将当前窗口上下一分为二。C-M-v或者ESC C-v可以滚动下面的窗口。C-x o将光标移到另外的窗口。通过C-x 4 C-f可以直接以另外的窗口打开文件。

emacs可以创建多个frame,其每个可以包含多个窗口,相关的菜单,滚动条,回显区域等等。在图形化的条件下,一个frame可以是一个图形的窗口。C-x 5 2创建一个新的frame。C-x 5 0关闭当前frame。

敲三次ESC,可以从recursive editing level返回。比如敲了M-x之后,可以敲三次ESC返回。在C-g不管用的情况下这个技巧会很有用。

可以用C-h来开启相关帮助,比如C-h ?可以打开一个新的帮助窗口。F1或者M-x help也能达到类似效果。通过C-h c可以获得最基本的帮助,例如C-h c C-pC-h k可以比C-h c获取更多信息。

其他好用的帮助命令:

  • C-h f提供对函数的帮助,例如C-h f previous-line
  • C-h v提供对变量的帮助
  • C-h a列举相关命令,比如C-h a file
  • C-h i查看info帮助
  • C-h r打开帮助文档

其他配置

禁止光标跳动

菜单Options->Blink Cursor去掉

(blink-cursor-mode 0)

改变字体

菜单Options->Set Default Font通过图形对话框改变字体。

通过M-x describe-font然后点击回车查看所设置的字体。示例输出:-outline-Consolas-normal-normal-normal-mono-24-*-*-*-c-*-iso8859-1

也可以在%appdata/.emacs.d/init.el中设置(set-default-font “Consolas 12”)

Windows下的配置文件

可以通过C-x C-f ~/.emacs直接打开,或者通过 C-h v user-init-file来查看其具体位置,默认在%appdata%\.emacs。参考Where can I find my .emacs file for Emacs running on Windows?

EMACS和EMACS Client的区别

参考https://www.emacswiki.org/emacs/EmacsClient,emacs每次打开一个新的emacs实例;而emacs client会重用既有实例。

模拟Vi

常见的有Viper,Evil以及Vile。这里以Evil为例。

先参考https://melpa.org/#/getting-started,添加下面内容:

(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
;; Comment/uncomment this line to enable MELPA Stable if desired.  See `package-archive-priorities`

;; and `package-pinned-packages`. Most users will not need or want to do this.

;;(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)

(package-initialize)

然后根据https://evil.readthedocs.io/en/latest/overview.html#installation-via-package-el,执行下列命令:

M-x package-refresh-contents
M-x package-install RET evil RET

其他参考

(本篇完)

2021-02-21更新

使用国内源

可以使用腾讯云的MELPA镜像https://mirrors.cloud.tencent.com/help/elpa.html,将下面的行加到(package-initialize)之前:

(setq package-archives '(("gnu"   . "http://mirrors.cloud.tencent.com/elpa/gnu/")
                         ("melpa" . "http://mirrors.cloud.tencent.com/elpa/melpa/")))

也可以使用清华的MELPA镜像https://mirrors.tuna.tsinghua.edu.cn/help/elpa/,将下面的行加到(package-initialize)之前:

(setq package-archives '(("gnu"   . "http://mirrors.tuna.tsinghua.edu.cn/elpa/gnu/")
                         ("melpa" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/melpa/")))

修正windows 10下的光标问题

;; Disable the system cursor caused by screen reader etc.
(setq w32-use-visible-system-caret nil)

参考Cannot change cursor type on Windows 10

(跟新完)

Categories

Tags