vim - 终极 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 窗口重命名为文件名(效果不佳)
- 从窗口切换会保留它的名称
- 截断大文件名(这甚至可能吗?)
我想知道这是否与我的状态栏刷新间隔或 .tmux.conf 中的某些设置有关,所以这里是 my_tmuxconf
更新
此实现提供了更好的结果:
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。可以做到吗?
解决方案
推荐阅读
- java - 在 Soap 响应中读取 XML 时命名空间错误(非空)
- javascript - ng-if 不在 AngularJS 中显示数据
- java - 几天后寻找效率建议
- angular - JWT 在 Express 和 Angular 应用程序中立即过期
- c++ - 在 GCC 中避免或警告从 const char* 到 bool 的隐式转换
- html - 为什么导航栏下拉菜单不垂直对齐?
- keras - 如何将 CNN 模型配置保存到文件
- sql - Kubernetes 并将数据从 SQL 获取到不同的服务器
- php - PHP:在 Ajax 请求中找不到页面 404
- javascript - Select Field OnChange, Make Show/Hide, Shows Initially but Once Gone, Cant ReShow