Выделите текст, определенный шаблоном - PullRequest
0 голосов
/ 03 апреля 2012

Я хотел бы выделить определенную часть текста перед курсором и определенную часть текста после курсора. Части до и после курсора будут определяться неким шаблоном (например, регулярным выражением). Этот шаблон не должен быть ограничен линией. Подсвеченная область будет изменяться при перемещении курсора.

Возможно ли это в настройках vim или скрипте?

1 Ответ

2 голосов
/ 03 апреля 2012

Теоретически, обе следующие команды должны работать:

match Error /\v\u\_\U{-}%#\_.{-}\./
syn match Error /\v\u\_\U{-}%#\_.{-}\./

. В конце концов, с обеими командами я вижу ошибку: выделение не обновляется должным образом, пока я не нажму <C-l>. Более того, :syn match иногда выделяет две разные части двух разных предложений, поэтому первое предпочтительнее (см. Также :h matchadd() и :h 2match, потому что выделение :match может исчезнуть, потому что оно AFAIR используется также чем-то другим) .

Обновление : Хотя из-за описанной выше ошибки я бы не рекомендовал добавлять ее в vimrc, вы можете использовать следующее:

augroup vimrcSentenceMatch
    autocmd!
    autocmd WinEnter * : if !exists('w:sentence_match') 
                     \ |     let w:sentence_match=matchadd('Error', '\v\u\_\U{-}%#\_.{-}\.')
                     \ | endif
augroup END
...