在VIM中,我想删除任何不是2或3个字符的行。
:g/^..$/d
:g/^...$/d
这些删除了2或3个字符行。如何将两者合二为一并否定,即"不要删除2或3个字符行">
您可以使用:v
在与模式不匹配的行上执行命令。
这需要你使用一个单一的模式。。。在您的情况下,您可以通过使用=
修饰符来选择性地匹配最后一项,从而轻松地做到这一点。
因此,要删除所有包含2或3个字符的行,可以使用:
:g/^...=$/d
删除所有行,包含2或3个字符的行除外:
:v/^...=$/d
下面是我选择的正则表达式
:v/v^.{2,3}$/d
在线试用!
选项:不区分大小写的
- 断言字符串
^
开头的位置 - 匹配任意单个字符
.{2,3}
- 在2到3次之间,尽可能多次,根据需要回馈(贪婪(
{2,3}
- 在2到3次之间,尽可能多次,根据需要回馈(贪婪(
- 断言字符串
$
最后的位置
怎么样"删除所有少于两个或多于三个字符的行";?
:g/^.{,1}$|^.{4,}/d