对比 Android-native Emacs 和 Termux中安装的emacs

刚开始尝试在安卓上使用emacs,想请教现有的两个方案的区别是什么,各自有何优势?

目前的初步体验如下:


Termux中安装的emacs

  1. 安装方式:直接在termux中 pkg install emacs
  2. 配置方式:因为termux环境中有emacs,所以可以使用doom-emacs配置
  3. 运行方式:打开termux-输入emacs并回车

Android-native Emacs

  1. 安装方式:为了可以使用 Termux 来安装 GNU/Linux 应用程序,并在 Emacs 中运行这些应用,需要按照特定的顺序安装特定的版本Emacs 和 termux,并设置early-init.el。详见 Android ports for GNU Emacs - Browse Files at SourceForge.net
  2. 配置方式:因为emacs是独立的app,无法使用doom-emacs配置
  3. 运行方式:像传统app一样运行

现在刚装完Android-native Emacs ,意识到貌似没办法用doom-emacs配置。想请教:

  1. 有没有办法让Android-native Emacs用doom-emacs配置呢?我能不能找到emacs等bin链接到termux中呢?
  2. Android-native Emacs 相比 termux 中的emacs有什么额外优势?

个人桌面端用的是doom-emacs,如果Android-native Emacs确实没办法用doom-emacs,而且相比 termux 中的emacs 没有什么特别突出的优势,个人可能就先在termux中用着了。

也欢迎大家推荐可以较好兼容桌面端和安卓端的配置方案。

水木有人提到过android-native emacs的.emacs.d及init.el路径,可以参考试试看 https://att.newsmth.net/nForum/#!article/Emacs/121805

我没有试过,目前在termux里用用也可以了,手机上基本只用orgzly看看org文档,或小改改,开emacs的需求不大

显而易见,一个是 GUI 一个是 TUI。如果 TUI 已经可以满足你,那就直接在 termux 下用就好了。

1 个赞

安卓 Emacs 是 GUI,不仅支持 GUI,还可以访问安卓应用提供的 “documents provider“,比如 Nextcloud 等等,也支持直接使用安卓输入法的用词矫正等功能。

此外,Emacs 二进制的位置说明书和 FAQ 中都有解说,无法想象为何还有人无法安装 Doom 等软件。

