每当我在终端中打开tmux会话时,所有包含vim会话的选项卡都标记为vim

我的问题是:如何配置它以使用已编辑文件的名称或使用诸如vim | test.cpp之类的标签名称标记tmux标签。

评论

这可以帮助:stackoverflow.com/a/15124717/2558252吗?

谢谢您,但是请您详细说明一下过程吗?而且答案还不完整。那个家伙只是暗示了

问题得到了回答(正确的恕我直言),您可以接受吗?

#1 楼

随处可以:

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") 


将字符串添加文件名(格式请参见本文,展开请参见本文插入)

. "'"


添加最后的'以关闭命令。

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


正如@erthalion在评论中所说,您可以在离开vim时使用:

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

进行清理。

评论


我认为将BufEnter事件包含在此列表中(即使在现有缓冲区之间切换时也可以更改标签),以及类似autocmd VimLeave *调用系统(“ tmux named-window'tmux'”)进行清理,将是很好的。

– erthalion
15年7月16日在4:02



#2 楼

要在退出vim时恢复默认的tmux命名方案,您还可以执行以下操作:

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


评论


这与其他答案一起使用可提供最佳解决方案。我已经看到了tmux重命名窗口代码段,但这是有人第一次指出自动重命名tmux窗口选项。谢谢。

– f3xy
19年3月1日在19:06

#3 楼

感谢@raphael的回答,这就是我放入vimrc中的内容。
我还为FocusGained和FocusLost事件安装了tmux-plugins / vim-tmux-focus-events插件。

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