автоматическое выделение словарных слов при открытии текстового файла в vim

Как заставить vim выделять все слова, которые есть в моем словаре, при открытии текстового файла (при запуске)?

Мой предпочтительный способ - добавить 2 или 3 строки settings/fun/autocmd в мой vimrc, но если это невозможно, какой плагин предлагает именно эту функцию выделения слов в словаре? Заранее спасибо.


person FZed    schedule 26.09.2014    source источник
comment
Проверка орфографии делает обратное и выделяет слова, написанные неправильно (set spell)   -  person FDinoff    schedule 26.09.2014
comment
Возможно, вы могли бы изучить этот vimscript, который позволяет выделить несколько поисковых запросов одновременно (возможно, заполнение на основе файла словаря). vim.wikia.com/wiki/Highlight_multiple_words   -  person Jason Down    schedule 26.09.2014


Ответы (1)


Я пробовал различные подходы, такие как создание пользовательских словарей, а затем переопределение выделения для Normal и SpellBad слов. Я также попытался пометить нужные слова как «редкие» (поскольку Vim использует другое выделение для редких слов), но эти идеи не сработали. Вот лучшее, что я смог придумать:

Определение выделения

Во-первых, определите, как вы хотите, чтобы слова были выделены. В этом примере я хочу, чтобы все числа от одного до десяти были выделены, поэтому я называю свою группу «Числа» и говорю Vim, что я хочу, чтобы эти слова отображались красным цветом либо в терминале, либо в версии с графическим интерфейсом.

highlight Numbers ctermfg=red guifg=red

Вариант 1: Синтаксис

Если слов много, используйте команду syntax, чтобы определить ключевые слова для выделения:

syntax on
syntax keyword Numbers one two three four five six seven eight nine ten One Two Three Four Five Six Seven Eight Nine Ten 

Вариант 2: Совпадение

Обратите внимание, что при использовании параметра синтаксиса вам необходимо включить различные перестановки верхнего и нижнего регистра. Если вы не хотите этого делать, вы можете вместо этого использовать ключевое слово match, которое работает с шаблонами регулярных выражений, а не со списком слов. Используйте параметр \c, чтобы игнорировать регистр.

match Numbers /\c\<one\>\|\<two\>\|\<three\>\|\<four\>\|\<five\>\|\<six\>\|\<seven\>\|\<eight\>\|\<nine\>\|\<ten\>/

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

person Anthony Geoghegan    schedule 30.09.2014
comment
Спасибо за старания, Антон. Я выберу вариант синтаксиса. В некоторых случаях мой словарь слов несколько сотен. Поэтому я полагаю, что мне нужно создать файл vim синтаксиса, как если бы это был язык (.vim/syntax/mine.vim). - person FZed; 01.10.2014
comment
Рад осознавать, что файл синтаксиса может содержать более 4000 ключевых слов без какого-либо замедления при редактировании связанного буфера (типа файла). Мой файл синтаксиса теперь имеет размер 150 КБ. - person FZed; 02.10.2014
comment
Вау! Это поразительно. Интересно знать, что Vim может со всем этим справиться. Спасибо за ответ. - person Anthony Geoghegan; 03.10.2014