vimで編集されたファイルの名前でtmuxタブにラベルを付ける方法は?


14

ターミナルでtmuxセッションを開くたびに、vimセッションを含むすべてのタブにラベルが付けられvimます。

私の質問は:tmuxタブに、編集したファイルの名前またはvim | test.cpp問題のタブのタイトルとして使用されているものなどのラベルを付けるように設定する方法です。


1
これは役立ちます:stackoverflow.com/a/15124717/2558252
-nobe4

これに感謝しますが、プロセスを少し詳しく説明していただけますか?さらに、答えは完全ではありません。男はただのヒント与えた
Mayukhサルカール

質問が答えられた(そして私見が正しく)あなたはそれを受け入れることができますか?
-nobe4

回答:


19

そこに行きます:

autocmd BufReadPost,FileReadPost,BufNewFile,BufEnter * call system("tmux rename-window 'vim | " . expand("%:t") . "'")

分解:

autocmd BufReadPost,FileReadPost,BufNewFile,BufEnter * call

バッファ読み取り、ファイル読み取り、または新しいファイルのバッファイベント(を参照:help autocmd-events)で、次のコマンドを実行します。

call system()

システム関数を呼び出して、テキストを渡します:

"tmux rename-window 'vim | "  

で始まる文字列で現在のウィンドウの名前を変更します vim |

. expand("%:t") 

文字列にファイル名を追加します(参照この記事の書式設定のためにと、このポストを挿入展開するため)

. "'"

最後'を追加してコマンドを閉じます。

展開後、次のようになります(.vimrcファイルの編集中)。

system("tmux rename-window 'vim | .vimrc'")

@erthalionがコメントで述べたように、vimを終了するときにクリーンアップできます:

autocmd VimLeave * call system("tmux rename-window 'tmux'")

1
BufEnterこのリストにイベントを含めて(既存のバッファを切り替えた場合でもラベルを変更するため)、autocmd VimLeave * call system("tmux rename-window 'tmux'")クリーンアップのためにこのようなものを追加すると良いと思います。
エルタリオン

3

vimを終了するときにデフォルトのtmux命名スキームを復元するには、次のこともできます。

autocmd VimLeave * call system("tmux setw automatic-rename")

これは、他の答えと合わせて使用​​され、最良のソリューションを提供します。tmuxのrename-windowスニペットを見たことがありますが、誰かがtmuxウィンドウの自動名前変更オプションを指摘したのはこれが初めてです。ありがとうございました。
f3xy

1

これは、@ raphaelの回答のおかげでvimrcに入れたものです

FocusGainedおよびFocusLostイベント用にtmux-plugins / vim-tmux-focus-eventsプラグインもインストールします。

augroup tmux                                                                                                                                                                                                                                                                                                                 
  autocmd!                                                                                                                                                                                                                                                                                                                 
  if exists('$TMUX')                                                                                                                                                                                                                                                                                                       
    autocmd BufReadPost,FileReadPost,BufNewFile,FocusGained * call system("tmux rename-window " . expand("%:t"))                                                                                                                                                                                                         
    autocmd VimLeave,FocusLost * call system("tmux set-window-option automatic-rename")                                                                                                                                                                                                                                  
  endif                                                                                                                                                                                                                                                                                                            
augroup END
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.