最终的Vim / Tmux窗口重命名脚本

问题描述

将tmux窗口名称设置为vim中当前打开的文件名称时,我试图实现一致的行为。

这是我的.vimrc文件中的

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

我遇到了两种情况问题:

切换窗格

这几乎可行。对于在窗格之间跳转,它会重命名每个焦点更改,但有时会失败并重置为认值...我不知道为什么。

切换窗口

与切换窗格的行为相同,有时它会将您刚刚保留的窗口的名称重置为认值

我需要改进此脚本,使其表现如下:

我想知道这是否与状态栏刷新间隔或.tmux.conf中的某些设置有关,所以在这里 my_tmuxconf

以下是一些怪异行为的GIF: switching windows switching panes

更新

此实现提供了更好的结果:

if exists('$TMUX')
  autocmd BufEnter,FocusGained * call system("tmux rename-window " . expand("%:t"))
  autocmd VimLeave * call system("tmux rename-window zsh")
endif

但是缺点是,当您从运行vim的窗格切换到运行其他内容(例如常规bash)的窗格时,无法重命名

缺少的部分是要在每个窗格开关上自动重命名Tmux,但前提是焦点窗格没有运行vim。能做到吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)