VinyL 无限打印列表中的值

标签 vim

我有一个符号列表,并且想要使用 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/

相关文章:

python - 使用 Vim 的 syn-include 和 syn-region 嵌入语法高亮时出现问题

vim - 如何检测 Vim 是否在受限模式下运行?

Vim 在写入文件时似乎卡住了

c - vim如何实现跨目录的符号引用?

sorting - 对文本中的特定行进行排序

vim - 如何为 Groovy 类生成 TAGS 文件以便在 VIM/Emacs 中使用

bash - 如何在 Gvim 的后台运行一个进程?

regex - Vim 中的 Perl 正则表达式?

windows - 如何使 Windows 上的 gvim 表现得与 linux 控制台 vim 完全一样?

vim - 以前用nano编辑文本,后来改用vim,功能更强大。如果我转向 emacs,我会得到同样的力量吗?