Ctrl+ rотличный маленький инструмент для поиска .bash_history
ранее запущенных команд.
Однако, когда я использую его в своем OS X Terminal.app, я вижу странное поведение, и мне было интересно, видит ли кто-то еще то же самое или знает, как это исправить.
- Ctrl+r
- введите что-то вроде
find
- о круто, смотри ... это команда, которую я хотел
find . -exec grep -q "hello world" '{}' \; -print
- Я хочу выполнить эту команду, но изменить мир привет на что-то другое.
- Так что я ударил ←или→
- Теперь команда - это SORTA в командной строке, но она всегда выглядит как некая усеченная версия команды, например:
-q "blog_posts_by" '{}' \; -print
где вся команда, и я могу использовать клавиши курсора для перемещения по строке, но не все это напечатано. Существует разрыв между тем, что показано в строке, и тем, что терминал действительно думает, что я редактирую.
Кто-нибудь знает, почему это может произойти? Это не легкое явление для поиска в сети.
Ответы:
Возможно, в вашем приглашении есть escape-последовательности для цветов, которые не разделены должным образом. Они должны быть заключены в
\[
и\]
.Длина непечатных символьных последовательностей не включается в длину приглашения, когда они, таким образом, заключены, и необходимо рассчитать положение предыдущих команд для правильного отображения при переносе.
источник
PS1
, но не снова после символа новой строки внутри.Это может быть связано с тем, как на вашем Терминале сконфигурированы управляющие клавиши, обычно я использую стрелку влево или вправо в iTerm или Terminal.app, так как я не являюсь поклонником немедленного нажатия кнопки возврата. ?
источник
Другой возможной причиной этой проблемы является неправильное
TERM
значение. Например, это случилось со мной, когда я использовал цвета в моем PS1, но мойTERM
был установлен наxterm
. Я изменил его на,xterm-256color
а затем CTRL-r снова начал работать правильно.источник