gnome-terminal скрывает конечные символы первой строки текущего пути

Я использую исходный ~ / .bashrc файл Ubuntu-18.04.2, и я не сделал никаких изменений ни в одном оригинале файлы.

Испытывают ли пользователи Ubuntu 18.04.2 проблему, о которой я расскажу ниже? Дайте мне знать, пожалуйста.

Я заметил странное поведение при изменении либо длины текущего пути, либо ширины терминала gnome. Я приведу вам пример (я использую символ | для обозначения правой границы окна):

username@hostname:/directory/directory/directory/dire  |
ory/directory/directory/directory$                     |

Как вы можете видеть, в первой строке терминал Ubuntu скрывает строку «ct» слово «справочник»; другие строки в порядке. Я сказал, что строка «ct» скрыта, потому что, если я изменю ширину окна, она появится снова, но два других символа будут скрыты. Например:

username@hostname:/directory/directory/directory/di  |
ctory/directory/directory/directory$                 |

На этот раз строка «re» скрыта. Проблема всегда возникает в первом ряду!

Я провел несколько экспериментов и заметил различное «странное» поведение при изменении либо длины текущего пути, либо ширины окна.Я могу выделить пять случаев:

  1. Если длина текущего пути мала, я могу изменить размер окна, но каждая строка все равно будет в порядке (нет скрытых символов ни в одной строке) ;

  2. если я немного увеличьте длину (например, добавив каталог), последний символ первой строки будет скрыт ;

  3. Если я использую команду cd .. для возврата до точки 1 и измените размер окна так, чтобы путь занимал более одной строки, пять символов скрыты (та же длина, но другое поведение) ;

  4. Изменяя ширину окна, часть строка перезаписывается , как в следующих примерах: ........ m $ rname @ hostname: / directory / directory / directory / directory |

    $ ername @ hostname: / directory / directory / directory / directory |

В первом примере подстрока «использование» удаляется, а символ «m» появляется из ниоткуда! Второй пример возникает, если я немного укорачиваю ширину окна: как вы видите, подстрока «us» удаляется. В обоих случаях gnome-terminal позволяет мне писать команды в этой строке, которые будут удаляться по мере ввода.

  1. Если я нахожусь в каталоге с коротким именем, например / usr или / home, проблемы не возникает, потому что я не могу достаточно укоротить окно. Однако, если я создам длинный каталог 1-го уровня (например,/ directorydirectorydirectorydirectorydirectory), изменяя размер окна, я получаю следующее поведение:

     имя пользователя @ имя хоста: / directorydirectorydirectorydirectorydirector | млн $
    имя пользователя @ имя хоста: / каталог, каталог, каталог, каталог, каталог | $
    имя пользователя @ имя хоста: / каталог, каталог, каталог, каталог, каталог | $ y
    имя пользователя @ имя хоста: / каталог, каталог, каталог, каталог, каталог | {квадратная коробка с 0010 внутри} [[00m $
    имя пользователя @ имя хоста: / каталог, каталог, каталог, каталог, каталог | $ ory
    имя пользователя @ имя хоста: / каталог, каталог, каталог, каталог, каталог | y $ ory
    имя пользователя @ имя хоста: / каталог, каталог, каталог, каталог di | ry $ или
    имя пользователя @ имя хоста: / каталог, каталог, каталог, каталог | ory $ o
    имя пользователя @ имя хоста: / каталог, каталог, каталог, каталог | тори $
    

$ grep PS1 ~/.bashrc
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

$ printf '%q\n' "$PS1"
\\\[\\e\]0\;\\u@\\h:\ \\w\\a\\\]\$\{debian_chroot:+\(\$debian_chroot\)\}\\\[\\033\[01\;32m\\\]\\u@\\h\\\[\\033\[00m\\\]:\\\[\\033\[01\;34m\\\]\\w\\\[\\033\[00m\\\]\\\$\ 

$ printf '%q\n' "$PROMPT_COMMAND"
''

$ locale
LANG=it_IT.UTF-8
LANGUAGE=it:en_US:en
LC_CTYPE="it_IT.UTF-8"
LC_NUMERIC=it_IT.UTF-8
LC_TIME=it_IT.UTF-8
LC_COLLATE="it_IT.UTF-8"
LC_MONETARY=it_IT.UTF-8
LC_MESSAGES="it_IT.UTF-8"
LC_PAPER=it_IT.UTF-8
LC_NAME=it_IT.UTF-8
LC_ADDRESS=it_IT.UTF-8
LC_TELEPHONE=it_IT.UTF-8
LC_MEASUREMENT=it_IT.UTF-8
LC_IDENTIFICATION=it_IT.UTF-8
LC_ALL=
10
задан 21 July 2019 в 11:36

2 ответа

В Вашем PS1 необходимо включить непечатаемые символы (и только они!) в \[ и \]. Вы также включаете печатаемые (как @, но также и заполнители как \h. Это портит вычисление удара того, где курсор.

Это - удар и не терминальное гномом, который обрубает (правильно не отображается), последние две буквы

0
ответ дан 11 April 2019 в 22:57

Я знаю, что это старо. Я надеюсь, что @John Doe, если вы решите это, вы сообщите о решении. Вот некоторые из моих мыслей:

  1. Я видел такое поведение в какой-то момент, но я думаю, что это было с конкретным приложением.
  2. Существует взаимодействие между переменной окружения TERM и определением размера терминала при изменении размера. Используйте stty size, чтобы получить отчет о ширине (2-е число), которую ОС считает терминалом. Я подозреваю, что ширина на 2 столбца больше, чем позволяет окно в вашем номинальном случае. Посмотрите, как это меняется при изменении размера окна. Вы также можете управлять им через stty cols 75. Если вы уменьшите его на 2 столбца и ваша проблема устранена, вы знаете, что это путаница ОС с шириной терминала.
  3. Возможно, псевдосимволы с изменением цвета путаются с реальными символами. Попробуйте удалить все цвета с подсказки PS1.
  4. Просто чтобы убедиться, что gnome-terminal и база данных terminfo не повреждены, попробуйте: apt-get install --reinstall gnome-terminal gnome-terminal-data tinfo5 .
  5. Попробуйте разные значения TERM.
1
ответ дан 29 April 2020 в 15:39

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

Похожие вопросы: