GNU画面で端末エスケープシーケンスを使用する

GNU画面で端末エスケープシーケンスを使用する

ハイパーリンクを印刷したいRuby端末スクリプトがあります。これが私が実装した方法です。

puts("\e]8;;https://example.com\aThis is a link\e]8;;\a")

これは「General」ターミナルウィンドウでうまく機能します。

screenただし、エスケープシーケンスがまったく機能しないGNUでこのスクリプトを実行する必要があります。他のシーケンス(色など)はうまく機能しますが、ハイパーリンクシーケンス(ベース)源泉おそらくGNOME端末にしかないかもしれません。)いいえ。 (screenGNOME端末で実行)

screenリンク順序を確認して正しく表示するにはどうすればよいですか?

ベストアンサー1

screenテキストをペア(printf形式)内に配置して、端末自体で実行するテキストを渡すことができます。ESC PESC \\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\\

おすすめ記事