Como rotular as guias do tmux com o nome do arquivo editado no vim?


14

Sempre que abro uma sessão tmux no terminal, todas as guias que contêm sessões vim são rotuladas vim.

Minha pergunta é: Como configurá-lo para rotular as guias do tmux com o nome do arquivo editado ou algo como vim | test.cppusado como o título das guias em questão.



obrigado por isso, mas você pode elaborar um pouco mais o processo? Além disso, a resposta não está completa. O cara só deu uma dica
Mayukh Sarkar

como a pergunta foi respondida (e IMHO corretamente) você poderia aceitá-la?
nobe4

Respostas:


19

Ai está :

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

Decomposição:

autocmd BufReadPost,FileReadPost,BufNewFile,BufEnter * call

Na leitura de buffer, leitura de arquivo ou evento de novo arquivo em buffer (consulte :help autocmd-events), execute o próximo comando:

call system()

Chame uma função do sistema e passe o texto:

"tmux rename-window 'vim | "  

Renomeie a janela atual com uma sequência começando com vim |

. expand("%:t") 

Adicione à string o nome do arquivo (consulte este artigo para a formatação e esta postagem para a inserção de expansão)

. "'"

Adicione a final 'para fechar o comando.

Após a expansão, será semelhante (ao editar o arquivo .vimrc):

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

Como @erthalion disse no comentário, você pode limpar ao deixar o vim com:

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

1
Eu acho que será bom incluir BufEnterevento nessa lista (para alterar o rótulo mesmo quando alternamos entre os buffers existentes) e algo assim autocmd VimLeave * call system("tmux rename-window 'tmux'")para limpeza.
Erthalion

3

Para restaurar o esquema de nomeação padrão do tmux ao sair do vim, você também pode:

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

Isso é usado em uníssono com a outra resposta que fornece a melhor solução. Eu já vi o snippet tmux rename-window por toda parte, mas esta é a primeira vez que alguém aponta a opção de renomear automaticamente a janela tmux. Obrigado.
F3xy

1

Isto é o que eu coloquei no meu vimrc, graças à resposta de @raphael

Também instalo o plug-in tmux-plugins / vim-tmux-focus-events para os eventos FocusGained e 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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.