Emacs 二进制是 `libandroid-emacs.so’,位于 /data/data/org.gnu.emacs/lib,直接调用 “emacs” 不可能打开!

1 个赞

感谢指出大方向,桌面端直接brew安装了,之前没太了解TUI和GUI的区别🤦🏻‍♀️

简单了解了下,TUI图形功能有限制,看来要想在org-mode中显示图片还是得上GUI

试过ln映射 libandroid-emacs.so 为 emacs,但是无效。

所以您说的“无法想象为何还有人无法安装 Doom 等软件”是指,安卓上的 libandroid-emacs.so 和 桌面端的emacs并不等同,因此在安卓 Emacs使用doom-emacs无法实现么?

orgzly对我来说最大的局限是图片显示不正常,虽然我看到 这里 说支持图片的显示,但是类似于 [[file:imgs/Min-Zhu-Zhu-Yi-Yu-Jiao-Yu---John-Dewey-annot-11-0.png]] 在桌面端可以正常显示的图片在orgzly无法以图片的形式展示。

您能正常显示图片么?

好奇老铁是在什么设备上用Emacs?什么场景下用?

你是在哪个目录中用 ln 建立链接的? 另外,libandroid-emacs.so 必须从 Emacs 内部运行,不能使用 Termux 的终端应用。

orgzly支持图片,这个就没指望过~

我的最终目标就是希望让android emacs使用doom emacs,因此需要能同时正常访问doom和emacs。

一开始,我尝试在termux中建立指向emacs的链接,以便doom install正常运行:

ln -s /data/data/org.gnu.emacs/lib/libandroid-emacs.so /data/data/com.termux/files/usr/bin/emacs

失败,看来原因就是你说的libandroid-emacs.so 必须从 Emacs 内部运行。

于是,又尝试在emacs M-x shell中建立指向emacs的链接,但是这次又无法访问doom:

:/data/data/org.gnu.emacs/files/.emacs.d.doom/bin $ ls
ls
doom  doom.cmd	doomscript  org-capture  org-tangle
:/data/data/org.gnu.emacs/files/.emacs.d.doom/bin $ doom install
doom install
/system/bin/sh: doom: inaccessible or not found

貌似支持了,但是我没有成功

三星galaxy tab s8+,12.4 的设备,目前计划主要是移动端写作和笔记。

笔记方面,orgzly我没有办法显示图片,Logseq的性能欠佳,解析大文件太卡顿。 写作方面,需要参考已有的笔记等资料,所以纯粹的写作软件不适合我。

GUI版无法弹出键盘的问题有解决方案吗? touch-screen-display-keyboard 的设置不起作用

这里不是应该运行 ./doom install 吗? doom 中的 shebang 可能也需要调整一下。

touch-screen-display-keyboard 具体怎么不起作用?

(setq touch-screen-display-keyboard t) 这样设置之后点击GUI版启动之后的scratch,仍旧无法弹出键盘。 我用的是unexpected keyboard

点击的是 scratch 还是 *GNU Emacs* 启动界面?

我关注更多的是应用层,底层所知不多,抱歉可能会问一些蠢问题。

不管是doom, ./doom,或者是绝对路径在emacs的shell中执行都提示找不到:

:/data/data/org.gnu.emacs/files/.emacs.d.doom/bin $ ls
ls
doom  doom.cmd	doomscript  org-capture  org-tangle
:/data/data/org.gnu.emacs/files/.emacs.d.doom/bin $ ./doom install
./doom install
/system/bin/sh: ./doom: No such file or directory
126|:/data/data/org.gnu.emacs/files/.emacs.d.doom/bin $ doom
doom
/system/bin/sh: /data/data/com.termux/files/usr/bin/doom: No such file or directory
:/data/data/org.gnu.emacs/files/.emacs.d.doom/bin $ /data/data/org.gnu.emacs/files/.emacs.d.doom/bin/doom
/data/data/org.gnu.emacs/files/.emacs.d.doom/bin/doom
/system/bin/sh: /data/data/org.gnu.emacs/files/.emacs.d.doom/bin/doom: No such file or directory

但是ls看是有的,这让我很困惑。 在termux中运行doom提示找不到emacs,这意味着至少doom是能正常找到的。而在emacs中,libandroid-emacs.so映射的emacs可以执行:

:/data/data/org.gnu.emacs/files/.emacs.d.doom/bin $ emacs --version
emacs --version
GNU Emacs 30.0.50
Copyright (C) 2024 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GNU Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

termux安装的工具链也可以在emacs中调用

:/data/data/org.gnu.emacs/files/.emacs.d.doom/bin $ which git
which git
/data/data/com.termux/files/usr/bin/git

但就是找不到doom……

另外,termux安装的工具链有的能用,有的不能,例如mpv就会报错:

CANNOT LINK EXECUTABLE "mpv": cannot locate symbol "_Z17createHeifDecoderv" referenced by "/system/lib64/libhwui.so"

安卓Emacs感觉挺底层的,只是读了安装说明还不够,确实需要研究一下manual 中android的部分🤦🏻‍♀️

:/data/data/org.gnu.emacs/files/.emacs.d.doom/bin $ emacs --version
emacs --version
GNU Emacs 30.0.50
Copyright (C) 2024 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GNU Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

./doom 可能需要调整其中的 shebang,将:

#!/usr/bin/env sh

改变为

#!/system/bin/sh

CANNOT LINK EXECUTABLE "mpv": cannot locate symbol "_Z17createHeifDecoderv" referenced by "/system/lib64/libhwui.so"

可能需要去除 .emacs 中的 (setenv "LD_LIBRARY_PATH…

1 个赞