我管理了几台Linux机器,其中一些在存储库中有tmux 2.1版本,另一些在tmux版本低于2.1的情况下.我使用鼠标模式,据我所知,在tmux 2.1中,启用鼠标模式的选项已更改为:
set -g mouse on
由于我使用不同的发行版,每个发行版都有不同版本的tmux,我想制作一个.tmux.conf文件,根据版本启用相应的鼠标选项.
所以,我在.tmux.conf中添加了以下内容:
# Mouse Mode if-shell "[[ `tmux -V |cut -d ' ' -f2` -ge 2.1 ]]" 'set -g mouse on' if-shell "[[ `tmux -V |cut -d ' ' -f2` -lt 2.0 ]]" 'set -g mode-mouse on' if-shell "[[ `tmux -V |cut -d ' ' -f2` -lt 2.0 ]]" 'set -g mouse-resize-pane on' if-shell "[[ `tmux -V |cut -d ' ' -f2` -lt 2.0 ]]" 'set -g mouse-select-pane on' if-shell "[[ `tmux -V |cut -d ' ' -f2` -lt 2.0 ]]" 'set -g mouse-select-window on'
不幸的是,这不起作用.tmux不显示任何错误,但它也不启用鼠标模式.
我的逻辑中是否存在阻止此配置工作的错误?
基于最后两个答案,但替换shell命令如下.将其添加到主配置:
if-shell "tmux -V |awk ' {split($2, ver, \".\"); if (ver[1] < 2) exit 1 ; else if (ver[1] == 2 && ver[2] < 1) exit 1 }' " 'source .tmux/gt_2.0.conf' 'source .tmux/lt_2.1.conf'
这使用awk来拆分版本号,这个代码的更清晰版本是:
split($2, ver, ".") #Split the second param and store it in the ver array if ver[1] < 2) # if it's less than v2.0 exit 1 else if (ver[1] == 2) # if it's version 2.n look at next number if (ver[2] < 1) # If the second number is less than 1 (2.1) exit 1 # else we exit 0
然后将配置拆分为两个配置文件.
lt_2.1.conf
包含
set -g mode-mouse on set -g mouse-resize-pane on set -g mouse-select-pane on set -g mouse-select-window on
gt_2.1.conf
包含
set -g mouse-utf8 on set -g mouse on