如何在vim中查找所有大写字母?

18

我想在一个文件中查找所有的大写字母单词,但是我不知道如何做到这一点(或者是否可能)。 我在stackoverflow上找到了这个解决方案,但在vim上它不起作用。


2
你想用这些结果做什么?根据你的话,它可能只需要一个非常简单的正则表达式,比如[A-Z][a-z]+。 - hovanessyan
3个回答

32

假设您没有设置选项ignorecase,从命令模式开始:

/\<[A-Z]\+\>
或者
/\v<[A-Z]+>

查找任何一个被单词边界包围且长度大于一的大写字母字符串。 第二种形式使用 'very-magic'。 有关详细信息,请参阅:help magic


我是做错了什么还是你的表达不对?我得到了所有单词的高亮显示,包括小写和大写...我正在使用gvim。 - sica07
谢谢William,那就是问题所在。 - sica07
2
sagod的答案更优秀,因为它不依赖于ignorecase设置。 - William Pursell

26
最简单的答案: /\<\u\+\>

4
“\u”表示大写字母,例如[A-Z]。 - agudulin
2
@sica07,你也可以使用Vim的帮助::help \u - dusan

1
如果您想要列出所有匹配的大写单词(即您不想跳转到其他单词),可以使用以下方法:
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) 仅选择大写单词。

谢谢您的回答,但我只想从一个跳到另一个。 - sica07

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接