¿Cómo etiquetar las pestañas tmux con el nombre del archivo editado en vim?

14

Cada vez que abro una sesión tmux en la terminal, se etiquetan todas las pestañas que contienen sesiones vim vim.

Mi pregunta es: cómo configurarlo para etiquetar las pestañas tmux con el nombre del archivo editado o algo así vim | test.cppcomo el título de las pestañas en cuestión.

Mayukh Sarkar
fuente
1
¿Puede esto ayudar: stackoverflow.com/a/15124717/2558252 ?
nobe4
gracias por esto, pero ¿puedes elaborar el proceso con un poco de detalle? Además, la respuesta no está completa. El tipo acaba de dar una pista
Mayukh Sarkar
a medida que la pregunta fue respondida (y en mi humilde opinión correctamente) ¿podría aceptarla?
nobe4

Respuestas:

19

Ahí tienes:

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

Descomponiendo:

autocmd BufReadPost,FileReadPost,BufNewFile,BufEnter * call

En la lectura de búfer, lectura de archivo o evento de nuevo archivo de búfer (ver :help autocmd-events) ejecute el siguiente comando:

call system()

Llame a una función del sistema y páselo el texto:

"tmux rename-window 'vim | "  

Cambiar el nombre de la ventana actual con una cadena que comience por vim |

. expand("%:t") 

Agregue a la cadena el nombre de archivo (vea este artículo para el formato y esta publicación para la inserción expandida)

. "'"

Agregue el final 'para cerrar el comando.

Después de expandir, se verá (mientras edita el archivo .vimrc):

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

Como @erthalion dijo en el comentario, puedes limpiar al dejar vim con:

autocmd VimLeave * call system("tmux rename-window 'tmux'")
nobe4
fuente
1
Creo que sería bueno incluir un BufEnterevento en esta lista (para cambiar la etiqueta incluso cuando cambiemos entre buffers existentes), y algo así autocmd VimLeave * call system("tmux rename-window 'tmux'")para la limpieza.
erthalion
3

Para restaurar el esquema de nombres tmux predeterminado al salir de vim, también puede hacer lo siguiente:

autocmd VimLeave * call system("tmux setw automatic-rename")
Rafael
fuente
Esto se usa al unísono con la otra respuesta que proporciona la mejor solución. He visto el fragmento tmux rename-window por todas partes, pero esta es la primera vez que alguien señala la opción de cambio automático de nombre de la ventana tmux. Gracias.
f3xy
1

Esto es lo que puse en mi vimrc gracias a la respuesta de @raphael

También instalo el complemento tmux-plugins / vim-tmux-focus-events para los eventos FocusGained y 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
f3xy
fuente