为什么仍然在使用 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 的回调。
➡️