我在过去几天尝试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 switchname
与hostname_portname_switchname
匹配?
截至目前,如果我将光标放在10:00:00:00:c9:ab:cd:ef
下方并点击*,它只会突出显示并匹配10:00:00:00:c9:ab:cd:ef
,但如何使其与10000000c9abcdef
匹配?或hostname_portname_switchname
与hostname portname switchname
?
基本上,我希望vim忽略非单词字符(假设非单词字符是空格,制表符,:,::,逗号,冒号,分号等)。
有办法吗?
答案 0 :(得分:1)
选择与*
的匹配后,您可以修改搜索模式以更改任何文字非关键字字符(\k\@!.
)以匹配任何非关键字,可选(\?
) :
:let @/ = substitute(@/, '\k\@!.', '\\%(\\k\\@!.\\)\\?', 'g')
要同时使用_
,您必须调整正则表达式,或:set iskeyword-=_
。
答案 1 :(得分:0)
不太容易。您将定义一个函数,它将提取光标下的单词,删除任何非字母数字,在每个字符之间插入[^a-z0-9]*
,然后搜索;然后映射#
和/
来调用该函数。但它也会匹配hos - tnamep; ort - names - witch - name
。