如何解决tmux中vim窗格切换后异常闪烁的问题
问题触发原因
你的tmux配置中开启了全局窗格活动监控set -g monitor-activity on,该配置会在非当前聚焦的窗格有终端输出时,触发窗格指示器闪烁提示。
由于你使用的是NFS网络文件系统,I/O响应速度慢,vim后台写入交换文件的动作耗时较长,你编辑后立刻切走窗格时,vim还在持续执行I/O操作、输出相关提示信息,tmux检测到该窗格的活动就会一直闪烁,直到你切回窗格确认、vim完成I/O操作为止。
可行解决方案
你可以根据自己的使用习惯选择任意一种方案:
方案1:调整tmux活动监控规则
- 如果你不需要窗格活动提醒功能,直接修改tmux配置,将
set -g monitor-activity on改为set -g monitor-activity off,重载配置后即可彻底关闭闪烁提示。 - 如果你需要保留其他窗格的活动提醒(比如监控编译/调试输出),可以只给运行vim的窗格关闭活动监控:在shell配置中添加别名:
该配置会在启动vim时自动关闭当前窗格的活动监控,退出vim后自动恢复。alias vim='tmux set monitor-activity off; vim; tmux set monitor-activity on'
方案2:调整vim配置消除触发源
- 关闭交换文件(如果有其他版本控制/自动保存机制保障文件安全):在vim配置中添加
set noswapfile,彻底消除后台交换文件写入动作。 - 把交换文件存储路径改为本地磁盘,避免走NFS:提前创建
~/.vim/swap目录,然后在vim配置中添加:
本地磁盘I/O速度快,交换文件写入动作几乎瞬间完成,不会触发长时间闪烁。set directory=~/.vim/swap// - 关闭vim交换文件相关的提示输出:在vim配置中添加
set shortmess+=A,该参数会屏蔽交换文件相关的所有提示消息,就算有写入动作也不会输出内容到终端,tmux检测不到活动就不会触发闪烁。
内容的提问来源于stack exchange,提问作者Paghillect
相关产品推荐
相关产品推荐

