2012-08-29 12 views
7

我想編寫調用setlocal一些變量設置爲參數(S),我傳遞的功能。但我發現了錯誤Number required after =: tabstop=...如何在vim功能的設定數值變量

function! MyFunction(param) 
    setlocal tabstop=param 
    setlocal tabstop=a:param 
endfunction 

兩條線都會失敗。是否有某種我失蹤的可變插值?

回答

15

您需要將該選項定義爲&option變量。例如:

fun! MyFun(param) 
    let &l:tabstop = a:param 
endfun 

請參閱:help let-&&l:在該標籤下方稍微列出,表明其等效於setlocal。基本上,當你想設置一個表達式而不是一個定義的值時,你需要使用let &option=而不是set option=。使用let &l:option=而不是setlocal option=。還有&g:option全局設置選項。

+2

關於'&l:'和'&g:'的好的解釋,但是'tabstop'是緩衝區的本地,所以不需要做一個'let&l:tabstop = a:param',一個簡單的'let&tabstop = a:param'會做。 –

+0

非常感謝@Conner! @PeterRincker啊,但我也必須設置其他的變量。儘管感謝您的領導。 – jjt

+1

謝謝!我花了將近一個小時,弄清楚如何執行我的第一個vim函數,在一個命令中設置tabstop和shiftwidth。現在我正在浪費整天寫vim函數的方法...... – jbo5112