32

私はtmuxを初めて使用し、vimが開いているウィンドウがタスクバーに表示されるように構成を編集する方法を理解しようとしていますが、vimで開い#:vimているファイルの名前は何でも表示されます
(ie "#:filename.php")。それは一般的なことのようですが、私の検索-fooは失敗しています。

4

7 に答える 7

42

ここに部分的な答えがあります。改善することはできますが、今は解決する時間がありません。

あなたのに次を入れてください.vimrc

autocmd BufReadPost,FileReadPost,BufNewFile * call system("tmux rename-window " . expand("%"))

:help autocmd-events同様に処理するために使用できる他のイベント (Vim を参照) があります。私が理解していないことの 1 つはvim、2 つのペインのそれぞれに open のインスタンスがあり、一方のペインから他方のペインに切り替える場合にウィンドウ名を変更する方法です。vimは のアクティビティを認識していtmuxないため、vimイベントはトリガーされません。

于 2013-02-27T23:37:26.927 に答える
18

可能です!かなり長い間探していたので、この回答を共有したかったのです。ついに自分で実装する時間ができました。あなたのに次を入れてください.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 内で開いている複数の分割画面/ファイルで動作するため、物事を動的に保ちます。

于 2013-04-05T19:33:52.753 に答える
7

そして、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
于 2016-06-17T08:56:10.403 に答える
2

tmux ウィンドウ名を設定する他の回答の代わりに、代わりに vim に tmux ペインのタイトルを設定させることができます。tmux new-window -n <window-name>これにより、vim でペインのタイトルを変更しながら、定義した静的なウィンドウ名を保持できます。#Tinを使用し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

自動コマンドのガイダンスとphluksについては、 vim.wikia.comに感謝します。t_tst_fs

于 2016-05-10T01:05:52.940 に答える
2

ここで素晴らしい答えが得られましたが、それでも思い通りに動作させることができませんでした。つまり、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))
于 2015-07-10T19:00:52.523 に答える