VimL无限打印列表中的值

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

我有一个符号列表,希望使用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: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