Emacs Notes
随便记录一下自己的一些 emacs 配置。
系统是 linux,所以 windows 不一定适用。
Emacs 输入中文¶
请使用 Emacs 28 及以上版本。中文输入问题似乎已经在新版本中解决。请见 官方的记录 。
当前(2021.07) Arch 最新版本仍为 emacs 27,若想要使用 28 版本的除了自行编译以外,还可以使用 ArchLinuxCN 源安装 emacs-git 包。
按中文字词移动光标¶
Emacs 的 Alt-f 和 Alt-b 是很常见的移动光标的快捷键,分别是跳过一个词以及跳回上一个词的开始。但是这一点对于中文其实是不适用的——emacs 会把连在一起的中文字符全部看作一个词。利用一些分词手法我们可以让 emacs 也能够顺利找到中文的词的开头和结尾。
可见这里 https://github.com/kanglmf/emacs-chinese-word-segmentation
之后有空我再试着转述一遍。
把 emacs 弄成开机启动以及后台常驻¶
开启了上面说的中文分词后你大概会发现 emacs 的每次启动都卡顿一两秒。这不方便,我们可以让 emacs 开机启动并后台常驻,让分词不需要每次都初始化。
[Unit] Description=Emacs text editor Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/ [Service] Type=notify ExecStart=/usr/bin/emacs --fg-daemon ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)" Restart=on-failure [Install] WantedBy=default.target
将上面的配置保存到 ~/.config/systemd/user/emacs-zh.service 里,命令行开启:
$ systemctl --user daemon-reload $ systemctl --user start emacs-zh.service $ systemctl --user enable emacs-zh.service
再到 .bashrc 或者是 .zshrc 或者是你自己用的 shell 的配置文件里配置平时的 emacs 使用后台的 emacs,添加下面一行:
如果有什么启动器或者快捷方式之类的改过来:(如果只想要复制的话下图那句是 env LC_CTYPE=zh_CN.UTF-8 emacsclient -c %F
)

Emacsclient 固定初始窗口位置大小¶
来自 https://stackoverflow.com/a/11008029 以及 http://emacs.1067599.n8.nabble.com/Window-too-big-td370995.html 。这部分 license 是 CC BY-SA 3.0 。
(add-hook 'before-make-frame-hook #'(lambda () (add-to-list 'default-frame-alist '(user-position . t)) (add-to-list 'default-frame-alist '(user-size . t)) (add-to-list 'default-frame-alist '(left . 0)) (add-to-list 'default-frame-alist '(top . 0)) (add-to-list 'default-frame-alist '(height . 38)) (add-to-list 'default-frame-alist '(width . 96))))
Emacs 打开 SSH 另一头的文件¶
见 https://stackoverflow.com/a/20624538
简单来说就是 Ctrl+x Ctrl+f 打开的文件名可以是 SSH 另一头的文件,语法是:
例如:
Modes¶
Minor Mode¶
wc-mode¶
字数统计,在下方的 mode line 显示字数、词数等的统计。
请见 https://github.com/bnbeckwith/wc-mode
安装方法可以直接 M-x package-install wc-mode
。
用 M-x customize
查找 wc-mode
之后可以按网页里的 Modline string 来定制显示格式。因为没有对中文的优化,对于中文一般可以设置为 "WC[%tw/%tc]"
,显示效果是 WC[词数/字数] 。
输入特殊字符¶
可以 M-x set-input-method TeX
,设置了之后可以通过 TeX 的方法输入一些对应的 Unicode 字符。例如,(一口气)输入 \rightarrow
输入最后一个 w
之后整个会被替换成 →
,但是如果输入到一半发现打错了然后删了字符或是移动了光标,那就输入失败了。必须一口气连续不出错地输入完整的 TeX 命令才能成功替换。
并不是所有的 TeX 命令都有对应。
一些快捷(?)键¶
C-u
4
C-x Tab : 整体缩进选中部分 4 个空格,当然 4 可以改成其它数字(负数亦可)。
评论