Дивна поведінка в Терміналі зі спеціальним .bash_profile


8

Важко описати поведінку, але ось короткий кліп:

http://www.youtube.com/watch?v=9KqHBA94FPI

В основному, при введенні багаторядкових команд в кінці першого рядка блок вставки повертається до початку першого рядка, пише над першим рядком, а потім продовжується як нормально до другого, третього і т.д. рядків . Під час видалення це дозволяє мені видалити всю команду, а також порожні пробіли в рядку над командою (у мене це налаштування, щоб команди вставлялися після рядка, що містить інформацію користувача @ host / Directory. Це навіть дозволяє мені видалити Остання описана вище Директорія та хост. Вибачте, я жахливо пояснюю це, відео зробить кращу роботу.

Ось вміст мого .bash_profile:

export PS1="\e[31m\u\e[0m@\e[34m\h\e[33m\w\n \$ \e[0m "

Відповіді:


12

Ви повинні оточувати недрукувальні символи (у цьому випадку ваші послідовності відтворення ANSI) послідовностями bash escape: \[і \]. Таким чином bash буде знати, що вкладені символи не видно, тобто. вони не займають місця, тобто. вони не повинні включатися до обчислення довжини слова, використовуваного загортачем рядків.

іншими словами, змініть своє PS1визначення:

export PS1="\e[31m\u\e[0m@\e[34m\h\e[33m\w\n \$ \e[0m "

… До:

export PS1="\[\e[31m\]\u\[\e[0m\]@\[\e[34m\]\h\[\e[33m\]\w\n \$ \[\e[0m\] "

І ось те саме PS1значення для людського читання, з можливо покращеною читабельністю (ANSI-втечі в нижньому рядку, башти у всьому і друк символів у верхньому рядку.)

          \u          @          \h          \w\n \$
\[      \]  \[     \] \[      \]  \[      \]        \[     \] 
  \e[31m      \e[0m     \e[34m      \e[33m            \e[0m    

Подальше читання:


Це ідеально, вирішило мою проблему. Велике спасибі за допомогу!
Блер Беквіт

Блер, ласкаво просимо просити різних! Якщо вам подобається відповідь на ваше запитання, будь ласка, підтвердіть і прийміть її.
nohillside

0

Я всі,

У мене були подібні проблеми, і я знайшов рішення, просто змінивши мінливу PS1 з початкової на дуже просту, саме мою назву: export PS1 = Alex

Тепер мій термінал вже не має жодної дивної поведінки.

Сподіваюся, це допоможе.

Алекс (на Mac Lion 10.8)

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