オプション1:文字通りの解釈

オプション1:文字通りの解釈

SSHを介して接続しているシステムのリモートホストを抽出しようとしています。

tmuxの変数pane_titleは次のとおりです。

username@host: ~

ウィンドウの状態を次のように設定してみました。

:setw -g window-status-format ' #I:#{s/^.*@(.*):.*/\1/i:pane_title}'

しかし、これを行うと、ウィンドウの状態がこのように見えますが、1:tmuxが最初のコロンを誤って理解したのではありませんか?

:プレフィックスからaをエスケープする方法はありますか?

私はそれを逃げるためにバックスラッシュを使ってみました。

:setw -g window-status-format ' #I:#{s/^.*@(.*)\:.*/\1/i:pane_title}'

ただし、これはウィンドウの状態を変更しません。

$ tmux -V
tmux 3.2

答え1

オプション1:文字通りの解釈

「l」は、文字列を拡張せず、文字通り解釈する必要があることを指定します。たとえば、「#{l:#{?pane_in_mode,yes,no}}」は「#{?pane_in_mode,yes,no}」に置き換えられます。

したがって、フォーマット文字列は次のものを使用します#{l::}

:setw -g window-status-format ' #I:#{s/^.*@(.*)#{l::}.*/\1/i:pane_title}'

オプション2:ASCIIコードポイントの置き換え

'a'は数値引数を対応するASCII引数に置き換えるため、 '#{a:98}'の結果は 'b'です。

:はいASCII 0x3A/#58そのため、フォーマット文字列は次のものを使用します#{a:58}

:setw -g window-status-format ' #I:#{s/^.*@(.*)#{a:58}.*/\1/i:pane_title}'

関連情報