5

開発したいもの:2つ以上のフォントを同時に使用できる端末。シェル入力行に使用するフォントと、コマンド出力に使用するフォント。例えば:

user @ host $ ls / home
ユーザーuser1user2user3

理由:より読みやすい端末/シェル

方法:ここで問題が発生します。おそらく、シェルはいくつかの新しいエスケープシーケンスを生成する必要があります。また、端末はさまざまなフォントをロードし、それらのシーケンスを処理する必要があります。どこから始めれば?新しいエスケープシーケンスを定義する方法、標準はどこにありますか?

将来:誰かがこのプロジェクトに参加したいと思うかもしれませんか?

4

3 に答える 3

5

コントロール シーケンスの標準は、XTerm ソース コードの Xterm コントロール シーケンス ドキュメントctlseqs.msです。(オプションはUbuntu 12.04では壊れているようですが、コマンドでPDFに変換できます)。groff -ms -Tps ctlseqs.ms | ps2pdf - ctlseqs.pdf-ms

XTerm は、フォントを変更するための制御シーケンスを既にサポートしていますが、端末全体を一度に変更できます。シェルを開いxtermて入力します—</p>

echo -e "\033[?35h\033]50;#+1^G\033\\" # aka CSI ? 35 h OSC 50 ; #+1 BEL ST

端末全体のフォントが変更されます。この制御シーケンスは、実際には True-Type フォントの名前もサポートしています。21ページをご覧ください。

フォントのインライン変更をサポートするように既存の端末を変更したい場合は、まだ割り当てられていないほとんどの制御シーケンスを選択しctrlseqs.msて使用することができます。ただし、既存の機能の制御シーケンスに類似した新しい制御シーケンスを選択することをお勧めします。

次のステップは、既存の端末のソース コードを取得して、掘り下げを開始することです。現在使用している端末は何ですか?Konsoleまたはgnome-terminalのソース コードは、おそらく XTerm のソース コードよりも扱いやすいでしょう。

于 2012-11-16T18:40:41.833 に答える
1

フォントの交換には標準的な順序があります。

SGR 11

としても知られている

CSI 11m
ESC [ 11m

同様に

SGR 10

デフォルトのフォントに戻ります。

ただし、コメントされているように、実際にこれをサポートしている端末はほとんどありません。太字/下線/斜体など、他のレンダリング属性を使用した方がよいでしょう。イタリック体をサポートする端末は多くないことにも注意してください。

参考のため

SGR 1   = bold
SGR 4   = underline
SGR 3   = italics
于 2012-11-16T17:19:22.837 に答える
1

異なるフォント属性 (異なるフォントではない) だけで満足している場合は、zsh を使用すれば、独自の端末エミュレーターを作成せずに同様のものを実装することもできます。プロンプトの前後およびコマンド実行の前に、正しい端末属性 (斜体、太字、色など) を設定するための正しいエスケープ シーケンスを発行するようにシェルを設定するだけです。

Xterm を使用していて、プロンプトを太字にし、入力したコマンド ラインをイタリック体にし、コマンド出力を通常どおりにしたいとします。

次に、セットアップは次のようになります。

# bold is \e[1m and italics is \e[3m , \e[0m resets the attributes
PS1=$'\e[1m'$PS1$'\e[0;3m' # I assume you have set PS1 already
function reset-terminal-attributes { printf '\e[0m'; }
autoload add-zsh-hook
add-zsh-hook preexec reset-terminal-attributes
于 2016-03-15T03:18:51.807 に答える