我目前正在使用带有 xterm-256color $TERM 变量的 tmux。在 tmux 下的 bash 中,按 home/end 会插入波浪字符 (~)。在 tmux 之外,home/end 键工作正常。
使用 cat 和 tput,我可以看到生成的序列和预期的序列之间存在不匹配:
$ cat -v # pressing home, then end
^[[1~^[[4~
$ tput khome | cat -v; echo
^[OH
$ tput kend | cat -v; echo
^[OF
为了解决这个问题,我决定将以下内容添加到我的 .bashrc 中:
if [[ -n "$TMUX" ]]; then
bind '"\e[1~":"\eOH"'
bind '"\e[4~":"\eOF"'
fi
这解决了 bash 的问题,但是在其他 readline 程序中,例如在 ipython 等 REPL 中,它仍然为 home/end 插入波浪号。
为什么首先这是一个问题?为什么当我在 tmux 内部和外部时生成的序列不同?如何解决此问题,使其在任何程序中都不是问题?