2015-10-03 3 views
1

Как сообщить less, с -R или иным образом, а не для сброса цветов по линиям новой строки (\n)? Вот пример того, что я вижу:Предотвращение «меньше -R» от сброса цветов по линиям новой строки

$ echo -e '\033[31mThis is red.\nStill red.\n\033[0mBack now.' >> coltest 
$ cat coltest 
This is red. #Colour is red 
Still red. #Colour is red 
Back now. #Colour is the terminal's foreground colour. 
$ less -RF coltest 
This is red. #Colour is red 
Still red. #Colour is the terminal's foreground colour. 
Back now. #Colour is the terminal's foreground colour. 

Почему цвет Still red. сброса на цвет переднего плана терминала на выходе less -RF?

+0

Подумайте о том, что произойдет, если вы прокручиваетесь до конца файла, а затем работали в обратном направлении по одной строке за один раз. Обратите внимание, что 'less' делает это * без * даже глядя на предыдущие строки. – o11c

+0

@ o11c Да, я понимаю, что применение атрибутов по очереди проще. Однако обратите внимание, что действительно есть случаи, когда «less» видит, например, не более одного номера строки. Конечно, это увеличивает время, необходимое для некоторых операций «меньше», но это компромисс, который «меньше» позволяет вам выбирать. Я тоже надеялся на что-то подобное. – Pradhan

ответ

1

В некоторых случаях использования more может быть достаточно:

printf '\033[31mThis is red.\nStill red.\n\033[0mBack now.\n' >> coltest 


more coltest 
+0

'less -r' имеет свой собственный набор проблем, так как страница' man' сообщает вам: «Предупреждение: когда используется опция -r, меньше не удается отслеживать фактический внешний вид экрана (так как это зависит от как экран реагирует на каждый тип управляющего символа). Таким образом, могут возникать различные проблемы с отображением, такие как длинные строки, разбитые в неправильном месте ». В моем случае, 'less -r' испортит цвета, два последовательных цветовых escape-кода более чем экранируют друг от друга. – Pradhan

+0

Я обновил сообщение, чтобы ответить на этот вопрос. –

Смежные вопросы