neoai.nvim
neoai.nvim 是一款专为 Neovim 用户打造的 AI 辅助插件,将 OpenAI 的 GPT 模型能力直接集成到编辑环境中。许多开发者在使用 AI 时不得不频繁切换浏览器和编辑器,这容易打断编码节奏。neoai.nvim 通过内置的图形界面和多种交互模式,让用户在编写代码的同时就能随时向 AI 提问、生成代码片段或润色文本,无需离开当前工作区。
适合习惯使用 Neovim 进行开发的程序员,尤其是那些追求高效工作流、希望在不中断思路的情况下获得智能提示的开发者。neoai.nvim 的亮点在于支持上下文感知模式,能理解当前代码环境并提供更精准的建议,同时提供专门的快捷键来快速总结文本或生成 Git 提交信息。此外,生成的代码会自动存入寄存器,方便直接粘贴使用。
使用前需配置 OpenAI API Key,并留意账户消费情况。虽然目前处于早期开发阶段,但 neoai.nvim 致力于成为提升编码效率的得力助手,让 AI 真正融入日常开发流程,在保持专注的同时享受智能化带来的便利。
使用场景
后端工程师小李正在紧急修复一个 Python 微服务模块,需要快速重构复杂逻辑并编写规范的 Git 提交记录。
没有 neoai.nvim 时
- 需要频繁在浏览器聊天窗口和 Neovim 之间切换,复制粘贴代码极易出错。
- 向 AI 提问时无法直接关联当前光标处的代码,需手动复制大段逻辑描述背景。
- 编写 Git 提交信息时必须离开编辑器打开记事本或网页,打断了核心编码流程。
- 每次交互都要重新输入 API Key 或配置,缺乏持久化的便捷体验。
- 注意力被分散,难以维持深度工作状态,导致修复 Bug 的时间延长。
使用 neoai.nvim 后
- 通过
:NeoAI命令直接在编辑器侧边栏唤起对话界面,无需切换任何窗口。 - 利用 Context 模式自动提取当前选区代码作为上下文,AI 理解更加精准到位。
- 按下快捷键即可生成符合规范的 Git 消息,结果自动存入寄存器方便粘贴。
- 所有交互均在终端内完成,配合快捷键映射,极大减少了鼠标操作频率。
- 保持了完整的编码心流,从问题咨询到代码注入一气呵成,效率显著提升。
neoai.nvim 通过将 AI 助手无缝嵌入 Neovim 工作流,让开发者在不离开键盘的情况下获得智能辅助。
运行环境要求
- 未说明
无需本地 GPU,依赖 OpenAI 云端 API
未说明

