gpt4 book ai didi

Vim:从函数调用 ex 命令(set)?

转载 作者:行者123 更新时间:2023-12-04 00:48:36 24 4
gpt4 key购买 nike

对此画一个空白,谷歌没有帮助。

想做一个这样的函数:

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似乎有些相关,但我仍然不明白。

最佳答案

这不起作用的原因是您试图在表达式中运行命令 - 这些是不同的事情。 ?您使用的构造只会导致 vim 回显选项的值;这与返回值的函数不同。要明确:问题不在于您从函数中调用 ex 命令 - 函数的其他每一行都是 ex 命令 - 而是您在表达式中调用 ex 命令。

但这不是执行您在这里尝试的任务的正确方法。由于rampion的评论,这是最短的方法:

set paste!

现在,如果你需要比反转 bool 值更智能的东西,你可以使用 &将选项名称转换为可用变量。这里有两种使用方法:
" 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

关于Vim:从函数调用 ex 命令(set)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2540524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com