![FreeBSD 上支持 24 位终端的 Emacs](https://linux22.com/image/152035/FreeBSD%20%E4%B8%8A%E6%94%AF%E6%8C%81%2024%20%E4%BD%8D%E7%BB%88%E7%AB%AF%E7%9A%84%20Emacs.png)
我试图在我的 FreeBSD 12 安装上的终端上启用 24 位支持(通过 SSH),但没有成功。
我尝试创建一个 terminfo 文件,其内容如下:
xterm-24bit|xterm with 24-bit direct color mode,
use=xterm-256color,
sitm=\E[3m,
ritm=\E[23m,
setb24=\E[48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
setf24=\E[38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
然后执行命令(安装ncurses后):
$ tic -x -o ~/.terminfo xterm-24bit.terminfo
但是当尝试运行 emacs 时,我得到:
emacs: Cannot open terminfo database file
因此,我尝试使用infocmp -Cr
生成 termcap 版本并更新了数据库运行:
# cap_mkdb /usr/share/misc/termcap
这几乎成功了,emacs 打开但只有黑白:(
我的终端确实支持 24 位颜色,并且我在其他 Linux 机器上通过 ssh 使用此模式。有人在 FreeBSD 上使用 24 位终端吗?
答案1
我已按照 @Rafael Gil 建议重新编译 emacs,但是,我已将 ports 集合用于 ncurses 和 emacs。为了那些可能仍在寻找此问题解决方案的人的利益,这对我有用:
- 像往常一样获取并提取端口集合
portsnap fetch extract
等 - 在
/usr/ports/devel/ncurses
手动编辑的 Makefile 中,第 23 行定义了CONFIGURE_ARGS
将硬编码更改--enable-termcap
为,--disable-termcap
因为这不是直接可配置的选项 make install
然后make clean
- 在没有 X11 的情况下使用
/usr/ports/editors/emacs
编译和安装的 emacs 使用make FLAVOR=nox install
thenmake clean
- 我发现有必要将编译好的xterm-24bit terminfo文件添加到共享中系统一,而不是用户主目录 - 包括 emacs 在内的实用程序在主目录中看不到定义。换句话说,我必须使用它在我的 FreeBSD 12.1 上
sudo tic -x -s xterm-24bit.terminfo
写入条目。/usr/local/share/misc/terminfo.db
- 为了启动它,我有一个别名,并且我已经使用与此问题顶部
env TERM=xterm-24bit emacsclient
相同的 terminfo 安装了相同的 terminfo 。tic
它可以工作,而且我现在拥有 24 位颜色,因此我可以通过 macOS 上的 iTerm 中的 ssh 在远程 FreeBSD shell 会话中使用日晒深色和浅色主题。
我想知道是否有一个更简单的解决方案来解决所有这些问题 - 我不喜欢在每次更新时都重新编译等等。任何评论或建议将不胜感激。顺便说一句,这都与这个 Github 问题与 Solarized 主题相关。
答案2
使用 --disable-termcap 重新编译 ncurses;然后直接从 tarball(而不是从 ports)重新编译 emacs,这按预期工作。谢谢@ThomasDickey 向我展示了一条可以遵循的道路:)