Назад | Перейти на главную страницу

Почему CTRL-r действует странно (показывает только часть команды) в OS X

Ctrl+р отличный маленький инструмент для поиска вашего .bash_history для ранее запущенных команд.

Однако, когда я использую его в своем OS X Terminal.app, я вижу странное поведение, и мне было интересно, видит ли кто-нибудь то же самое или знает, как это исправить.

  1. Ctrl+р
  2. введите что-то вроде find
  3. о, круто, смотри ... это та команда, которую я хотел find . -exec grep -q "hello world" '{}' \; -print
  4. Я хочу запустить эту команду, но заменить hello world на что-нибудь другое.
  5. Так что я ударил или
  6. Теперь это команда SORTA в командной строке, но она всегда выглядит как некоторая усеченная версия команды, например: -q "blog_posts_by" '{}' \; -print, где присутствует вся команда, и я могу использовать клавиши курсора для перемещения по строке, но не вся она печатается. Существует несоответствие между тем, что показано в строке, и тем, что терминал на самом деле думает, что я редактирую.

Кто-нибудь знает, почему это могло произойти? Искать в сети - непростое явление.

Вероятно, у вас есть escape-последовательности для цветов в вашем приглашении, которые не разграничены должным образом. Их нужно заключить в \[ и \].

PS1='\[\033[1;36m\]\u\[\033[0m\]@\[\033[1;34m\]\h\[\033[0m\]\$ `

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

Другая возможная причина этой проблемы - неправильный TERM стоимость. Например, это случилось со мной, когда я использовал цвета на своем PS1, но мои TERM был установлен на xterm. Я изменил это на xterm-256color а затем CTRL-r снова начал работать правильно.

Это может быть связано с тем, как клавиши выхода настроены на вашем Терминале, обычно я использую стрелку влево или вправо на iTerm или Terminal.app, поскольку я не фанат немедленного нажатия клавиши возврата, работает ли это для вас ?