เมื่อใดก็ตามที่ฉันเปิดเซสชั่น tmux vim
ในขั้วทั้งหมดของแท็บที่มีการประชุมเป็นกลุ่มมีความโดดเด่น
คำถามของฉันคือ: วิธีกำหนดค่าให้แท็บป้ายกำกับ tmux ด้วยชื่อของไฟล์ที่แก้ไขหรือสิ่งที่ต้องการvim | test.cpp
ใช้เป็นชื่อของแท็บที่เป็นปัญหา
เมื่อใดก็ตามที่ฉันเปิดเซสชั่น tmux vim
ในขั้วทั้งหมดของแท็บที่มีการประชุมเป็นกลุ่มมีความโดดเด่น
คำถามของฉันคือ: วิธีกำหนดค่าให้แท็บป้ายกำกับ tmux ด้วยชื่อของไฟล์ที่แก้ไขหรือสิ่งที่ต้องการvim | test.cpp
ใช้เป็นชื่อของแท็บที่เป็นปัญหา
คำตอบ:
ไปที่นั่น:
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 กล่าวไว้ในความคิดเห็นคุณสามารถทำความสะอาดเมื่อออกเป็นกลุ่มด้วย:
autocmd VimLeave * call system("tmux rename-window 'tmux'")
BufEnter
เหตุการณ์ไว้ในรายการนี้ (เพื่อเปลี่ยนป้ายกำกับแม้เมื่อเราสลับระหว่างบัฟเฟอร์ที่มีอยู่) และสิ่งนี้autocmd VimLeave * call system("tmux rename-window 'tmux'")
เพื่อล้าง
ในการกู้คืนโครงร่างการตั้งชื่อ tmux ดีฟอลต์เมื่อออกจากกลุ่มคุณสามารถทำได้:
autocmd VimLeave * call system("tmux setw automatic-rename")
นี่คือสิ่งที่ฉันใส่ไว้ใน vimrc ของฉันด้วยคำตอบของ @raphael
ฉันยังติดตั้งปลั๊กอิน tmux-plugins / vim-tmux-focus-eventsสำหรับเหตุการณ์ FocusGained และ 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