16

我想搜索文件中的所有大写单词,但我不知道该怎么做(或者如果可能的话)。我在stackoverflow上找到了这个解决方案,但它不适用于vim。

4

3 回答 3

29

在命令模式下,假设您没有ignorecase设置选项:

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

或者

/\v<[A-Z]+>

查找长度大于 1 且被单词边界包围的任何大写字母字符串。第二种形式使用“非常神奇”。 :help magic详情

于 2012-06-04T13:32:38.210 回答
24

最短的答案:/\<\u\+\>

于 2012-06-04T13:39:23.417 回答
1

如果您想要所有匹配的大写单词的列表(即您对从一个单词跳转到另一个单词不感兴趣),您可以使用:

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

和:

  • getline(1, '$')返回当前缓冲区中所有行的列表
  • join(lines, ' ')使这个行列表变平
  • split(all_text, separators_regex)建立一个类似单词的元素列表
  • and finally filter(words, uppercase-condition) that selects only the uppercase words.
于 2012-06-04T13:48:31.277 回答