Я должен включить escape-последовательности ANSI в \[и \] в подсказке удара?

Я хочу настроить свою подсказку удара использование управляющих кодов ANSI и заметил, что в некоторых практических руководствах в коды включают \[ и \] в то время как в других они не.

Например, они работают одинаково хорошо на меня:

PS1='\e[0;32m foo '
PS1='\[\e[0;32m\] foo '

Интересно, какое значение это имеет?

4
задан 08.12.2012, 22:50

2 ответа

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

8
ответ дан 07.12.2019, 19:12

Это объяснено приятно на этой странице:

Эти последовательности скажут удару, что вложенные символы не занимают места на строке, которая позволит переходу на новую строку продолжать работать правильно. Без них Вы закончите с привлекательной подсказкой, которая испортит экран, если Вы, окажется, будете вводить в команде, которая приближается к крайне правым терминала.

6
ответ дан 07.12.2019, 19:12

Теги

Похожие вопросы