Ssh

在 FreeBSD 上支持 24 位終端的 Emacs

  • February 17, 2020

我試圖在我的 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 installthenmake 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 主題有關

引用自:https://unix.stackexchange.com/questions/512845