如何用vim中编辑的文件名标记tmux选项卡?


14

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

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


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

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

当问题得到解答(恕我直言正确)时,您可以接受吗?
nobe4

Answers:


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'")的清理操作。
erthalion 2015年

3

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

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

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

1

这就是我把我的vimrc由于答案通过@raphael

我还为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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.