首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递变量以在vimscript中休眠

传递变量以在vimscript中休眠
EN

Stack Overflow用户
提问于 2013-02-09 02:13:34
回答 2查看 2.9K关注 0票数 3

我使用vim已经有很多年了,但是我从来没有真正学好vimscript。我现在正在努力。

无论如何,我想将一个可变的时间量传递给睡眠函数。在传递该值之前,我还希望对其进行操作。这里有一个简单的例子。

代码语言:javascript
复制
function! wait(mil)
    let timetowait = mil . "m"
    sleep timetowait
endfunction

即使我尝试在timetowait上加上前缀l:,它也会显示"Invalid argument: l:timetowait“。

将变量的值传递给睡眠的正确方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-09 03:48:54

有几个问题:

你的方法应该以一个大写的名称开头,你需要用a:

  • You来访问你的参数,在m

  • You和

  • 之间必须有一个空格,m

  • You必须使用execute

间接地执行

这里有一个关于如何做到这一点的例子:

代码语言:javascript
复制
function! Wait(mil)
    let timetowait = a:mil . " m"
    exe 'sleep '.timetowait
endfunction 
票数 7
EN

Stack Overflow用户

发布于 2013-02-09 04:14:38

Daan的回答是正确的;这里有更多的背景信息:

Vimscript的计算方式与在:命令行中键入的Ex命令完全相同。ex中没有变量,因此无法指定它们。当以交互方式输入命令时,您可能会使用<C-R>=来插入变量内容:

代码语言:javascript
复制
:sleep <C-R>=timetowait<CR>m<CR>

..。但在脚本中,必须使用:execute。Ex命令的所有文字部分都必须用引号引起来(单引号或双引号),然后与变量连接:

代码语言:javascript
复制
execute 'sleep' timetowait . 'm'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14778789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档