2

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

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

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

10000000c9abcdef

在同一个文件中,我有相同的字符串,只是用 : 在每 2 个字符处分隔,就像这样,

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

或者,我有一条线,例如,

hostname portname switchname

hostname_portname_switchname

如何使 vim 匹配10000000c9abcdef10: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 忽略非单词字符(假设非单词字符是空格、制表符、:、::、逗号、冒号、分号等)

有办法吗?

4

2 回答 2

1

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

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

要使其与 . 一起使用_,您必须调整正则表达式,或:set iskeyword-=_.

于 2013-08-01T06:47:17.247 回答
0

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

于 2013-08-01T05:25:49.883 回答