VimL无限打印列表中的值
我有一个符号列表,希望使用Vim8定时器API每80ms循环一次符号列表并返回该符号。我得出了这样的结论:VimL无限打印列表中的值,vim,Vim,我有一个符号列表,希望使用Vim8定时器API每80ms循环一次符号列表并返回该符号。我得出了这样的结论: let s:frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'] let s:numTestimonials = len(s:frames) let s:start = 0 function! PrintValues() return s:frames[s:start] let s:start = (s:s
let s:frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏']
let s:numTestimonials = len(s:frames)
let s:start = 0
function! PrintValues()
return s:frames[s:start]
let s:start = (s:start) + 1 % s:numTestimonials
endfunction
let timer = timer_start(80, 'PrintValues', {'repeat': -1})
但一旦到达列表中的最后一个符号,它就会抛出一个错误,
E684:list index out-range:10
。你知道如何实现我想要的吗?你需要在mod之前加上括号内的1
let s:start = (s:start + 1) % s:numTestimonials
1%s:numestimationals
始终为1,并在添加s:start之前对代码进行一些小更改(在vim 7.4上测试):
d'oh。。。我最初确实有,但是它给了我一些关于其他语法错误的问题。谢谢你的回答!现在了解如何在statusline段中打印返回值
let timer = timer_start(500, 'PrintValues', {'repeat': -1})
let s:frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏']
let s:numTestimonials = len(s:frames)
let s:start = 0
function! PrintValues(timer)
execute "normal! i".s:frames[s:start]
let s:start = (s:start + 1) % s:numTestimonials
endfunction