1

При использовании tmux меня возникают проблемы с призрачными персонажами при использовании клавиш со стрелками вверх и вниз в Bash. Если я нажимаю клавишу « Стрелка вверх» несколько раз, а затем нажимаю клавишу « Стрелка вниз» несколько раз, то первые несколько символов предыдущей команды остаются в строке Bash.

Например, возьмем эту чистую строку Bash:

$

Теперь я нажимаю UpArrow три раза:

$ ls /home/dotancohen/Downloads

Теперь я нажимаю клавишу « Стрелка вниз» три раза:

$ ls /home/do

Я могу воспроизвести проблему без файла ~/.tmux.conf после выхода и перезапуска tmux . Как я должен диагностировать это?

Изменить: вот мой $PS1:

$ echo $PS1
\[\] - \h():\W$ \[\]

Обратите внимание, что все от второго обратного слеша до последней закрывающей скобки зеленого цвета. Эта функция создает приглашение:

PROMPT_COMMAND=$(
    cat<<-'EOF'

    retval=$?

    RED=$(tput setaf 1)
    GREEN=$(tput setaf 2)
    STOP=$(tput sgr0)

    c=0
    for i in $retval ${PIPESTATUS[@]}; do ((c += $i)); done

    if (($c == 0)); then
        PS1="\[$GREEN\] - \h(${WINDOW}):\W$ \[$STOP\]"
    else
        PS1="\[$RED\] - \h(${WINDOW}):\W$ \[$STOP\]"
    fi
EOF
)

1 ответ1

0

Это, конечно, та же проблема и та же причина, что и на https://superuser.com/a/695350/38062 . В этом конкретном случае непоследовательная escape-последовательность, которую вы забыли разделить с помощью \[ и \] , и которая представляет собой banjanxing bash, очевидно, где-то в расширении ${WINDOW} .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .