私はtmuxを初めて使用し、vimが開いているウィンドウがタスクバーに#:vim
としてではなく、vimで開いているファイルの名前として表示されるように構成を編集する方法を理解しようとしています。(ie "#:filename.php")
。それは一般的なことのようですが、私の検索-fooは失敗しています。
これが部分的な答えです。改善することはできますが、今は解決する時間がありません。
.vimrc
に次のように入力します。
autocmd BufReadPost,FileReadPost,BufNewFile * call system("tmux rename-window " . expand("%"))
他にも処理に使用できるイベントがあります(Vimの:help autocmd-events
を参照)。 2つのペインのそれぞれでvim
のインスタンスを開いていて、一方のペインからもう一方のペインに切り替えた場合に、ウィンドウ名を変更する方法がわかりませんでした。 vim
はtmux
のアクティビティを認識しないため、vim
イベントはトリガーされません。
可能です!私はかなり長い間それを探していたので、私はこの答えを共有したいと思いました。ついに自分で実装する時間ができました。 .vimrc
に次のように入力します。
autocmd BufEnter * let &titlestring = ' ' . expand("%:t")
set title
ターミナルタイトルは、現在フォーカスされているドキュメントタイトルのみに設定されます(%t
はパスのないドキュメントタイトルを表します)。イベントBufEnter
のおかげで、別のドキュメントにフォーカスを切り替えるたびに端末のタイトルが変わります。また、Vimを離れると、元の状態に戻ります。 .tmux.conf
に以下を入力(または置換)します。
set-window-option -g window-status-current-format "[#I #W#T]"
set-window-option -g window-status-format "[#I #W#T]"
正確にコピーする必要はありませんが、次のようになります。
[1 vim .tmux.conf][2 bash]...
I
はウィンドウ番号を表します。 W
は実行中の現在のアプリケーションを表し、T
は端末のタイトルを表します。後で、vimで開いている現在のファイルを表示するために使用します。ターミナルのタイトルは常に設定されているため(私のbashターミナルには、ステータスバーの説明に表示する必要のないホスト名が常に表示されます)、vimの実行時にのみ表示するには、.bashrc
に次を追加します。
Prompt_COMMAND='echo -ne "\033]0;\007"'
これは、私が使用するシェルであるbashにも当てはまります。 Prompt_COMMANDは、プロンプトがターミナルに表示される直前に評価されます。 echoコマンドは、端末のタイトルを何にも設定しません。したがって、このアクションは、タイトルを変更した可能性のあるアプリケーションからプロンプトを返すたびに発生します。他のシェルは別の方法で構成する必要があるかもしれません...
tmux rename-window
は、ウィンドウが存在する限りタイトルを設定するため、使用しません。アプリケーションを起動するたびに呼び出す必要があります。提示されたアプローチは、ウィンドウ内の複数のペインと、vim内で開いている複数の分割画面/ファイルで機能するため、物事を動的に保ちます。
素晴らしい入力者に感謝しますそれは私に多くのタイピングを節約します:-)
私は前の2つの答えを1つにまとめました。
autocmd BufEnter * call system("tmux rename-window " . expand("%:t"))
autocmd VimLeave * call system("tmux rename-window bash")
autocmd BufEnter * let &titlestring = ' ' . expand("%:t")
set title
1行目とsedond行はtmux用で、3行目と4行目は通常の端末用です。 tmuxを明示的に更新するのはvimなので、tmuxを再起動する必要はありません。
そして、Vim出口で自動ウィンドウタイトルを復元するには:
autocmd VimLeave * call system("tmux setw automatic-rename")
また、tmuxで実行されているかどうかを確認することをお勧めします。
if exists('$TMUX')
autocmd BufEnter * call system("tmux rename-window '" . expand("%:t") . "'")
autocmd VimLeave * call system("tmux setw automatic-rename")
endif
Tmuxウィンドウ名を設定する他の回答の代わりに、vimにtmuxペインのタイトルを設定させることができます。これにより、vimにペインのタイトルを変更させながら、tmux new-window -n <window-name>
で定義した静的ウィンドウ名を保持できます。 #T
でset-titles-string
を使用して、ペインのタイトルを表示できます。 set-option -g set-titles-string "#W: #T"
は、tmuxウィンドウ名とペインタイトルを表示します。
ペインタイトルを変更するためのvim設定の例:
" Teach vim the tmux escape sequences for changing pane title
" Note the "^[" should be a literal escape code (use `^v<esc>` to enter it)
set t_ts=^[]2;
set t_fs=^[\\
" Turn on setting the title.
set title
" The following causes vim to refresh the title each time we change buffers.
" Otherwise it will only set the title once at startup.
augroup RefreshTitle
autocmd!
" The concatenation of the colon is a hack to prevent vim from
" interpreting the string as a modeline.
autocmd BufEnter * let &titlestring = "vim" . ":" . expand("%:t")
augroup END
vim.wikia.comt_ts
およびt_fs
ガイダンス、および phluks 自動コマンドに敬意を表します。
ここでは素晴らしい答えですが、それでも私が望むように動作させることができませんでした。つまり、1)vimを開いたときにTMUXウィンドウ名を変更します。2)終了します。終了したら前の名前に戻します次の3つのvimrc行でそれを達成しました:
autocmd BufReadPost,FileReadPost,BufNewFile * call system("tmux rename-window " . expand("%:t"))
let tmuxtitle = system("tmux display-message -p '#W'")
autocmd VimLeave * call system("tmux rename-window " . shellescape(tmuxtitle))