Vim: сопоставление шаблонов только между ключевыми словами

#c #vim

Вопрос:

В vim определяются ключевые слова с точки зрения языка. Я хочу найти шаблоны, использующие регулярное выражение, только среди этих ключевых слов с точки зрения языка.

Моя первоначальная мотивация заключается в выделении переменных-членов c , которые обычно ставятся с подчеркиванием в конце слова. В приведенном ниже примере я хотел бы выделить только route_graph_ .

 auto graph = route_graph_;
auto path = extract_path(route_graph_);
auto local_graph = createLocalGraph();
 

Моя первоначальная попытка удалась /.*_ , но, очевидно, результат, показанный ниже, был не тем, чего я хотел. Но я думаю, что если бы я мог искать /.*_ только среди ключевых слов, то можно было бы выделить только route_graph_ их .

введите описание изображения здесь

Ответ №1:

Я не знаю, как подобрать ключевые слова, но вы можете добиться этого, .* заменив их чем-то более избирательным.

  • < и > сопоставьте границы слов.
  • w* соответствует словесным символам.

Сложите их вместе, и вы получите:

 /<w*_>
 

Который соответствует только желаемому идентификатору:

vim скриншот выделенных совпадений

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

1. См :help k .Раздел для сопоставления символов ключевых слов и символов :help i идентификаторов.