如何在Vim中进行类似于
这可以在Vim中完成吗?
grep -w
的全字匹配搜索,仅返回包含所寻找字符串为整个单词而非单词的一部分的行?
grep -w
:仅选择包含形成整个单词的匹配项的行。这可以在Vim中完成吗?
grep -w
的全字匹配搜索,仅返回包含所寻找字符串为整个单词而非单词的一部分的行?
grep -w
:仅选择包含形成整个单词的匹配项的行。\<bar\>
匹配 bar
,但不包括 foobar
、barbaz
、foobarbaz
。
用它来进行替换操作:
:s/\<bar\>/baz
按照以下方式使用它,以列出包含整个单词bar
的所有行:
:g/\<bar\>
:h pattern
是一篇很好的阅读材料。
您想要的是 /\<yourword\>
。
如果您的光标在一个单词上,那么您可以按下*
键,它会对光标下的单词进行仅限于单词的搜索。
通过使用“非常魔法” \v,可以简化命令:
/\v<yourword>
正如评论中所提到的,\v
表示所有非字母数字字符都有特殊含义,因此只需要输入 <
和 >
,而不是使用 \<
和 \>
进行转义。
\v
是一种非常有用的方法,可以使命令简单明了。 - rnsomap w /\v<><Left>
这个映射使用了魔法,通过在"<"和">"之间移动光标位置来实现。一旦按下'w',您就可以立即输入要搜索的单词,并按Enter键执行整个单词搜索。
当然,您也可以选择自己喜欢的字母进行映射。
\<
\>
。 - mekb
bar
与foobar
和barbaz
进行匹配,可以使用g*
。根据文档:g* 类似于“*”,但不会在单词周围加上 "<" 和 ">"。这使得搜索还可以找到不是整个单词的匹配项。{在 Vi 中不可用} - Ambareesh\
时具有特殊行为,而有些字符在没有前缀为\
时具有特殊行为? - mekbabc
”,也可以是复杂的,就像你能想到的任何东西一样。由于语法必须被限制为仅使用可打印的ASCII字符,并且所有这些字符都可能出现在原始文本中,也都可以被搜索,因此需要一种机制来将字符与元字符分开。<
本身是一个字面上的<
字符,可以匹配,但是如果前面加上\\
,它就变成了一个元字符,表示“单词的开头”。 - romainl