我试图给我的 tmux 窗格单独的标题。由于 tmux 中没有内置任何内容来分配标题,因此我使用的函数将接收窗格的各种属性,然后根据这些属性查找我想要的标题,然后将echo
其取出。
但是,test
函数内部没有按预期工作。即使传入了 session_name “portal”,它也不匹配字符串“portal”,即使输出始终完全是“portal”。
我已经从函数中删除了所有不相关的代码,以准确显示失败的匹配:
tmux_pane_title() {
local session_name=$1
# ...
if [[ "$session_name" = "portal" ]] && echo ".${session_name}." || echo "-${session_name}-"
# ...
}
tmux set pane-border-format "#P: `tmux_pane_title \"#{session_name}\" \"#{pane_current_command}\" \"#{pane_current_path}\"` "
它总是回显“-portal-”,表明 $1 实际上是“portal”,但它与test
.
我曾尝试使用 sed 删除换行符,但没有任何区别。
但是,如果我将“门户”硬编码到 tmux 格式中,pane-border-format
它会突然起作用,这表明名称中隐藏了一些奇怪的控制字符,阻止它在我传入时工作session_name
tmux set pane-border-format "#P: `tmux_pane_title \"portal\" \"#{pane_current_command}\" \"#{pane_current_path}\"` "
如果是这样,我怎样才能找到并消除控制字符?(为什么它会在那里?我没有在我的tmuxinator.yml
文件中输入任何奇怪的会话名称。)
我已经尝试过删除这样的控制字符:
local session_name=$(echo $1 | tr -d "[:cntrl:]")
如果不是这种情况,我怎样才能弄清楚是什么破坏了这个功能?
PS我在tmux 3.1b上。