You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在退出Neovim终端时运行指定的Lua函数

Neovim终端进程退出触发自定义函数实现方案

该需求可以直接通过vim.fn.termopen()的原生参数实现,不需要额外依赖其他组件。

实现原理

vim.fn.termopen()的第二个参数接受配置表,其中on_exit字段可以指定终端进程退出时的回调函数,进程终止时Neovim会自动触发该回调。

完整实现代码

vim.fn.termopen("foo", {
  -- on_exit回调默认接收三个参数:
  -- 1. job_id: 终端对应的任务ID,和终端缓冲区号一致
  -- 2. exit_code: 进程退出码,0为正常退出
  -- 3. event_type: 退出类型,正常退出为0,信号终止为对应信号编号
  on_exit = function(_, exit_code, _)
    -- 可自行加判断逻辑,比如仅进程正常退出时执行目标函数
    if exit_code == 0 then
      require('my-plugin').someFunction()
    end
  end
})

可选拓展说明

  • 如果自定义函数需要用到终端缓冲区的内容,可直接通过vim.api.nvim_buf_get_lines(job_id, 0, -1, false)读取终端的所有输出内容
  • 如果需要绑定进程启动、标准输出/错误输出的回调,还可以使用配置表中的on_stdout、on_stderr参数实现对应逻辑

内容的提问来源于stack exchange,提问作者InsertSON

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:57:03