Как пометить вкладки 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.