Первые символы команды, повторяющиеся на дисплее при завершении

Первые два символа были повторены, пока я использую Tab для завершения. На скриншоте ниже, cd повторяется.

введите описание изображения здесь

Я пробовал rxvt-unicdoe, xterm, terminator. Все эти терминальные эмуляторы имеют эту проблему.

Zsh версии 5.0.2, конфигурационный файл on-my-zsh

2 Solutions collect form web for “Первые символы команды, повторяющиеся на дисплее при завершении”

Если символы в командной строке иногда отображаются со смещением, это часто происходит потому, что zsh вычислил неверную ширину для подсказки. Симптомы состоят в том, что дисплей выглядит нормально, пока вы добавляете символы или перемещаете символ по символу, но становитесь искаженным (некоторые символы появляются дальше, чем они должны), когда вы используете другие команды, которые перемещают курсор (« Домой» , «Завершение» и т. Д.). .) или когда команда перекрывает вторую строку.

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

Одна из возможностей заключается в том, что в вашем приглашении содержатся escape-последовательности, которые не имеют надлежащего соответствия. Экранирующие последовательности, которые изменяют цвет или другие аспекты форматирования текста или изменяют название окна или другие эффекты, имеют нулевую ширину. Они должны быть включены в конструкцию процентов-скобок %{…%} . В более общем плане escape-последовательность, такая как %42{…%} сообщает zsh, что то, что находится внутри фигурных скобок, составляет 42 символа.

Поэтому проверьте свои параметры подсказки ( PS1 , PROMPT или переменные, которые они ссылаются) и убедитесь, что все escape-последовательности (такие как \e[…m чтобы изменить текстовые атрибуты), обратите внимание, что она может присутствовать через некоторую переменную типа $fg[red] ) находятся внутри %{…%} . Поскольку вы используете oh-my-zsh, проверьте как свои собственные настройки, так и определения, которые вы используете с oh-my-zsh.

Та же проблема возникает в bash. Там последовательности нулевой ширины в подсказке должны быть заключены в \[…\] .

Другая возможность заключается в том, что ваша подсказка содержит символы, отличные от ASCII, и что zsh (или любое другое приложение) и ваш терминал имеют другое представление о том, насколько они широки. Это может произойти, если существует несоответствие между кодировкой вашего терминала и кодировкой, объявленной в оболочке, и эти два кодирования приводят к разной ширине для определенных последовательностей байтов. Как правило, вы можете столкнуться с этой проблемой при использовании терминала, отличного от Юникода, но объявив локализацию Unicode или наоборот.

Приложения полагаются на переменные среды, чтобы знать язык; соответствующий параметр – LC_CTYPE , который определяется из переменных среды LANGUAGE , LC_ALL , LC_CTYPE и LANG (применяется первое из них, которое установлено). Командная locale | grep LC_CTYPE locale | grep LC_CTYPE сообщает вам текущую настройку. Обычно лучший способ избежать проблем с локальностью – позволить эмулятору терминала установить LC_CTYPE , поскольку он знает, какую кодировку он ожидает; но если это не работает для вас, обязательно установите LC_CTYPE .

Те же симптомы могут возникать, когда предыдущая команда отображала некоторый вывод, который не заканчивался в новой строке, так что подсказка отображается в середине строки, но оболочка этого не понимает. В этом случае это произойдет только после выполнения такой команды, а не настойчиво.

Если строка не отображается правильно, команда redisplay или clear-screen (привязанная к Ctrl + L по умолчанию) исправит ее.

У меня была та же проблема, и я нашел решение здесь: https://github.com/robbyrussell/oh-my-zsh/issues/5157#issuecomment-226031519 . Просто ~/.zshrc следующее в свой файл ~/.zshrc .

export LC_CTYPE=en_US.UTF-8

  • Разделить оболочку горизонтально, чтобы показать ls -al и pwd
  • команда чтения в ошибке zsh throws
  • Скрипт Zsh, который принимает переменное количество аргументов
  • Как сохранить распечатку последней команды в переменной оболочки в urxvt / zsh?
  • Команда Echo с оператором AND не выходит
  • Сделайте «.» И «источник» по умолчанию равным ~ / .zshrc
  • Как я могу обнаружить оболочку без входа? (В Zsh)
  • zsh автозавершение некоторых частей каталога
  • Запустите git fetch после любой команды cd
  • Добавление дополнительных привязок к Emacs в редактор строк ZSH (ZLE)
  • Функция zsh: достигается максимальный уровень вложенных функций
  • Interesting Posts

    Когда следует перезагружать компьютер после обновления?

    Сценарий Bash для запуска виртуальной среды python не выполняется

    Запустить программу при загрузке (сервер Debian)

    Самый быстрый способ удалить строку в переменной

    Можно ли перечислить файлы между двумя именами буквенно-цифровым способом?

    Являются ли управляющие последовательности терминального цвета определенными где угодно для bash?

    NMI получен по неизвестной причине 20 – У вас есть странный режим энергосбережения?

    Помощь

    Файл /etc/resolv.conf удаляется при каждой перезагрузке, почему или что?

    Как загрузить все файлы, связанные с веб-сайтом с помощью wget

    Как извлечь сходство между двумя строками

    Разве «сломан» заменить существующий файл без fsync ()?

    Есть ли возможность установить пакет npm без зависимостей?

    pam_faillock и AD / CentOS 7.2

    Сделайте ноутбук, чтобы разбудить клавиатурой и мышью

    Linux и Unix - лучшая ОС в мире.