从不包含大写字母的文本中删除所有单词

Remove all words from text not containing a capital letter

我在 vim 中有一个如下所示的文件:

class ProviderWorker
  def perform opts
    provider  = Provider.find
    MyFitness.perform
    HG.perform
    IWorker.perform
  end
end

我想删除所有不包含大写字母单词的文本。

我试过了:

:g/[A-Z]\w+/d

但是,这似乎没有达到我的预期(没有删除任何内容)。

预期输出:

ProviderWorker
Provider
MyFitness
HG
IWorker

您可以使用:

%s/\v(<\U*>|\W)//

其中:

  • \v : 使用 vim 的 magic-mode(参见 :h magic
  • (<\U*>|\W):匹配:
    • <\U*> :一个单词(由 <> 分隔)仅包含非大写字母 (\U)
    • \W : 任何非单词字符