调整终端大小后fish shell多提示符问题及tmux分屏适配诉求
解决fish shell调整终端大小后提示符重复及tmux分屏异常问题
问题梳理
- 环境:fish shell + tide提示符工具,字体采用Color和Source Code Pro(含符号)
- 核心现象:终端初始显示正常;调整窗口大小后出现多个重复提示符,需手动执行
clear或reset才能恢复正常;推测该问题直接导致tmux分屏(小终端场景)出现异常 - 已尝试无效方案:将bash风格的
export PROMPT_COMMAND="resize &>/dev/null; $PROMPT_COMMAND"写入bashrc和config.fish,未解决问题
针对性解决方案
fish shell不支持bash的PROMPT_COMMAND环境变量,这是之前方案无效的核心原因。针对fish+tide的场景,可尝试以下步骤:
1. 监听终端大小变更,自动重绘提示符
在fish配置文件~/.config/fish/config.fish中添加窗口大小变更的监听事件:
function on_resize --event SIGWINCH commandline -f repaint end
保存后执行source ~/.config/fish/config.fish或重启fish生效。该事件会在终端窗口大小改变时自动触发,强制重新绘制提示符,避免重复问题。
2. 更新tide到最新版本
旧版本tide可能存在与终端窗口调整的兼容性问题,根据你的安装方式执行更新:
- 若用oh-my-fish管理:
omf update tide
- 若用fisher管理:
fisher update IlanCosman/tide
3. 配置tmux同步终端大小
在tmux配置文件~/.tmux.conf中添加以下内容,确保分屏时终端大小变更能及时同步到fish:
set -g aggressive-resize on set -g update-environment "DISPLAY SSH_AUTH_SOCK SSH_CONNECTION"
保存后重启tmux,减少分屏场景下的提示符异常概率。
验证方法
- 调整终端窗口大小,观察提示符是否自动恢复正常
- 启动tmux并分屏,检查小终端窗口中提示符是否无重复
内容的提问来源于stack exchange,提问作者KLAUS
相关产品推荐
相关产品推荐

