Emacs on Android

2024-07-01 · [All posts]

Emacs 已经有了安卓版,可以从Sourceforge下载,README 提供了一些常见问题的解答。本文是我遇到的另外一些问题以及解决方法。

配置文件

安卓版 Emacs 启用的配置文件夹 .emacd.d 位于其私有目录 /data/data/org.gnu.emacs/files ,其他应用无法打开,并且卸载应用时其下所有文件也会一并删除。这非常不利于对其进行管理,毕竟在安装后,Emacser 首先启用的总是自己精心维护的配置文件。不过这个问题可以用软链接的方式解决。

首先授权给 Emacs 文件管理权限: M-x android-request-storage-access 。之后进入控制台: M-x shell 。这时所在的目录应该为 /data/data/org.gnu.emacs/files

  cd /data/data/org.gnu.emacs/files
  rm -rf .emacs.d  # 删除自动生成的配置文件目录
  ln -s /storage/emulated/0/emacs/.emacs.d .emacs.d  # 生成软链接

这里假设配置文件位于设备的外部目录 emacs/.emacs.d ,其中 emacs 是 Android与DCIM 的同级目录。这样一来就可以用外部应用比如 Termux 管理 Emacs 的配置文件了。事实上,安卓版 Emacs 还提供了一个与 Termux 联动的版本,README 提供了具体做法。

中文字体

安装后一般无法显示中文,解决方法是下载字体文件,解压后放入文件夹 /data/data/org.gnu.emacs/files/fonts ,这也可以用软链接解决,比如:

  ln -s /storage/emulated/0/emacs/fonts fonts

之后重启Emacs即可。

中文输入

在使用蓝牙键盘时,发现一些输入法比如 Fcitx5 无法输入中文,只能在虚拟键盘展开时输入。这其实也是 Termux 存在的问题。

在使用 I-search 时,同样无法输入中文,这时可以按下 C-\ 启用拼符模式,默认是中文全拼,再次按下 C-\ 以关闭。

字体大小

如果在安卓端字体显示过小,可以用 (set-face-attribute 'default nil :height 180) 调整,单位为像素。

Git

打开由 Git 管理的文件时,Emacs (非Termux版) 可能会报错 Error: (file-missing "Searching for program" "No such file or directory" "git") ,可以用 (delete 'Git vc-handled-backends) 解决,当然,这条配置只需要在缺少 Git 的安卓端启用。

区分系统

对于仅适用于安卓端的配置,可以用下面的命令以有选择地启用:

  (if (eq system-type 'Android)
    (load-file "~/.emacs.d/init-android.el"))  ;; 假设它们位于 .emacs.d/init-android.el 文件中