快速开始
NeoAI
NeoAI 是一个 Neovim 插件,它将 OpenAI 的 GPT-4 的强大功能直接带入你的编辑器。它帮助你生成代码、重写文本,甚至根据上下文获取建议。该插件构建了用户友好的界面,使得与 AI 交互并获得所需帮助变得容易。
注意: 此插件正处于早期变更阶段,并且可能会发生变化。
动机
本插件背后的主要动机是将 AI 聊天助手(如 ChatGPT)无缝集成到你的 Neovim 编码工作流中。目标是创建一个与你和谐工作的工具,让你能够提问并获得帮助,而不会打断你的专注力或编码节奏。与大多数优先考虑娱乐而非生产力的现有插件不同,本插件强调效率和实用性。通过促进流畅且响应迅速的编码体验,旨在提高生产力并使编码更加愉快。
安装
要安装 NeoAI,你可以使用你喜欢的插件管理器。例如,使用 vim-plug,将以下行添加到你的 init.vim 或 .vimrc 中,注意它也需要在系统上安装 nui 依赖和 curl:
Plug 'MunifTanjim/nui.nvim'
Plug 'Bryley/neoai.nvim'
然后运行 :PlugInstall 来安装插件。
对于 lazy.nvim:
return {
"Bryley/neoai.nvim",
dependencies = {
"MunifTanjim/nui.nvim",
},
cmd = {
"NeoAI",
"NeoAIOpen",
"NeoAIClose",
"NeoAIToggle",
"NeoAIContext",
"NeoAIContextOpen",
"NeoAIContextClose",
"NeoAIInject",
"NeoAIInjectCode",
"NeoAIInjectContext",
"NeoAIInjectContextCode",
},
keys = {
{ "<leader>as", desc = "summarize text" },
{ "<leader>ag", desc = "generate git message" },
},
config = function()
require("neoai").setup({
-- Options go here
})
end,
}
对于 packer:
use ({
"Bryley/neoai.nvim",
require = { "MunifTanjim/nui.nvim" },
cmd = {
"NeoAI",
"NeoAIOpen",
"NeoAIClose",
"NeoAIToggle",
"NeoAIContext",
"NeoAIContextOpen",
"NeoAIContextClose",
"NeoAIInject",
"NeoAIInjectCode",
"NeoAIInjectContext",
"NeoAIInjectContextCode",
},
config = function()
require("neoai").setup({
-- Options go here
})
end,
})
展示与使用
要使用此插件,请确保你拥有 OpenAI API(应用程序编程接口)密钥,可以在 这里 创建。将此密钥保存到你的环境变量 OPENAI_API_KEY 中。
重要提示:本插件不对意外进行的 OpenAI 购买负责。使用此插件时,我建议你经常检查账户的 使用情况 并 设置限制,以免花费超出承受能力的金额。
本插件引入了 3 种模式或与 AI 模型交互的方式。
普通 GUI 模式
在默认模式下,使用 :NeoAI 命令会在侧边打开一个 GUI(图形用户界面),允许你与模型聊天。此操作类似于在浏览器中使用时的体验,但现在由于 GUI 位于编辑器内而变得更加方便。

在 Prompt Buffer(提示缓冲区)中,你可以在插入模式下按 Enter 发送文本。此外,可以使用 Control Enter 插入换行符。此映射可以在配置中更改。
另外请注意,该插件有一个功能,即模型的输出会自动保存到 g 寄存器,所有代码片段都会保存到 c 寄存器。这些可以在配置中更改。
上下文模式
上下文模式的工作原理与普通模式类似。但是,你有能力提供关于你想要更改内容的额外信息。例如,如果你正在阅读他人的代码并需要描述其作用,可以通过 visual 模式(可视模式)高亮显示缓冲区中的代码。然后,运行 :NeoAIContext 并在提示缓冲区中输入类似“请为我解释这段代码”的内容。

此外,你可以高亮一些文本并要求“修复这段文本的标点和语法”,以获得更好的文本版本。
请注意,如果在不选择任何内容的情况下运行命令,则整个缓冲区将被传递进去。
注入模式
最后一种模式被称为“注入模式”,通过使用 :NeoAIInject 启用。此模式在没有图形用户界面的情况下运行,允许你快速向模型发送提示,并将生成的输出自动插入到光标下方。所有这些都可以在不打开 GUI 的情况下完成。此外,注入模式内还有一个可以结合上下文执行的子模式。

快捷键
本插件的一个功能是创建快捷键,如下所述。该插件包含两个内置快捷键;第一个重新格式化选定的文本以提高可读性,默认键位绑定为 <leader>as(A 代表 AI,S 代表总结)。

另一个内置快捷键是为你自动生成 git 提交信息:

