2012-01-24 24 views
2

我正在使用Vim來讀取人,並且我正嘗試在我的vimrc中設置一個腳本,該腳本將顯示NERDTree,除非我正在從手冊頁讀取。Vimscript中的字符串比較

我有在的vimrc以下:

" This is needed because $MANPATH wasn't set in my environment  
let $MANPATH=substitute(system("manpath"),"\n","","") 

if (match(expand("%:p:h"),$MANPATH) == -1) 
    echo ("manpath is: ".$MANPATH) 
    echo ("path is: ".expand("%:p:h")) 
    echo ("match: ".match(expand("%:p:h"),$MANPATH)) 
    " Load NERDTree here 
endif 

當我運行Vim通常,它按預期工作:

[email protected]:~$ vim file.txt 
manpath is: /usr/local/man:/usr/local/share/man:/usr/share/man 
path is: /home/andrey 
match: -1 

然而,打開手冊頁返回此:

[email protected]:~$ man vim 
manpath is: /usr/local/man:/usr/local/share/man:/usr/share/man 
path is: /usr/share/man 
match: -1 

人們會認爲這是一個相當直接的匹配,但似乎並不奏效。誰能幫忙?

回答

2

它看起來像你有錯誤的方式match()的論據。第一個參數應該是要搜索的表達式(在您的案例中爲$MANPATH),第二個參數應該是搜索模式。

有關該功能的完整說明,請參閱:help match()

+0

Ouch。一直在使用所有字符串比較函數相反的語言 - 但這仍然不是理由。感謝您的幫助! – Andrey

+0

沒問題 - 很簡單! –