我一直在使用vim计算太多年了,但我从来没有真正学过vimscript。我现在正在尝试。
无论如何,我想将不同的时间传递给睡眠功能。我也希望在传递之前操纵该值。这是一个简单的例子。
function! wait(mil)
let timetowait = mil . "m"
sleep timetowait
endfunction
即使我尝试使用l来为timetowait添加前缀:它说:“无效的参数:l:timetowait”。
将变量值传递给sleep的正确方法是什么?
答案 0 :(得分:6)
有几个问题:
a:
m
execute
以下是一个如何做到这一点的例子:
function! Wait(mil)
let timetowait = a:mil . " m"
exe 'sleep '.timetowait
endfunction
答案 1 :(得分:3)
Vimscript的评估方式与:
命令行中输入的Ex命令完全相同。 ex
中没有变量,因此无法指定它们。以交互方式键入命令时,您可能使用<C-R>=
来插入变量内容:
:sleep <C-R>=timetowait<CR>m<CR>
...但在脚本中,必须使用:execute
。必须引用Ex命令的所有文字部分(单引号或双引号),然后与变量连接:
execute 'sleep' timetowait . 'm'