Android termux 使用技巧笔记
本文原本是这篇文章中的一段,后来越写越长,就独立出来。
需要注意的是,本文的大环境是蓝牙键盘。
home 路径和 bashrc 的问题
Termux 环境不是一个完整的Linux环境, 它所有的文件是透明地放在/data/data/com.termux/files
下面的,cd ~
之后再pwd
就看到了。
相当一部分(实际上是默认情况下几乎全部).bashrc
一类的文件是放在~/../usr/etc
这里的, 可能原因是这玩意儿没有root
权限控制,很多自动脚本蹭一下发现/usr/etc
可以写就放进去了。
所以,排查一些.bashrc
相关的问题的时候要小心。
疑似与 zsh 的兼容性问题
这个问题其实不大但很烦,就是输入~
时的行为始终不太正常, 并且貌似是跨主环境和proot-distro
环境的,并且是一个间歇性问题。
具体表现为:
- 偶尔在
zsh
下键入~/
的时候,会弹出很多之前cd
过的以~
开头的路径; cd ~
的时候需要按两次回车,第一次无任何反馈,让你怀疑键盘坏了;再按一次回车,有一定概率光标下沉一行进入看似无响应状态,但实际上时需要再按一次回车;echo ~
的时候,输出两行,第一行看起来时空行,第二行才是home
路径
这三个问题很可能是同一个,就是~
路径的前面可能被插入了一个特殊字符,很可能是换行符。 一开始以为是 Termux 主环境下有个不正常的.bashrc
脚本的问题,但删除后依然时有发生。 将Arch
环境的终端换成fish
之后,fish
下是正常了, 但 Termux 主环境仍然间歇出现需要两次回车的问题。
如果有人遇到过,或者有想法,请联系解惑。
物理键盘和中文输入法的问题
关于中文输入,Termux 其实是有支持的,就是在屏幕底端的软键盘条左滑,底部会出现一个输入区。 这个地方理论上是一个普通文本框,可以输入任意文字,回车上屏。
可以通过手指点击,选择输入焦点在上面还是下面。 据我测试,激活系统输入法并且输入几个文字之后,完全可以把焦点转到上面的主屏幕区, 这时候输入中文依然有效,甚至可以把屏幕底端的输入条再滑回去换成软键盘, 都不影响中文输入和上屏。
但是!
以上都是对无键盘手机而言。 如果是带键盘的平板甚至有蓝牙键盘的手机(根据网上讨论),点击输入框是无法激活输入法的。 包括键盘上的输入法切换快捷键,都不管用,系统将一直保持在英文输入状态。
这个问题我一度认为无解,并引起了我的一番折腾,产出了这个带字体支持的ttyd
。 直到第二天我去搜索如何切换 Termux 的多个 Session, 发现可以从屏幕左侧边缘中间右滑打开一个 Session 操作面板。
如果你的机器开了手势导航,注意滑动的起始点接近屏幕边缘,但不要从屏幕外开始滑, 那就是导航手势了。这个起始点的操作和选择非常微妙,需要练习手感。 这也是不容易发现这个操作的一个原因。幸好是不太常用。
在写完本文之后的某一天,我发现上一段写的方法,其实有一个等效的快捷键: Alt + 左/右箭头,一个是打开面板,一个是关闭面板。
这个面板的底端,有两个按钮,一个是KEYBOARD
,可以在外界键盘状态下激活输入法 (还是需要首先手动把文字输入框滑出来),另外一个是NEW SESSION
,新建另一个 Session 的。
进入中文输入状态并且输入几个文字之后,中文输入法将保持激活状态,直到切出 Termux。 这个就不是问题了,现在的输入法都是可以用 Shift 键内部切换到英文输入状态的。
斜体字母的显示
ddd
斜体字符在 Termux 环境下有时会被截掉最右边那个字符的尾巴。 不是每一个,是一串字符的最后一个,例如上面三个d
,就最后一个d
的尾巴不见了, 变成小圈圈。这个只能解释为是 Termux 的渲染问题。
官方的 issue 里面有人询问,但最终没有结论, 只说有时候切换字体再换回来问题就好了。 这个似乎也与环境有关,比如有时候终端环境下都正常,但vim
环境下的斜体有问题。
这个太底层了,没啥好办法。能凑合就凑合, 忍不了的话可以看看我修改的带字体支持的ttyd
,
在 Termux 里面开一个ttyd
进程,然后用浏览器访问。
这个方案效果是最好的,也解决了浏览器和 Termux 两边工作的问题,但是需要额外折腾一下。
关于性能问题
不要觉得字符界面就省资源。neovim
在有些配置下很吃资源。
测试了nvchad和nvimdots两套配置, 结论是nvimdots
明显更吃资源(当然默认的高亮等也更激进一些)。
并且有一个很神奇的问题是,nvimdots
不打开欢迎屏幕的话则明显流畅的多, 也就是说nvim 文件名
比之nvim
然后使用NerdTree
去打开文件,消耗的CPU少得多。原因没去深究。 但即使是在比较快的方法下,nvimdots
也明显比nvchad
更慢。
平板的arm CPU,还是省着点用吧。测试环境是 Matepad Air 高通 888 12G 内存版。
Termux 的字体配置
有一些工具可以配置,但实际上非常简单。 就是直接用你喜欢的字体的ttf
文件去覆盖主环境的.termux/font.ttf
文件。
没有测如果卸载掉termux styling
软件的话,这个方法还好用不。但考虑到还有颜色主题的需求,就装着吧。
neovim 与系统剪贴板同步
neovim
是自带与 Termux 的剪贴板接口的,使用的话需要:
- 在 Android 中安装附带的APP:Termux-API
- 在 Termux 中安装两个包,
termux-clipboard-set
和termux-clipboard-get
- 如果是在主环境下运行
neovim
,应该已经能够自动同步了 - 如果是在
proot-distro
环境下使用,则不能使用--isolated
命令行选项, 这样,子系统是可以直接调用主环境的可执行文件的,才可以传递数据
关于虚拟 root 权限
还是由于没有真正的root
权限,proot-distro
模拟出来的系统只有有限的权限管理。
具体表现是,proot-distro
子系统中的根文件系统是不需要root
权限就可以写入的。 但比如运行pacman
这样的命令,是需要sudo
的,有时候删除一些文件也需要。 细节没去深究。
总之不会有真正的系统那么严密,小心着用吧。
关于 Alt 键
应该是由于要兼容Emacs
的原因,termux中左右Alt键的行为是不一致的。 左边的是正常的按键,右边则被映射成了一个奇怪的键。
似乎也不是Emacs
的按键。我这边的表现是, 右Alt加任何字母键的效果都是termux快捷菜单闪现再消失。 看不出来有啥用。
用左边的呗。