我有一个符号列表,并且想要使用 Vim8 计时器 API 每 80 毫秒循环一次符号列表并返回该符号。我解决了这样的问题:
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:列表索引超出范围:10
。有什么想法可以实现我想要的吗?
最佳答案
mod 之前需要有括号内的 1
let s:start = (s:start + 1) % s:numTestimonials
1 % s:numTestimonials
始终为 1,并在添加 s:start 之前进行评估
关于VinyL 无限打印列表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42146659/