Làm cách nào để gắn nhãn các tab tmux với tên của tệp được chỉnh sửa trong vim?


14

Bất cứ khi nào tôi mở một phiên tmux trong thiết bị đầu cuối, tất cả các tab có chứa phiên vim đều được gắn nhãn vim.

Câu hỏi của tôi là: Làm cách nào để định cấu hình nó để gắn nhãn các tab tmux với tên của tệp đã chỉnh sửa hoặc một cái gì đó giống như vim | test.cppđược sử dụng làm tiêu đề của các tab được đề cập.


1
điều này có thể giúp: stackoverflow.com/a/15124717/2558252 ?
nobe4

cảm ơn vì điều này nhưng bạn có thể vui lòng xây dựng quy trình một cách chi tiết không? Hơn nữa câu trả lời trong không đầy đủ. Anh chàng vừa đưa ra một gợi ý
Mayukh Sarkar

như câu hỏi đã được trả lời (và IMHO chính xác) bạn có thể chấp nhận nó không?
nobe4

Câu trả lời:


19

Bạn đi đây

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

Đang phân hủy:

autocmd BufReadPost,FileReadPost,BufNewFile,BufEnter * call

Khi đọc bộ đệm, đọc tệp hoặc đệm sự kiện tệp mới (xem :help autocmd-events) thực hiện lệnh tiếp theo:

call system()

Gọi một chức năng hệ thống và chuyển nó văn bản:

"tmux rename-window 'vim | "  

Đổi tên cửa sổ hiện tại bằng một chuỗi bắt đầu bằng vim |

. expand("%:t") 

Thêm vào chuỗi tên tệp (xem bài viết này để định dạng và bài đăng này cho phần mở rộng chèn)

. "'"

Thêm cuối cùng 'để đóng lệnh.

Sau khi mở rộng, nó sẽ trông như thế (trong khi chỉnh sửa tệp .vimrc):

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

Như @erthalion đã nói trong bình luận, bạn có thể dọn dẹp khi rời vim với:

autocmd VimLeave * call system("tmux rename-window 'tmux'")

1
Tôi nghĩ sẽ rất tốt nếu đưa BufEntersự kiện vào danh sách này (để thay đổi nhãn ngay cả khi chúng tôi chuyển đổi giữa các bộ đệm hiện có) và một cái gì đó như thế này autocmd VimLeave * call system("tmux rename-window 'tmux'")để dọn dẹp.
erthalion

3

Để khôi phục lược đồ đặt tên tmux mặc định khi thoát vim, bạn cũng có thể thực hiện:

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

Điều này được sử dụng đồng nhất với câu trả lời khác cung cấp giải pháp tốt nhất. Tôi đã thấy đoạn mã đổi tên cửa sổ tmux khắp nơi, nhưng đây là lần đầu tiên ai đó chỉ ra tùy chọn cửa sổ tmux tự động đổi tên. Cảm ơn bạn.
f3xy

1

Đây là những gì tôi đặt trong vimrc của mình nhờ câu trả lời của @raphael

Tôi cũng cài đặt plugin tmux-plugins / vim-tmux-Focus-event cho các sự kiện FocusGained và 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.