TmuxおよびZSHカスタムプロンプト:ウィンドウ名のバグ


43

ZSHプロンプトをoh-my-zshでカスタマイズして読みやすくし、リポジトリにいる場合はgitに関する情報を追加しました。

例:
bob@inf [~/docs] %
bob@inf [~/src/nicest] master %(gitリポジトリ内)

それはうまく機能しますがtmux、ウィンドウ名にいくつかのバグがあります。automatic-rename offウィンドウ名にtmuxを使用する最初の例では、意味のない値が表示されるため、無効にすることはできません(コマンドごとにウィンドウ名が変更されるだけで機能しません)~/docs

私はそれをどのように修正できるかわかりません、変更を加えることができますが、問題がどこにあるのか理解したい場合、zshプロンプトをそのままにしておきたいですか?

別の解決策はsettileこの回答から)コマンドを再定義することかもしれませんが、私はそれを正しい方法で行う方法がわかりません。

回答:


76

私はoh-my-zshを覗いて、疑わしい人物を見つけました。

TERM環境変数の値がscreenscreentmuxの両方で)で始まる場合、画面の端末制御シーケンスを使用して、ウィンドウの名前を

  • (シェルプロンプトを表示する直前)
    現在の作業ディレクトリの「チルダ圧縮」パスの一番左の部分(..最後の13文字または15文字未満の場合はパス全体)
  • (単にコマンドを開始する前に)
    程度ツーなる-runコマンドの最初の「言葉」(数えていないsshsudoといくつかの他)。

それはあなたのためにこのように働いているように聞こえます(あなた~/docsはそのディレクトリにいたときに名前が変更されたというあなたのウィンドウを言った)。この自動名前変更を無効にする場合は、DISABLE_AUTO_TITLEシェルパラメータをtrueに設定して、完全に無効にすることができます.zshrc

DISABLE_AUTO_TITLE=true

これを対話型シェルで設定すると、現在のウィンドウ名に空の文字列が表示されますが、そのシェルインスタンスの各プロンプトとコマンドの前に、oh-my-zshはウィンドウの更新を停止します(あなたの.zshrcすべての新しいシェルのインスタンスに影響します)。


4
これは完璧な答えです。正確で、有益で、簡潔で、要点まで。さらに、元の質問に答えるだけでなく、解決策も提供します(「問題はどこにあるのかを理解する」)。
dmondark

ありがとうありがとうありがとうありがとうありがとうありがとう
Jezenトーマス

.zshrcすべてのユーザーのファイルはどこにありますか?
andilabs

29

上記の答えはあなたに解決策を与えることを知っていますが、別の方法はこのオプションを〜/ .tmux.confに追加することです

set-option -g allow-rename off

これはtmuxにのみ影響するため、より優れたソリューションです。
ポールオリバー14年

この設定でも、join-paneに続いてbreak-paneを使用すると、ウィンドウ名がリセットされます:(
djsadinoff

6

.tmux.confで設定してもtmuxのウィンドウ名が変更されるという同じ問題に遭遇しました。

set-window-option -g automatic-rename off

クリスの答えに感謝します。tmuxウィンドウの名前は、変更後に自動的に変更されませんでした。

set -g default-terminal "screen-256color"

に:

set -g default-terminal "xterm-256color"

0

特定のウィンドウでのみ自動名前変更を無効にする場合は、次を使用できます。

 set -t [WINDOW_NUMBER] automatic-rename off

別のセッションの特定のウィンドウで自動名前変更を無効にします。

 set -t [SESSION]:[WINDOW_NUMBER] automatic-rename off
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.