为什么仍然在使用 job.nvim

💡 原文中文,约5100字,阅读约需12分钟。
📝

内容提要

文章讨论了作者将 job API 从 SpaceVim 独立为 job.nvim 插件的原因。作者认为 Neovim 内置的 vim.system 在处理 stdout 数据时存在问题,无法满足需求。job.nvim 提供了更简洁的接口,支持异步执行命令,并能更好地处理多个 job 的回调。作者希望未来能有更合适的内置替代方案。

🎯

关键要点

  • 作者将 job API 从 SpaceVim 独立为 job.nvim 插件,主要是因为 Neovim 内置的 vim.system 在处理 stdout 数据时存在问题。
  • job.nvim 提供了更简洁的接口,支持异步执行命令,并能更好地处理多个 job 的回调。
  • 在早期 Neovim 版本中,作者为兼容 Vim 和 Neovim 添加了 Job API,解决了 stdout 数据被截断的问题。
  • 随着 Neovim 对 Lua 的支持增加,作者使用 Lua 重写了 Job API,并将其独立为 job.nvim 插件。
  • 作者认为 vim.system 在处理 stdout 数据时缺乏拼接处理,导致数据截断,并且无法确认哪个 job 触发了 callback 函数。
  • 作者希望未来能有更合适的内置替代方案,以满足其使用需求。

延伸问答

为什么作者决定将 job API 独立为 job.nvim 插件?

作者认为 Neovim 内置的 vim.system 在处理 stdout 数据时存在问题,无法满足需求,因此决定独立为 job.nvim 插件。

job.nvim 插件相比于 vim.system 有哪些优势?

job.nvim 提供了更简洁的接口,支持异步执行命令,并能更好地处理多个 job 的回调,避免了数据截断的问题。

作者在创建 job.nvim 时遇到了哪些技术问题?

作者遇到的问题包括 Neovim 的 jobstart() 函数在处理大数据时会截断 stdout 数据,以及无法确认哪个 job 触发了 callback 函数。

job.nvim 是如何处理异步命令执行的?

job.nvim 通过提供简洁的接口,允许用户定义 stdout 和 stderr 的回调函数,从而处理异步命令的执行和结果。

未来作者对 Neovim 的期望是什么?

作者希望未来能有更合适的内置替代方案,以满足其使用需求,尤其是在处理 stdout 数据时。

job.nvim 插件的主要功能是什么?

job.nvim 插件的主要功能是提供一个简洁的接口来异步执行命令,并处理多个 job 的回调。

➡️

继续阅读