在这一点上一片空白,谷歌也帮不上忙。
我想做一个这样的函数:
function JakPaste()
let tmp = :set paste?
if tmp == "paste"
set nopaste
else
set paste
endif
endfunction
map <F2> :call JakPaste()<CR>
然而,这并不起作用。我已经隔离了这条虚线:
function JakPaste()
let tmp = set paste?
endfunction
map <F2> :call JakPaste()<CR>
按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
我应该如何从vim函数调用ex命令(set)?
This看起来有点相关,但是我还是不明白。
发布于 2010-03-30 03:10:26
这不起作用的原因是,您试图在表达式中运行命令-这是不同的事情。您使用的?
构造只会导致vim回显选项的值;这与返回值的函数不同。需要说明的是:问题不在于从函数中调用ex命令-该函数的每隔一行都是ex命令-而是您在表达式中调用ex命令。
但这不是执行您在这里尝试的任务的正确方式。以下是最短的方法,感谢rampion的评论:
set paste!
现在,如果您需要比简单地反转布尔值更聪明的方法,您可以使用&
将选项名转换为可用的变量。这里有两种方法来使用它:
" 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
https://stackoverflow.com/questions/2540524
复制相似问题