删除VIM中的一个和两个字母行?

时间:2014-01-14 11:40:04

标签: regex vim

我有一个包含一堆城市名称的数据源,但混合使用的是很多不应该存在的州名缩写。

在VIM中是否有办法删除每行而不是包含两个或更少的字符?

1 个答案:

答案 0 :(得分:6)

这是:

:g/^\a\{1,2}$/d

解释

  • 删除...... →调用:global命令(默认为%范围,整个缓冲区)的每一行;执行的命令是:delete
  • 两个字符或更少→在正则表达式中,任何字符都由.匹配,以将此值限制为1或2,使用\{n,m} multi。这仍然需要通过^$ 锚定到行的开头和结尾,以便其他字符不会匹配。哦,如果您还想删除完全空行,请将其更改为.\{,2}。有关详细信息,请参阅:help /\{
  • 更强大的“字符”:.将匹配任何字符,即空格。为避免不必要的匹配,最好尽可能地限制它。如果您的州缩写只是字母,则可以使用\a原子而不是.可用的字符类从:help /\i的帮助开始。