我使用vim已经有很多年了,但是我从来没有真正学好vimscript。我现在正在努力。
无论如何,我想将一个可变的时间量传递给睡眠函数。在传递该值之前,我还希望对其进行操作。这里有一个简单的例子。
function! wait(mil)
let timetowait = mil . "m"
sleep timetowait
endfunction即使我尝试在timetowait上加上前缀l:,它也会显示"Invalid argument: l:timetowait“。
将变量的值传递给睡眠的正确方法是什么?
发布于 2013-02-09 03:48:54
有几个问题:
你的方法应该以一个大写的名称开头,你需要用a:
m
m
execute间接地执行
这里有一个关于如何做到这一点的例子:
function! Wait(mil)
let timetowait = a:mil . " m"
exe 'sleep '.timetowait
endfunction 发布于 2013-02-09 04:14:38
Daan的回答是正确的;这里有更多的背景信息:
Vimscript的计算方式与在:命令行中键入的Ex命令完全相同。ex中没有变量,因此无法指定它们。当以交互方式输入命令时,您可能会使用<C-R>=来插入变量内容:
:sleep <C-R>=timetowait<CR>m<CR>..。但在脚本中,必须使用:execute。Ex命令的所有文字部分都必须用引号引起来(单引号或双引号),然后与变量连接:
execute 'sleep' timetowait . 'm'https://stackoverflow.com/questions/14778789
复制相似问题