2012-05-15 2 views
13

Это странно, что я не смог найти хороший ответ с Google (конечно, всегда есть вероятность, что я просто потерплю неудачу). В моем приглашении bash, если я окрашу часть подсказки, когда я нажимаю «вверх», чтобы перейти к предыдущей команде, я не могу перейти к началу строки после того, как она прошла определенное количество символов (в частности, 31) ,Bash prompt history issue

Мой текущий Баш подсказка заключается в следующем: (цвета определены ранее в моем .bashrc)

PS1="[\[email protected]$cyan\h$NC \w] " 

Но если я могу изменить его к этому:

PS1="[\[email protected]\h \w] " 

Он больше не мешает мне идти к началу строки.

Нечетная часть, визуально, когда я попал домой, чтобы перейти к началу строки (или использовать клавиши со стрелками), она останавливает 11 символов в строке, но если я отредактирую ее там, она отредактирует начиная с начала строки.

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

ответ

25

Непечатные последовательности, такие как цветовые коды, должны быть окружены \[ и \], поэтому их длины не считаются частью длины подсказки.

+1

[Примеры] (https://github.com/l0b0/tilde/blob/9161937d6173e65e81de145bbc7edbbb074e99e5/.bashrc#L92) – l0b0

+0

Это было именно оно, спасибо! –

+0

У меня была эта неприятная проблема в течение нескольких месяцев. Спасибо! +1 – jweyrich