警告:请注意,过度使用此功能可能会导致发送给模型的数据积累,从而导致高昂的费用。为了避免这种情况,建议进行较小的提交或较少频率地使用此功能。跟踪使用情况至关重要,可以通过 此链接 进行监控。
设置
要设置此插件,请将以下代码(使用默认值)添加到你的 init.lua 文件中(如果使用 lazy.nvim 或 packer.nvim,请将其放入 config 选项下)。
require("neoai").setup({
-- Below are the default options, feel free to override what you would like changed
ui = {
output_popup_text = "NeoAI",
input_popup_text = "Prompt",
width = 30, -- As percentage eg. 30%
output_popup_height = 80, -- As percentage eg. 80%
submit = "<Enter>", -- Key binding to submit the prompt
},
models = {
{
name = "openai",
model = "gpt-3.5-turbo",
params = nil,
},
},
register_output = {
["g"] = function(output)
return output
end,
["c"] = require("neoai.utils").extract_code_snippets,
},
inject = {
cutoff_width = 75,
},
prompts = {
context_prompt = function(context)
return "Hey, I'd like to provide some context for future "
.. "messages. Here is the code/text that I want to refer "
.. "to in our upcoming conversations:\n\n"
.. context
end,
},
mappings = {
["select_up"] = "<C-k>",
["select_down"] = "<C-j>",
},
open_ai = {
api_key = {
env = "OPENAI_API_KEY",
value = nil,
-- `get` is is a function that retrieves an API key, can be used to override the default method.
-- get = function() ... end
-- Here is some code for a function that retrieves an API key. You can use it with
-- the Linux 'pass' application.
-- get = function()
-- local key = vim.fn.system("pass show openai/mytestkey")
-- key = string.gsub(key, "\n", "")
-- return key
-- end,
},
},
shortcuts = {
{
name = "textify",
key = "<leader>as",
desc = "fix text with AI",
use_context = true,
prompt = [[
Please rewrite the text to make it more readable, clear,
concise, and fix any grammatical, punctuation, or spelling
errors
]],
modes = { "v" },
strip_function = nil,
},
{
name = "gitcommit",
key = "<leader>ag",
desc = "generate git commit message",
use_context = false,
prompt = function()
return [[
Using the following git diff generate a consise and
clear git commit message, with a short title summary
that is 75 characters or less:
]] .. vim.fn.system("git diff --cached")
end,
modes = { "n" },
strip_function = nil,
},
},
})
选项
设置函数接受一个包含选项的表 (table) 来配置插件。可用选项如下:
UI (用户界面) 选项
output_popup_text: 输出弹窗窗口上显示的标题文本(默认:"NeoAI")。input_popup_text: 输入弹窗窗口上显示的标题文本(默认:"Prompt")。width: 窗口宽度的百分比(例如,30 = 30%,默认:30)。output_popup_height: 输出弹窗高度的百分比(例如,80 = 80%,默认:80)。submit: 提交提示词的按键绑定。如果设置为, 将被映射为插入新行。(默认:" ")。
模型选项
models: 要使用的模型列表:name: 模型提供商的名称(例如:"openai")model: 要使用的模型名称字符串或模型名称列表params: 传递给模型的参数表(例如 temperature, top_p)
寄存器输出
register_output: 一个以寄存器为键的表,以及一个接受 AI 原始输出并决定保存到该寄存器的内容的函数。示例:
register_output = {
["g"] = function(output)
return output
end,
["c"] = require("neoai.utils").extract_code_snippets,
}
注入选项
cutoff_width: 当注入时,如果文本长度超过此值,应换行。如果设置为 nil,则忽略长度(默认:75)。
提示词选项
context_prompt: 一个生成用于上下文模式 (Context modes) 的提示词的函数。示例:
context_prompt = function(context)
return "Hi ChatGPT, I'd like to provide some context for future "
.. "messages. Here is the code/text that I want to refer "
.. "to in our upcoming conversations:\n\n"
.. context
end
OpenAI 选项:
open_api_key_env(已弃用,请使用api_key.env代替): 包含 OpenAI API 密钥的环境变量。默认值为 "OPENAI_API_KEY "。api_key.env: 包含 OpenAI API 密钥的环境变量。默认值为 "OPENAI_API_KEY"。api_key.value: OpenAI API 密钥,其优先级高于api_key .env。api_key.get: 用于检索 OpenAI API 密钥的函数。有关实现示例,请参阅 设置 部分。它具有更高的优先级。
映射
mappings: 包含以下操作的表,这些操作可以作为键:select_up: 在输入窗口中选择输出窗口select_down: 在输出窗口中选择输入窗口
值是这些操作的按键绑定,如果没有操作则为 nil
快捷方式选项
shortcuts: 快捷方式数组。每个快捷方式是一个包含以下内容的表:name: 字符串。快捷方式的名称,可以使用 :NeoAIShortcut触发 key: 监听的键绑定值,如果快捷方式没有键绑定则为 nil。desc字符串或 nil。按键绑定的描述(如果有)use_context: 是否应使用选中/缓冲区的上下文。prompt: 要发送的提示词或生成要发送的提示词的函数。modes: 设置按键绑定的模式列表,"n" 代表正常模式,"v" 代表可视模式。strip_function: 要使用的剥离函数(可选)。
用户命令
:NeoAI [prompt]
智能切换 NeoAI 窗口。如果窗口已关闭,它将打开并发送可选的 [prompt]。如果窗口已打开且聚焦,它将关闭。最后,如果窗口已打开但未聚焦,它将聚焦窗口并发送可选的 [prompt]。
:NeoAIToggle [prompt]
切换 NeoAI 窗口。如果窗口已关闭,它将打开并发送可选的 [prompt]。如果窗口已打开,它将关闭。
:NeoAIOpen [prompt]
打开 NeoAI 窗口并发送可选的 [prompt]。
:NeoAIClose
关闭 NeoAI 窗口。
:NeoAIContext [prompt]
智能地根据上下文 (context) 切换 NeoAI 窗口。如果窗口关闭,它将打开并发送可选的 [prompt]。如果窗口已打开且聚焦,它将关闭;最后,如果窗口已打开但未聚焦,它将聚焦该窗口并发送可选的 [prompt]。此命令使用的上下文 (context) 是可视模式下选中的文本 (visual mode),如果没有进行选择,则为整个缓冲区 (buffer)。
:NeoAIContextOpen [prompt]
打开带有上下文 (context) 的 NeoAI 窗口并发送可选的 [prompt]。此命令使用的上下文 (context) 是可视模式下选中的文本 (visual mode),如果没有进行选择,则为整个缓冲区 (buffer)。
:NeoAIContextClose
关闭带有上下文 (context) 的 NeoAI 窗口。
:NeoAIInject [prompt]
将 [prompt] 发送给 AI,并直接将 AI 响应注入到缓冲区 (buffer) 中,无需打开 NeoAI 窗口。
:NeoAIInjectCode [prompt]
将 [prompt] 发送给 AI,并直接将 AI 响应注入到缓冲区 (buffer) 中,无需打开 NeoAI 窗口。响应将被剥离所有非代码片段的内容。
:NeoAIInjectContext [prompt]
将 [prompt] 与上下文 (context) 一起发送给 AI,并直接将 AI 响应注入到缓冲区 (buffer) 中,无需打开 NeoAI 窗口。此命令使用的上下文 (context) 是可视模式下选中的文本 (visual mode),如果没有进行选择,则为整个缓冲区 (buffer)。
:NeoAIInjectContextCode [prompt]
将 [prompt] 与上下文 (context) 一起发送给 AI,并直接将 AI 响应注入到缓冲区 (buffer) 中,无需打开 NeoAI 窗口。响应将被剥离所有非代码片段的内容。此命令使用的上下文 (context) 是可视模式下选中的文本 (visual mode),如果没有进行选择,则为整个缓冲区 (buffer)。
:NeoAIShortcut <shortcut>
触发在配置中通过其名称创建的 NeoAI 快捷方式,而不是通过键绑定 (keybinding)。
Roadmap:
- 问题 1
- 为快捷方式添加描述选项
- 能够通过用户命令运行快捷方式
- 测试 (已开始)
- 多个聊天会话
- Telescope 集成
- 切换模型
- 更好的颜色(例如高亮用户输入)
- 在 NeoAIContext 缓冲区内部时高亮上下文,或使上下文清晰可见
- 用于用新生成的代码替换上下文的键映射
- 支持:
- Amazon CodeWhisperer
- Github Copilot
- 更好的错误检测
- 来回对话
- 使用可视模式 (visual mode) 的上下文
- 修复在 NeoAI 图形用户界面 (GUI) 上使用 :q 的问题
- 配置
- 为上下文相关问题添加自定义键绑定
- 合并注入操作的撤销
- 修复注入标记有时未设置注入模式的问题。
- 注入时剥离输出以获取代码或其他内容。
- 确保也匹配文件末尾并用于注入模式
- 使用缓冲区的上下文
- 从输出中剥离代码并放入缓冲区
- 添加设置配置
- 更好地聚焦图形用户界面 (GUI) 窗口的方法
License
采用 MIT 许可证授权。有关详细信息,请查看 LICENSE 文件。
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。