2

Я ищу регулярное выражение, которое выделит весь текст в строке от 51-го символа до конца для строк, длина которых превышает 50 символов.

Мне нужно, чтобы регулярное выражение не включало первые 50 символов строки.

Причина этого заключается в том, чтобы добавить что-то в файл синтаксиса gitcommit.vim, чтобы сделать его более очевидным, когда я превышаю 50 символов для сводки. Установка ctermbg=red или что-то в этом роде.

Я знаю, что мог бы сделать что-то вроде установки ctermbg=red для всей первой строки, а затем позволить группе синтаксиса gitcommitSummary установить фон обратно для первых 50 символов, но эта проблема заинтересовала меня, и я хотел бы выяснить, если есть возможность для регулярного выражения пропустить просмотр первых X символов строки.

Я играл с чем-то вроде следующего, но это просто утверждение нулевой ширины, поэтому, очевидно, оно не работает. Есть идеи?

# This just highlights all lines exceeding 50 characters
/^\(.\{50\}\)\@=.*$

РЕДАКТИРОВАТЬ: Только что понял, что файл gitcommit.vim на самом деле имеет подсветку синтаксиса для этого с помощью "nextgroup", и просто закомментировал его по умолчанию. Таким образом, я достиг своей первоначальной цели, но я все еще хотел бы знать, возможно ли это сделать с помощью регулярного выражения.

1 ответ1

6

Атом регулярного выражения Vim для сопоставления в определенном столбце равен \%Nc где N - номер столбца. Увидеть

:help /\%c

Чтобы соответствовать номеру виртуального столбца, атом равен \%Nv . Увидеть

:help /\%v

Чтобы найти что-нибудь после столбца 50, вы можете использовать

/\%>50v

где > означает совпадение в любом столбце после столбца 50. Вы также можете использовать это регулярное выражение в команде:match следующим образом:

:match ErrorMsg /\%>50v/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .