所以我正在学习vim脚本并尝试编写一个函数来切换(删除/添加)字符串中的字符,然后返回结果字符串(注释仅用于堆栈溢出,我知道如何正确评论Vimscript中)
function! ToggleStringValue(input, value)
if a:input =~ value // if the value's there
let &a:input = substitute(a:input, a:value, "", "") // remove it
else
let &a:input .= a:value // otherwise append it
endif
return a:input
endfu
示例(伪)用法:
guioptions = ToggleStringValue(guioptions, "m") // should toggle menu bar on/off
但是我在函数line 4
Unexpected characters in :let
上收到错误
我做错了什么?这是写这个函数的好方法吗?
编辑:在肯特回答笔记后更正版本:
function! ToggleStringValue(input, value)
let l:result = a:input
if l:result =~ a:value
let l:result = substitute(l:result, a:value, "", "")
else
let l:result .= a:value
endif
return l:result
endfu
function! ToggleMenuBar()
let &g:guioptions = ToggleStringValue(&g:guioptions, "m")
endfu
答案 0 :(得分:2)
您的代码有几个问题:
,评论以"
开头,而不是//
,也许您只是将它们放在那里以使问题清楚,我希望它就是这样。
&var
表示一个选项,例如let &number=0
隐藏行号,与set nonumber
相同如果var
不是选项名称,您会看到类似的内容“未知选项”或“选项不存在”
使用a:foo
的方法/函数参数,它们不能更改,它们是只读的。也就是说,let a:foo="blah"
不会去。你必须复制它们。