2012-12-28 226 views
3

我試圖從使用vim腳本函數聲明只提取函數名。 出於測試目的,我使用這個簡單的例子:VIM替代反斜線

int func(int a); 

在Vim腳本我爲此提取函數名稱:

:let a = substitute(getline(line('.')), ".*\(func\).*", "\1", "") 

但反向引用不工作。當我回顯變量a

:echo a 

它顯示整行,即int func(int a);

如何僅使用bacreference或其他方法提取函數名稱?

在此先感謝!

回答

8

在雙引號內,反斜槓必須轉義。要麼使用單引號('\1'),要麼使用雙反斜槓("\\1")。

詳見:help expr-string

+0

我懷疑除了替換表達式之外,匹配表達式會出現這種情況,所以在這種情況下OP應該使用單引號。引用的字符串總是引發我一個循環,但通常這些天我只在需要將鍵擊輸入到字符串時才使用雙引號。 '「\ 」' –

+0

是的。匹配表達式也需要單引號。 – Soumen