退出 Neovim 终端时运行函数

问题描述 投票:0回答:2

通过使用以下代码...

vim.fn.termopen("foo")

我可以用某个命令打开终端。我想做的是在退出终端时从插件运行一个 Lua 函数。

伪代码:

vim.fn.termopen("foo", run "lua require('my-plugin').someFunction()" upon exiting)

这可能吗?

lua neovim
2个回答
1
投票

经过一番研究,我发现有两个自动命令可以满足我的需要

au TermClose * lua require('my-plugin').someFunction()

or

au TermLeave * lua require('my-plugin').someFunction()

第一个对我来说效果更好,因为我只想在终端被终止/关闭后运行我的函数。第二个是如果你想在用户从终端切换到其他东西时运行一个函数。


0
投票

vim.fn.termopen({cmd} [, {opts}])
包含一个
on_exit
opts 值,它是一个回调。这将确保回调明确配对到this终端,而不是所有终端退出。

vim.fn.termopen("foo", {
    on_exit = function(job_id, code, event)
        require("my-plugin").someFunction()
    end
})

如果你确实想包装所有终端出口,你的自动命令解决方案是最好的选择。

© www.soinside.com 2019 - 2024. All rights reserved.