Я использую исходный ~ / .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» скрыта. Проблема всегда возникает в первом ряду!
Я провел несколько экспериментов и заметил различное «странное» поведение при изменении либо длины текущего пути, либо ширины окна.Я могу выделить пять случаев:
Если длина текущего пути мала, я могу изменить размер окна, но каждая строка все равно будет в порядке (нет скрытых символов ни в одной строке) ;
если я немного увеличьте длину (например, добавив каталог), последний символ первой строки будет скрыт ;
Если я использую команду cd ..
для возврата до точки 1 и измените размер окна так, чтобы путь занимал более одной строки, пять символов скрыты (та же длина, но другое поведение) ;
Изменяя ширину окна, часть строка перезаписывается , как в следующих примерах: ........ m $ rname @ hostname: / directory / directory / directory / directory |
$ ername @ hostname: / directory / directory / directory / directory |
В первом примере подстрока «использование» удаляется, а символ «m» появляется из ниоткуда! Второй пример возникает, если я немного укорачиваю ширину окна: как вы видите, подстрока «us» удаляется. В обоих случаях gnome-terminal позволяет мне писать команды в этой строке, которые будут удаляться по мере ввода.
Если я нахожусь в каталоге с коротким именем, например / 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=
В Вашем PS1 необходимо включить непечатаемые символы (и только они!) в \[
и \]
. Вы также включаете печатаемые (как @
, но также и заполнители как \h
. Это портит вычисление удара того, где курсор.
Это - удар и не терминальное гномом, который обрубает (правильно не отображается), последние две буквы
Я знаю, что это старо. Я надеюсь, что @John Doe, если вы решите это, вы сообщите о решении. Вот некоторые из моих мыслей:
stty size
, чтобы получить отчет о ширине (2-е число), которую ОС считает терминалом. Я подозреваю, что ширина на 2 столбца больше, чем позволяет окно в вашем номинальном случае. Посмотрите, как это меняется при изменении размера окна. Вы также можете управлять им через stty cols 75
. Если вы уменьшите его на 2 столбца и ваша проблема устранена, вы знаете, что это путаница ОС с шириной терминала. apt-get install --reinstall gnome-terminal gnome-terminal-data tinfo5
.