Как пометить вкладки tmux названием файла, отредактированного в vim?


14

Всякий раз, когда я открываю сеанс tmux в терминале, все вкладки, содержащие сеансы vim, помечаются vim.

У меня вопрос: как настроить его для обозначения вкладок tmux названием отредактированного файла или что-то вроде того, что vim | test.cppиспользуется в качестве заголовка рассматриваемых вкладок.


1
может ли это помочь: stackoverflow.com/a/15124717/2558252 ?
nobe4

спасибо за это, но не могли бы вы описать процесс немного подробнее? Более того, ответ не полный. Парень только что намекнул
Маюх Саркар

на вопрос был дан ответ (и ИМХО правильно) могли бы вы принять это?
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.