Vim
tmux

tmuxのウィンドウ名をvimの編集中のファイル名に設定する

More than 3 years have passed since last update.

参考:

あまり気にしている人がいないのか、日本語での情報を見ないので、上げておきます。

表題の通り、vimでファイルを編集しているときに、そのファイル名をtmuxのウィンドウ名に設定しておきたいことがあるかと思います。これを実現する方法は簡単で、上のリンクを見てもらえれば分かるとおり、autocmdの設定でそのBufferに入ったときに、tmux rename-windowでファイル名(expand("%:t"))を渡してやればいいだけです。

つまり、~/.vimrcに以下を追記

augroup titlesettings

autocmd!
autocmd BufEnter * call system("tmux rename-window " . "'[vim] " . expand("%:t") . "'")
autocmd VimLeave * call system("tmux rename-window zsh")
autocmd BufEnter * let &titlestring = ' ' . expand("%:t")
augroup END

1、2行目はtmuxのウィンドウ名に関係するものであり、3行目は普通のターミナルのタイトルを変えるものです。

これで、Vimタブ間の移動、Vim分割ウィンドウ間の移動などをするたびにそのファイル名がtmuxのウィンドウ名に設定されます。


追記(2015/06/25)

但し、上の例ではtmux環境以外でVimを起動したときに、最後にアクティブだったウィンドウの名前が変更されてしまうので、tmux環境内で起動したときだけリネームが実行される必要がありました。

したがって、

if $TMUX != ""

augroup titlesettings
autocmd!
autocmd BufEnter * call system("tmux rename-window " . "'[vim] " . expand("%:t") . "'")
autocmd VimLeave * call system("tmux rename-window zsh")
autocmd BufEnter * let &titlestring = ' ' . expand("%:t")
augroup END
endif

のようにします。

(追記ここまで)


以下に自分の環境でどのように表示されるか、スクリーンショット載せておきます。

screen_013.jpg

ご参考になれば幸いです。