วิธีติดฉลากแท็บ tmux ด้วยชื่อของไฟล์ที่แก้ไขในกลุ่ม?


14

เมื่อใดก็ตามที่ฉันเปิดเซสชั่น tmux vimในขั้วทั้งหมดของแท็บที่มีการประชุมเป็นกลุ่มมีความโดดเด่น

คำถามของฉันคือ: วิธีกำหนดค่าให้แท็บป้ายกำกับ tmux ด้วยชื่อของไฟล์ที่แก้ไขหรือสิ่งที่ต้องการvim | test.cppใช้เป็นชื่อของแท็บที่เป็นปัญหา


1
ความช่วยเหลือนี้: stackoverflow.com/a/15124717/2558252หรือไม่
nobe4

ขอบคุณสำหรับสิ่งนี้ แต่คุณช่วยอธิบายกระบวนการในรายละเอียดเล็กน้อยได้ไหม? ยิ่งกว่านั้นคำตอบยังไม่สมบูรณ์ ผู้ชายคนนั้นเพิ่งบอกใบ้
Mayukh Sarkar

ตามที่มีการตอบคำถาม (และ IMHO ถูกต้อง) คุณสามารถยอมรับมันได้หรือไม่
nobe4

คำตอบ:


19

ไปที่นั่น:

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'")

1
ฉันคิดว่ามันจะเป็นการดีที่จะรวมBufEnterเหตุการณ์ไว้ในรายการนี้ (เพื่อเปลี่ยนป้ายกำกับแม้เมื่อเราสลับระหว่างบัฟเฟอร์ที่มีอยู่) และสิ่งนี้autocmd VimLeave * call system("tmux rename-window 'tmux'")เพื่อล้าง
ทำลายล้าง

3

ในการกู้คืนโครงร่างการตั้งชื่อ tmux ดีฟอลต์เมื่อออกจากกลุ่มคุณสามารถทำได้:

autocmd VimLeave * call system("tmux setw automatic-rename")

นี้ใช้พร้อมเพรียงกับคำตอบอื่น ๆ ให้ทางออกที่ดีที่สุด ฉันได้เห็นตัวอย่างโค้ดการเปลี่ยนชื่อ tmux ไปทั่ว แต่นี่เป็นครั้งแรกที่มีคนชี้ให้เห็นตัวเลือกหน้าต่างการเปลี่ยนชื่อ tmux อัตโนมัติ ขอขอบคุณ.
f3xy

1

นี่คือสิ่งที่ฉันใส่ไว้ใน 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.