Як позначити вкладки 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.