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

10

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

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

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

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

Брайан Кеннеди
источник
Это происходит только в строках длиннее ширины окна вашего термина?
Эссоби
В какой версии Terminal.App/OSX вы используете BTW? Bash версия? Можете ли вы показать нам свой .bashrc?
Essobi

Ответы:

14

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

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

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

Приостановлено до дальнейшего уведомления.
источник
Хорошо, у меня было еще несколько проблем, которые были решены ответчиком в этом потоке StackOverflow - stackoverflow.com/questions/35563/…
Брайан Кеннеди
Это относится и к новым строкам в приглашении. У меня была упущена контрольная последовательность в двухцветном формате, потому что она была в начале PS1, но не снова после символа новой строки внутри.
Walf
0

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

lynxman
источник
0

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

Тони
источник