Ssh
在 FreeBSD 上支持 24 位終端的 Emacs
我試圖在我的 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 位終端嗎?
使用 –disable-termcap 重新編譯 ncurses;然後直接從 tarball(而不是從埠)重新編譯 emacs 按預期工作。謝謝,@ThomasDickey 向我展示了一條可以遵循的路徑 :)
我已按照@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-24 位 terminfo 文件添加到共享系統之一,而不是使用者主目錄——包括 emacs 在內的實用程序在主目錄中看不到定義。換句話說,我必須使用which在我的 FreeBSD 12.1 上
sudo tic -x -s xterm-24bit.terminfo
寫入條目。/usr/local/share/misc/terminfo.db
- 要啟動它,我有一個別名
env TERM=xterm-24bit emacsclient
,並且我已經安裝了與tic
此問題頂部相同的 terminfo 。它可以工作,而且我現在有 24 位顏色,因此我可以通過 macOS 上 iTerm 的 ssh 在遠端 FreeBSD shell 會話中使用 solarized-dark 和 light 主題。
我想知道是否有更簡單的解決方案來解決所有這些問題——我不喜歡在每次更新等時重新編譯它。任何意見或建議將不勝感激。順便說一句,這都與這個 Github issue 相關的 solarized 主題有關。