Я использую 64-битную версию Cygwin, последнюю (на сегодня) версию для Windows 7; и в окне терминала я работаю либо на локальном компьютере, либо по ssh на другом компьютере (Linux). Теперь, иногда, когда я прокручиваю назад историю команд bash и передаю несколько более длинных команд (особенно в случае команд, выполняемых в конце строки с подсказкой и в следующей строке) - продолжая прокрутку, вы печатаете другие команды в строке приглашения, но сохраняет символы из (одной / нескольких) более старых команд, если новая команда короче, например:
[me@mine /some/where]$ the quick brown fox jumped over the lazy dog. the
quick brown fox jumped over the lazy dog.
[me@mine /some/where]$ another command altogether over the lazy do
[me@mine /some/where]$ yet another command jumped over the lazy do
сейчас, не все символы сохраняются. Кроме того, это не всегда происходит - я не уверен, что именно это вызывает.
Однако, если я просто подключусь по ssh к удаленному хосту, используя, скажем, putty, а не через cygwin - я не получу такого поведения, так что, похоже, это проблема с Cygwin или его bash.
clear
, я имею в виду)? Обычная проблема с длиной строки в bash - это приглашение ( PS1
), которое обычно настроено на использование цветов. Если escape-последовательности не заключены в квадратные скобки \ [
и \]
, то bash делает неверные предположения о положении курсора. Обычно об этом сообщают, когда редактируют команду, но прокрутка истории на самом деле не отличается.
Если нет локальной настройки PS1
, следующее место, которое нужно посмотреть, - это описание терминала (значение TERM
). Совсем недавно Cygwin использует mintty
в качестве окна терминала. Это потомок putty
... Он устанавливает TERM = xterm
. Но есть различия между поведением mintty
и xterm
(так же, как отличается putty
). Например, при выполнении tack
сообщается, что bw
(обратный перенос) неверен. bash, похоже, не использует это напрямую (хотя некоторые скрипты могут). Его переход вперед ( am
) также отличается от xterm
(видно с vttest
), а bash может иметь некоторую зависимость от поведения xterm.
Если вы использовали xterm
от Cygwin и сравнили его с mintty
от Cygwin, вы могли бы получить лучшее сравнение.
Возможные проблемы:
Часть конвейера TTY имеет неверное представление о ширине вашего терминала
Что-то запутался в Юникоде
Вы находитесь на альтернативном экране, и символы не перезаписываются правильно (память, которую я использую для этой идеи, расплывчата, и я могу ошибаться в деталях)