Чому 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де є вся команда, і я можу використовувати клавіші курсору для переміщення по рядку, але не всі воно друкується. Існує відключення між тим, що показано на лінії, і тим, що термінал насправді думає, що я редагую.

Хтось має поняття, чому це може статися? Шукати веб-сайти непросто.


Це трапляється лише на рядках, довших за ширину вікна вашого терміна?
Essobi

У якій версії Terminal.App/OSX використовується BTW? Версія Bash? Чи можете ви нам також показати свій .bashrc?
Essobi

Відповіді:


14

Можливо, у вашому запиті є послідовності втечі кольорів, які не належним чином розмежовані. Їх потрібно укласти \[і в \].

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

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


Добре, у мене було кілька проблем, які були вирішені протягом по відповідального цій темі StackOverflow - stackoverflow.com/questions/35563 / ...
Bryan Kennedy

Це стосується і нових рядків у підказці. У мене була відхилена послідовність контролю за кольором, оскільки це було на початку PS1, але не знову після позначки нового рядка.
Вальф

0

Це може бути пов’язано з тим, як на вашому терміналі налаштовані клавіші евакуації, я зазвичай використовую стрілку вліво або вправо на iTerm або Terminal.app, оскільки я не прихильник негайного повернення, чи це працює для вас ?


0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.