NeoVim如何实现make终端窗口在程序退出后自动关闭
Neovim终端程序退出后自动关闭配置方案
Neovim可通过监听TermClose事件实现终端进程终止后自动关闭窗口的效果,和Vim的++close选项功能一致,适配curses类应用的运行需求,Arch Linux下的配置方法如下:
全局生效配置(所有终端窗口退出自动关闭)
将以下代码写入你的Neovim配置文件(默认路径~/.config/nvim/init.lua):
vim.api.nvim_create_autocmd("TermClose", { pattern = "*", callback = function() -- 仅进程正常退出(返回码为0)时自动关闭,去掉if判断可实现无论是否报错都关闭 if vim.v.event.status == 0 then vim.api.nvim_buf_delete(0, { force = true }) end end, })
如果你使用Vimscript编写配置,写入init.vim的代码如下:
autocmd TermClose * if v:event.status == 0 | execute 'bdelete! ' . expand('<abuf>') | endif
自定义命令配置(仅手动触发的运行命令生效)
如果不需要所有终端窗口都自动关闭,仅运行代码/执行make时生效,可封装自定义命令:
-- 自定义:Run命令,支持传入自定义命令,默认Python文件执行python3运行当前文件,其他文件执行make vim.api.nvim_create_user_command("Run", function(opts) local run_cmd = opts.args if run_cmd == "" then if vim.bo.filetype == "python" then run_cmd = "python3 " .. vim.fn.expand("%") else run_cmd = "make" end end -- 打开终端运行命令 vim.cmd.terminal(run_cmd) -- 绑定当前终端的退出自动关闭逻辑 vim.api.nvim_create_autocmd("TermClose", { buffer = 0, once = true, callback = function() vim.api.nvim_buf_delete(0, { force = true }) end, }) end, { nargs = "?" })
配置完成后,直接执行:Run即可运行当前程序或执行make,也可手动传入命令,例如:Run gcc main.c -o main。
内容的提问来源于stack exchange,提问作者j307
相关产品推荐
相关产品推荐

