Bagaimana memberi label tab tmux dengan nama file yang diedit di vim?

14

Setiap kali saya membuka sesi tmux di terminal, semua tab yang berisi sesi vim diberi label vim.

Pertanyaan saya adalah: Bagaimana mengkonfigurasinya untuk memberi label tab tmux dengan nama file yang diedit atau sesuatu seperti yang vim | test.cppdigunakan sebagai judul tab yang dimaksud.

Mayukh Sarkar
sumber
1
dapatkah ini membantu: stackoverflow.com/a/15124717/2558252 ?
nobe4
terima kasih untuk ini, tetapi bisakah Anda menjelaskan prosesnya dengan sedikit detail? Apalagi jawabannya tidak lengkap. Lelaki itu baru saja memberi petunjuk
Mayukh Sarkar 8-15
ketika pertanyaan itu dijawab (dan IMHO dengan benar) dapatkah Anda menerimanya?
nobe4

Jawaban:

19

Ini dia :

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

Membusuk:

autocmd BufReadPost,FileReadPost,BufNewFile,BufEnter * call

Pada buffer read, file read atau buffer event file baru (lihat :help autocmd-events) jalankan perintah berikut:

call system()

Panggil fungsi sistem dan berikan teks:

"tmux rename-window 'vim | "  

Ganti nama jendela saat ini dengan string yang dimulai dengan vim |

. expand("%:t") 

Tambahkan ke string nama file (lihat artikel ini untuk memformat dan posting ini untuk memasukkan memperluas)

. "'"

Tambahkan final 'untuk menutup perintah.

Setelah diperluas akan terlihat seperti (saat mengedit file .vimrc):

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

Seperti @erthalion katakan dalam komentar, Anda dapat membersihkan saat meninggalkan vim dengan:

autocmd VimLeave * call system("tmux rename-window 'tmux'")
nobe4
sumber
1
Saya pikir akan lebih baik untuk memasukkan BufEnterevent ke dalam daftar ini (untuk mengubah label bahkan ketika kita beralih di antara buffer yang ada), dan sesuatu seperti ini autocmd VimLeave * call system("tmux rename-window 'tmux'")untuk pembersihan.
erthalion
3

Untuk mengembalikan skema penamaan tmux default saat berhenti vim, Anda juga dapat melakukan:

autocmd VimLeave * call system("tmux setw automatic-rename")
raphael
sumber
Ini digunakan bersamaan dengan jawaban lain memberikan solusi terbaik. Saya telah melihat potongan tmux rename-window di seluruh, tapi ini adalah pertama kalinya seseorang menunjukkan opsi jendela tmux otomatis-rename. Terima kasih.
f3xy
1

Inilah yang saya masukkan ke vimrc saya berkat jawaban oleh @raphael

Saya juga menginstal plugin tmux-plugins / vim-tmux-focus-events untuk acara FocusGained dan FocusLost.

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
f3xy
sumber