怎么使用原生 Android 版本的 Emacs: Difference between revisions
Line 93: | Line 93: | ||
== 待办 == | == 待办 == | ||
=== 工作目录 === | |||
怎样让工作目录为 /storage/sdcard0/Emacs,而且 Find File 时还不搞这么一长串地址,简洁但不覆盖 ~,用别的表示? | |||
=== 地址简化 === | |||
我的安卓平板里安装了 Emacs 安卓版,从 FDroid 下载的官方版本。我用 (setq initial-buffer-choice (lambda () (dired "/storage/sdcard0/Emacs/"))) 使 Emacs 每次启动时自动打开 /storage/sdcard0/Emacs/ 这个目录。然后我新建文件时,总看到: | |||
Find file: /storage/sdcard0/Emacs/ | Find file: /storage/sdcard0/Emacs/ | ||
Revision as of 14:19, 2 October 2025
原生安卓版本的 Emacs,令安卓上的编程出现了很大的想象力。或许未来,在安卓上编程,会成为更方便的事情。以前,大家都绕道,用 Termux 安装 Emacs,终究是隔了一层。现在,gnu 本身发布了原生安卓版本的 Emacs,可以从 FDroid 分流下载。但是安装后,你会发现你遇到了重重难题。
不迷路
怎么让自己不迷路,知道自己在哪里?
# 查看 HOME 环境变量
M-: (getenv "HOME")
# 示例输出:"/data/data/org.gnu.emacs/files"
# 查看 ~ 的展开路径
M-: (expand-file-name "~")
# 示例输出:"/data/data/org.gnu.emacs/files"
# 查看工作起始目录
M-: default-directory
# 示例输出:"~/"
# M-: 运行命令
# 注意 default 别写成 defualt
# 评估变量不用括号
# 调用函数要括号
# 输出就算一样,也是各有所用,并不重复
# 可以单独设置
文件夹
怎么让安卓版本的 Emacs 访问你的安卓里的文件夹呢?
# 授予管理所有文件的权限
M-x android-request-storage-access
# 授予管理某个文件夹的权限
M-x android-request-directory-access
字体
怎么让原生安卓版本的 Emacs 识别并正常显示中文字体,而不是 16 进制的字符块呢?
首先,去下载某个字体。
其次,把它复制进原生安卓版本的 Emacs 的私有目录下的 fonts 文件夹。
M-x copy-file RET /sdcard/Downloads/NotoSansSC-Regular.ttf RET ~/fonts/NotoSansSC-Regular.ttf RET
再次,验证 Emacs 是否看到了你复制进去的字体。
(insert
"\n"
(mapconcat
#'identity
(seq-filter (lambda (font)
(or (string-match-p "SC" font)
(string-match-p "wqy" font)
(string-match-p "WenQuanYi" font)))
(font-family-list))
"\n")
"\n")
最后,在 ~/.emacs.d/init.el 里调用该字体。
(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8-unix)
(set-language-environment "UTF-8")
;; 因为屏幕素质不同,字体设计时字高不同,emacs 也不一定按屏幕真实 DPI 来渲染
;; 所以追求数学上相近的比如都 30pt 没用
;; 得看不同屏幕上的实际观感来确定中英文的不同 pt
(set-face-attribute 'default nil :height 240) ;; 单位 1/10 pt
(set-fontset-font t 'han (font-spec :family "Noto Sans SC" :size 40)) ;; 单位 1 pt
美化
(setq inhibit-startup-message t)
(setq make-backup-files nil) ;; 禁止生成 xxx~
(setq auto-save-default nil) ;; 禁止生成 #xxx#
(setq create-lockfiles nil)
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
(load-theme 'adwaita t)
(setq suggest-key-bindings 10) ;十秒后建议才消失
(add-hook 'dired-mode-hook 'dired-hide-details-mode t)
(defalias 'yes-or-no-p 'y-or-n-p)
(setq initial-buffer-choice (lambda () (dired "/storage/sdcard0/Emacs/")))
待办
工作目录
怎样让工作目录为 /storage/sdcard0/Emacs,而且 Find File 时还不搞这么一长串地址,简洁但不覆盖 ~,用别的表示?
地址简化
我的安卓平板里安装了 Emacs 安卓版,从 FDroid 下载的官方版本。我用 (setq initial-buffer-choice (lambda () (dired "/storage/sdcard0/Emacs/"))) 使 Emacs 每次启动时自动打开 /storage/sdcard0/Emacs/ 这个目录。然后我新建文件时,总看到: Find file: /storage/sdcard0/Emacs/
怎么样把 Find file: 【/storage/sdcard0/Emacs/】我用大括号括起来这一截地址,变得短一点,少占用一点屏幕宽度,毕竟平板屏幕不够宽
我想象的是设置一个代替字,例如: Find file: Find file: ~/sdcard/
这样简短多了,我一看就知道在往手机内存里写文件