six*_*ude 2 vim function set ex
在此上画一个空白,谷歌没有帮助.
想要制作这样的功能:
function JakPaste()
let tmp = :set paste?
if tmp == "paste"
set nopaste
else
set paste
endif
endfunction
map <F2> :call JakPaste()<CR>
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我已经隔离了这条折线:
function JakPaste()
let tmp = set paste?
endfunction
map <F2> :call JakPaste()<CR>
Run Code Online (Sandbox Code Playgroud)
按F2会导致此错误:
Error detected while processing function JakPaste:
line 1:
E121: Undefined variable: set
E15: Invalid expression: set paste?
Hit ENTER or type command to continue
Run Code Online (Sandbox Code Playgroud)
我应该如何从vim函数调用ex命令(set)?
这似乎有点相关,但我仍然没有得到它.
这不起作用的原因是你试图在表达式中运行命令 - 这些是不同的东西.?您使用的构造只会使vim回显选项的值; 这与返回值的函数不同.要明确:问题不在于你从一个函数调用一个ex命令 - 该函数的每一行都是一个ex命令 - 它是你在一个表达式中调用ex命令.
但这不是执行你在这里尝试的任务的正确方法.这是最短的方式,感谢rampion的评论:
set paste!
Run Code Online (Sandbox Code Playgroud)
现在,如果您需要更智能的东西而不仅仅是反转布尔值,您可以使用&将选项名称转换为可用变量.以下是两种使用方法:
" still a function, good for taking extra action (here, printing notification)"
function TogglePaste()
if (&paste)
set nopaste
echo "paste off"
else
set paste
echo "paste on"
endif
endfunction
" just set the variable directly"
let &paste = !&paste
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2467 次 |
| 最近记录: |