
ハイパーリンクを印刷したいRuby端末スクリプトがあります。これが私が実装した方法です。
puts("\e]8;;https://example.com\aThis is a link\e]8;;\a")
これは「General」ターミナルウィンドウでうまく機能します。
screen
ただし、エスケープシーケンスがまったく機能しないGNUでこのスクリプトを実行する必要があります。他のシーケンス(色など)はうまく機能しますが、ハイパーリンクシーケンス(ベース)源泉おそらくGNOME端末にしかないかもしれません。)いいえ。 (screen
GNOME端末で実行)
screen
リンク順序を確認して正しく表示するにはどうすればよいですか?
答え1
screen
テキストをペア(printf形式)内に配置して、端末自体で実行するテキストを渡すことができます。ESC P
ESC \
\033P%s\033\\
したがって、画面に表示されるテキスト()\eP..\e\\
を除くシーケンスのすべての部分を囲む必要があります。"This is a link"
printf '\eP\e]8;;https://example.com\a\e\\This is a link\eP\e]8;;\a\e\\\n'
printf '\eP\e]8;;%s\a\e\\%s\eP\e]8;;\a\e\\\n' https://example.com 'This is a link'
またはCで:
puts("\eP\e]8;;https://example.com\a\e\\This is a link\eP\e]8;;\a\e\\");
printf("\eP\e]8;;%s\a\e\\%s\eP\e]8;;\a\e\\\n", url, title);
代替テキストを内側に配置しすぎると、\eP..\e\\
画面上のカーソル位置を追跡できない場合があります。
これはGNU画面に記録されます手動:
ESC P (A) Device Control String
Outputs a string directly to the host
terminal without interpretation
「文字列」はST
(「文字列終端」)エスケープ文字で終わる必要があります。\e\\
-今から\eP..\e\\
。