如何在vim函数中设置数值变量

jjt*_*jjt 8 vim

我正在尝试编写一个函数,调用setlocal将一些变量设置为我传入的参数.但是我收到了错误Number required after =: tabstop=...

function! MyFunction(param)
    setlocal tabstop=param
    setlocal tabstop=a:param
endfunction
Run Code Online (Sandbox Code Playgroud)

两条线都会失败.我缺少某种变量插值吗?

Con*_*ner 17

您需要将选项定义为&option变量.例如:

fun! MyFun(param)
   let &l:tabstop = a:param
endfun
Run Code Online (Sandbox Code Playgroud)

:help let-&.在&l:列出少许表示这是相当于该标签下面setlocal.基本上,当您想要为表达式而不是定义的值设置选项时,您需要使用let &option=而不是set option=.用let &l:option=而不是setlocal option=.还有&g:option全局设置选项.

  • 关于`&l:`和`&g:`,但是`'tabstop'`的很好的解释是缓冲区本地的,所以不需要做一个`let&l:tabstop = a:param`,一个简单的`let&tabstop = a: param`会做的. (2认同)