nano подсветка синтаксиса (nano подсветка синтаксиса)

Модератор: /dev/random

Ответить
Аватара пользователя
bars
Сообщения: 917
ОС: BSD/LINUX
Контактная информация:

nano подсветка синтаксиса

Сообщение bars »

Добрый день.
Настраиваю подсветку синтаксиса в nano для конфигов nginx.
Застрял на:
Все круглые скобки {} в конфиге nginx подсвечиваются синим, но я хочу сделать исключения в регулярный выражениях if что бы они были красным.
Пример

Код: Выделить всё

if (!-f $request_filename) {
        rewrite  ^(.*)/index.php$  $1/ redirect;
 }
Вот что есть в nginx.nanorc.

Код: Выделить всё

color brightblue  "(events|server[[:space:]]\{|http[[:space:]]\{|location[[:space:]].*\{$|upstream|[{}])"
color red "^if[[:space:]]\((.+)\)[[:space:]]\{"
При таком варианте содержимое регулярки и открывающая круглая скобка { красятся красным, закрывающая скобка } синим, хочется что бы и закрывающаяся скобка } была красным и в то же время содержимое {} не красилось.
Не могу понять как создать исключение.
Спасибо за содействие.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: nano подсветка синтаксиса

Сообщение Bizdelnick »

bars писал:
21.05.2020 09:23
Все круглые скобки {}
Так круглые или фигурные?
bars писал:
21.05.2020 09:23
в регулярный выражениях if
В регулярных выражениях или в условии/блоке if?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 917
ОС: BSD/LINUX
Контактная информация:

Re: nano подсветка синтаксиса

Сообщение bars »

Bizdelnick писал:
21.05.2020 10:26
bars писал:
21.05.2020 09:23
Все круглые скобки {}
Так круглые или фигурные?
bars писал:
21.05.2020 09:23
в регулярный выражениях if
В регулярных выражениях или в условии/блоке if?
В условиях блока if в конфиге виртуал хоста nginx, фигурные скобки, ошибся чуть.
Хочу закрасить
if (!-f $request_filename) {
rewrite ^(.*)/index.php$ $1/ redirect;
}
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: nano подсветка синтаксиса

Сообщение Hephaestus »

bars писал:
21.05.2020 09:23
Все круглые скобки {}
Вообще-то, это фигурные скобки, не круглые.
bars писал:
21.05.2020 09:23
подсвечиваются синим
Подсвечиваются только сами скобки или содержимое тоже?
bars писал:
21.05.2020 09:23
Не могу понять как создать исключение.
Я редактором nano не пользуюсь, но судя по man-странице, похоже, что никак.
Объясняю, почему.
bars писал:
21.05.2020 09:23
color brightblue "(events|server[[:space:]]\{|http[[:space:]]\{|location[[:space:]].*\{$|upstream|[{}])"
Выделенный полужирным участок отвечает за окраску квадратных и фигурных скобок в яркий синий.

Ваше выражение
bars писал:
21.05.2020 09:23

Код: Выделить всё

color red "^if[[:space:]]\((.+)\)[[:space:]]\{"
окрашивает инструкцию if до первой скобки.
Вариант

Код: Выделить всё

color red "^if[[:space:]]\((.+)\)[[:space:]]\{\}"
окрасит if с двумя скобками, но только если блок пустой.

Вариант

Код: Выделить всё

color red "^if[[:space:]]\((.+)\)[[:space:]]\{(.+)\}"
окрасит весь блок вообще, включая содержимое скобок.

Чтобы получить вариант, который Вам нужен,
требуется часть строки окрасить красным, часть "не красным".
А это невозможно в одной инструкции.

Здесь нужно что-то вроде вложенных инструкций типа
color red (... color blue(...) ...)
а таких вроде не предусмотрено.


В man-странице упоминается конструкция вида

Код: Выделить всё

color fgcolor,bgcolor start="sr" end="er"
которая позволяет окрашивать текст между двумя регекспами "от и до".
Но это всё равно не то, что нужно.

Я не знаю, существуют ли регекспы, позволяющие выдергивать строку частями (начало строки выдернуть, середину пропустить, конец опять выдернуть).
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 917
ОС: BSD/LINUX
Контактная информация:

Re: nano подсветка синтаксиса

Сообщение bars »

Перепутал название фигурных скобок {}
Есть настройка виртуал хоста.
Ко всему файлы применен единый цвет для этих скобок [{}].
Но я хочу сделать исключения для регулярок, закрасить саму регулярку if (!-f $request_filename) и фигурные скобки их {}, не закрашивать содержимое фигурных скобок {}.
if (!-f $request_filename) {
rewrite ^(.*)/index.php$ $1/ redirect;
}
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Ответить