Як позначити вкладки tmux ім'ям файлу, відредагованого vim?


14

Щоразу, коли я відкриваю сесію tmux у терміналі, усі вкладки, що містять сеанси vim, позначаються міткою vim.

Моє запитання: як налаштувати його на позначення вкладок tmux з назвою відредагованого файлу або чогось подібного, що vim | test.cppвикористовується як заголовок відповідних вкладок.


1
чи може це допомогти: stackoverflow.com/a/15124717/2558252 ?
— nobe4

спасибі за це, але чи можете ви, будь ласка, детально розробити процес? Причому відповідь не повна. Хлопець щойно дав підказку
— Маюх Саркар

як відповіли на запитання (і 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 у коментарі, ви можете очистити, залишаючи vim за допомогою:

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

1
Я думаю, буде непогано включити BufEnterподію до цього списку (щоб змінити мітку навіть тоді, коли ми переключаємось між наявними буферами), і щось подібне autocmd VimLeave * call system("tmux rename-window 'tmux'")для очищення.
— ерталіон

3

Щоб відновити схему іменування tmux за замовчуванням при виході з vim, ви також можете зробити:

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.