【问题标题】:How use sleep in vimscript just for command-line bar?如何在 vimscript 中将 sleep 用于命令行栏?
【发布时间】:2021-05-21 21:19:28
【问题描述】:

我正在尝试使用 vimscript 为 vim 编写一个插件,我想显示一些日志 在特定时间。喜欢:

echo 'some log'
sleep 2
redraw!

当我使用 sleepredraw 时,所有当前窗口都会冻结一段时间,但我只想为日志而睡眠,而不是所有 vim 窗口!
我该怎么做?

【问题讨论】:

  • 很高兴知道您在 SO 上得到了答案。但是,如果您的问题是针对 vim 的,您可以在 vi.stackexchange.com 找到更好/更多的答案,这是一个专门的站点或 vi(m) 问题。 (我并不是不鼓励你在这里提问。但既然你甚至提供了赏金,我认为这对你来说很紧急。因此提出了这个建议。)祝你好运!
  • @anishsane 哦,我忘了。这是个好主意,谢谢。

标签: bash vim command-line vi vim-plugin


【解决方案1】:

sleep 将始终阻止。使用 VIM 版本 8,您可以改用 timer。这是一个不应该阻止 VIM 的精简示例:

echo 'some log'
let timer = timer_start(2000, 'LogTrigger', {})
func! LogTrigger(timer)
  silent! redraw!
endfunc

【讨论】:

  • 我认为timer_start(2000, 'LogTrigger', {}) 是正确的,因为当您设置repeat : -1 永远有效并且redraw! 多次有效并且在多次调用函数后,您什么都看不到!
猜你喜欢
  • 2023-03-26
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2018-05-16
相关资源
最近更新 更多