Как заставить обратный поиск bash работать в Terminal.app без искаженного вывода?

StackOverflow https://stackoverflow.com/questions/35563

  •  09-06-2019
  •  | 
  •  

Вопрос

Используя Terminal.app в OS X 10.5, часто вы видите, что команды искажаются, когда вы выполняете обратный поиск с помощью Bash. Есть ли какой-нибудь termcap или, возможно, команда bash shopt, которая может это исправить? Это очень раздражает.

Шаги для воспроизведения: Откройте Terminal.app, выполните обратный поиск для длинной команды. Нажмите & Lt; ctrl & Gt; -E, как только найдете команду. Курсор уходит в конец строки, но дисплей не обновляется.

Я предполагаю, что это какая-то проблема с библиотекой readline в OS X. Это больше проблема с обновлением позиции курсора после поиска, чем с чем-либо еще. По сути, ctrl-a и ctrl-e имеют тенденцию нарушать результаты поиска.

Изображение сбоя терминала os x http://involution.com/images/osxterminal.png

В приведенном выше примере первая часть команды должна отображаться, а курсор должен находиться в конце строки, но это не так. Вы буквально не видите, что редактируете, когда это происходит.

Это было полезно?

Решение

Я смог установить для своего TERM значение xterm вместо xterm-color, и это решило проблему. (экспорт TERM = xterm).

Другие советы

Я столкнулся с этой ошибкой, и хотя я не знаю, как ее устранить, вы можете обойти ее, нажав <down><up>

Не уверен, является ли это проблемой здесь, но очень распространенной причиной испорченного экрана в bash (с любым эмулятором терминала, не только Terminal.app) является изменение размера окна.

Bash прочитает размер окна при запуске, а затем предположит, что он не изменился. При изменении размера окна сигнал будет отправлен в любое приложение, которое в данный момент читает с консоли. Если это не bash (потому что вы, возможно, в то время работали в текстовом редакторе), то bash об этом не узнает.

Решение в этом случае состоит в том, чтобы снова изменить размер окна, чтобы bash получил сигнал и заметил новый размер.

Я не могу воспроизвести это, нажимая Ctrl + E , Ctrl + A или стрелку Ключи обновляет командную строку правильно. У вас работает 10.5.4? Возможно, это ошибка в более ранних версиях?

В худшем случае вы можете запустить X-сервер (где-то под утилитами) и запустить настоящий xterm.

scroll top