如何在vim中匹配时忽略字符

时间:2013-08-01 05:18:10

标签: vim match

我在过去几天尝试Vim(在Windows 7上使用gvim)并且必须说它非常有趣,尽管它确实有一个陡峭的学习曲线。

我现在有一个体面的_vimrc文件,感谢这个论坛,但我正在寻找一种特定的模式忽略技术。

假设在文本文件中我有一个像这样的字符串:

10000000c9abcdef

并且在同一个文件中我有相同的字符串,只用以下两个字符分隔:

10:00:00:00:c9:ab:cd:ef

或者,我有一行如

hostname portname switchname

以及

hostname_portname_switchname

如何与10000000c9abcdef进行vim匹配10:00:00:00:c9:ab:cd:ef并将hostname portname switchnamehostname_portname_switchname匹配?

截至目前,如果我将光标放在10:00:00:00:c9:ab:cd:ef下方并点击*,它只会突出显示并匹配10:00:00:00:c9:ab:cd:ef,但如何使其与10000000c9abcdef匹配?或hostname_portname_switchnamehostname portname switchname

基本上,我希望vim忽略非单词字符(假设非单词字符是空格,制表符,:,::,逗号,冒号,分号等)。

有办法吗?

2 个答案:

答案 0 :(得分:1)

选择与*的匹配后,您可以修改搜索模式以更改任何文字非关键字字符(\k\@!.)以匹配任何非关键字,可选(\?) :

:let @/ = substitute(@/, '\k\@!.', '\\%(\\k\\@!.\\)\\?', 'g')

要同时使用_,您必须调整正则表达式,或:set iskeyword-=_

答案 1 :(得分:0)

不太容易。您将定义一个函数,它将提取光标下的单词,删除任何非字母数字,在每个字符之间插入[^a-z0-9]*,然后搜索;然后映射#/来调用该函数。但它也会匹配hos - tnamep; ort - names - witch - name

相关问题