В настоящее время я использую tmux с переменной xterm-256color $TERM. Когда в bash в tmux, нажатие home/end будет вставлять символы тильды (~). Вне tmux домашние/конечные клавиши работают нормально.
Используя 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, например, в REPL, таких как ipython, она по-прежнему вставляет тильду для дома/конца.
Почему именно эта проблема в первую очередь? Почему сгенерированная последовательность отличается, когда я внутри tmux и вне ее? Как это исправить, чтобы это не проблема в каких-либо программах?