Как мне не допустить перезаписи строки терминала?

В окне терминала меньше, чем в полноэкранном режиме, если я набираю длинную команду, она начинает перезаписывать текущую строку, в которой я нахожусь. Если я наберу значение дополнительной строки, она, наконец, перейдет к следующей строке. Кто-нибудь знает, как это исправить?

Вот что происходит визуально:

Изменить: это мои подсказки:

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\033[1m`__git_ps1`\033[0m\$ '
TERM=xterm

.bashrc:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\033[1m`__git_ps1`\033[0m\$ '
fi

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

3 ответа

Решение

По какой-то причине размер терминала не соответствует действительности. Это должно измениться, когда вы измените размер терминала.

Попробуйте это в вашем командном файле.bashrc:

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

Я нашел ответ здесь. Ответ с большинством голосов решил это для меня.

Подводя итог, я должен был обернуть мои форматы в \[ \]
export PS1='\[\033[1;32m\]$(whoami)@$(hostname): \[\033[0;37m\]$(pwd)$ \[\033[0m\]'

Для тех, кто использует терминал PuTTY (v0.67) и размер терминала обновляется неправильно:

  1. Вы можете щелкнуть правой кнопкой мыши на значке левой руки окна, затем выбрать Изменить настройки....
  2. В PuTTY Reconfiguration на левой боковой панели выберите " Окно" > " Установить размер окна" > " Столбцы".
  3. Обновите значение Столбцы вручную. Я изменил свой на 255, и это остановило перезапись терминала в отдельной строке (когда я печатаю).

Другие вопросы по тегам