Как искать все слова верхнего регистра в vim?

Я хотел бы искать все слова верхнего регистра в файле, но я понятия не имею, как это сделать (или, если возможно). Я нашел это решение здесь, в stackoverflow, но он не работает на vim.

Ответ 1

Из командного режима, если у вас нет опции ignorecase:

/\<[A-Z]\+\>

или

/\v<[A-Z]+>

Находит любую строку заглавных букв больше длины, окруженную границами слов. Вторая форма использует "очень-волшебную". :help magic для деталей

Ответ 2

Самый короткий ответ: /\<\u\+\>

Ответ 3

Если вам нужен список всех совпадающих слов в верхнем регистре (т.е. вас не интересует переход от одного слова к другому), вы можете использовать:

echo filter(split(join(getline(1, '$'), ' '), '\v(\s|[[:punct:]])'), 'v:val =~ "\\v<\\u+>"')

С

  • getline(1, '$'), который возвращает список всех строк из текущего буфера
  • join(lines, ' '), который выравнивает этот список строк
  • split(all_text, separators_regex), которые строят список текстовых элементов
  • и, наконец, filter(words, uppercase-condition), который выбирает только слова верхнего регистра.