2013-08-01 37 views
2

我想在過去的幾天裏Vim(gvim在windows 7上),必須說它非常有趣,雖然它確實有一個陡峭的學習曲線。如何在vim中匹配時忽略字符

我現在有一個體面建立的_vimrc文件,都要感謝這個論壇,但我正在尋找一種特定的模式忽略技術。

假設,在一個文本文件我有一個字符串,像這樣:

10000000c9abcdef 

,並在同一個文件我也有同樣的字符串,只是分隔:每2個字符,像這樣,

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

或者說,我有一個線,例如,

hostname portname switchname 

以及

hostname_portname_switchname 

我怎樣才能使與10:00:00:00:c9:ab:cd:efhostname_portname_switchname比賽hostname portname switchname VIM比賽10000000c9abcdef?現在,如果我將光標放在10:00:00:00:c9:ab:cd:ef的下方並點擊*,它只是突出顯示並匹配10:00:00:00:c9:ab:cd:ef,但我怎樣才能使它匹配10000000c9abcdef?或hostname_portname_switchnamehostname portname switchname

基本上,我想Vim忽略非單詞字符(假設非單詞字符是一個空格,製表符,:,::,逗號,冒號,分號等)

有沒有辦法?

回答

0

不太容易。你可以定義一個函數來提取光標下的單詞,刪除任何非字母數字,在每個字符之間插入[^a-z0-9]*,然後搜索;然後映射#/以調用該函數。但它也會匹配hos - tnamep; ort - names - witch - name

1

*選擇比賽結束後,你可以修改搜索模式改變任何文字非關鍵字字符(\k\@!.)來匹配任何非關鍵字,任選的(\?):

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

也作了這項工作與_,你必須適應正則表達式,或:set iskeyword-=_