Постоянно выделяйте месяц в датах формы yyyymmdd в vim?

#vim

Вопрос:

Используя vim, я хочу выделить среднюю часть ( mm ) yyyymmdd в другом цвете.

Например

20010101 следует выделить как 2001 01 01

и

20101010 должен быть выделен как 2010 10 10.

Я смог выделить всю дату целиком, включив следующие строки в свой файл .exrc:

 highlight yyyymmdd ctermbg=green guibg=green
match yyyymmdd /(19|20)dd(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])/
autocmd BufWinEnter * match yyyymmdd /(19|20)dd(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])/
autocmd InsertEnter * match yyyymmdd /(19|20)dd(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])%#@<!$/
autocmd InsertLeave * match yyyymmdd /(19|20)dd(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])/
autocmd BufWinLeave * call clearmatches()
 

Но я еще не понял, как выделить только mm yyyymmdd «о».

Комментарии:

1. Точно так же, как вы делали это в течение всего свидания, с соответствующим рисунком.

2. Я хочу выделить только часть шаблона, т. Е. я хочу выделить 12 в 19991231, но не в 99991299

Ответ №1:

Вы можете использовать :h zs и :h ze для выделения только части рисунка. Например,

 highlight yyyymmdd ctermbg=green guibg=green
match yyyymmdd /(19|20)d{2}zsd{2}zed{2}/