
llm.nvim
在 Neovim 里直接调 LLM 写代码、改代码、问代码
llm.nvim 是一个为 Neovim 打造的 LLM 辅助开发插件,用 Lua 编写。它把大模型能力直接嵌入编辑器工作流,让开发者无需离开 Neovim 就能完成代码生成、解释、重构和问答。插件支持接入多种 LLM 后端(如 OpenAI、Ollama 等),提供可配置的提示词模板,并能把选中代码或当前缓冲区内容作为上下文发送给模型,结果以浮动窗口或直接插入的方式返回。它解决的是在终端编辑器里频繁切换浏览器或外部聊天工具的问题,把 AI 对话、代码补全和批量编辑统一到键盘操作中。核心能力包括:可视化选择范围后发起请求、流式输出、自定义快捷键与命令、多模型切换,以及把 AI 返回的代码块直接写回文件。对于习惯 Neovim 的开发者,它相当于把 Copilot 式体验和 ChatGPT 式对话整合进一个轻量插件。
项目数据
使用教程
⚠ 该项目 README 未提供完整安装说明,以下步骤为通用流程,请以官方文档为准。
环境要求
- 已安装 Neovim,并已配置好一个插件管理器
- 可用的 LLM 后端:Hugging Face Inference API,或自建且符合 backend 规范的 HTTP endpoint
- 使用 Inference API 时需要 Hugging Face API token
- 网络可访问所配置的后端 HTTP 地址
安装与启动步骤
-
1安装插件本体
README 未给出具体插件管理器命令,可先把仓库克隆到 Neovim 插件目录;路径按自己的插件管理器调整。
git clone https://github.com/huggingface/llm.nvim.git /your/path/site/pack/plugins/start/llm.nvim -
2确定后端与凭证
插件通过 HTTP 请求调用后端,需要用 require('llm').setup 配置 backend、model 和 api_token。
-
3写入 setup 配置
在 Neovim 配置文件中加入 llm.setup,README 给出的字段可原样使用,按需修改 model 与 backend。
local llm = require('llm') llm.setup({ api_token = "sk-xxxxxxxx", model = "bigcode/starcoder2-15b", backend = "huggingface", url = nil, tokens_to_clear = { "<|endoftext|>" }, request_body = { parameters = { max_new_tokens = 60, temperature = 0.2, top_p = 0.95, }, }, fim = { enabled = true, prefix = "", middle = " ", suffix = " ", }, debounce_ms = 150, accept_keymap = " ", dismiss_keymap = " ", tls_skip_verify_insecure = false, lsp = { bin_path = nil, host = nil, port = nil, cmd_env = nil, version = "0.5.3", }, tokenizer = nil, context_window = 1024, enable_suggestions_on_startup = true, enable_suggestions_on_files = "*", disable_url_path_completion = false, }) -
4按需覆盖后端地址
不想在配置里写死 url 时,可用环境变量 LLM_NVIM_URL 覆盖后端地址;url 为 nil 则走默认 Inference API 地址。
export LLM_NVIM_URL=https://your-endpoint.example.com -
5重启 Neovim 验证
保存配置后重启 Neovim,编辑文件时观察是否出现补全提示,并用 Tab / Shift-Tab 接受或忽略。
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
api_token | 是 | 调用后端所需的 API 令牌,使用 Inference API 时必填 | sk-xxxxxxxx |
model | 是 | 模型 ID,具体行为取决于所选后端 | bigcode/starcoder2-15b |
backend | 是 | 后端类型,可选 huggingface / ollama / openai / tgi | huggingface |
url | 否 | 后端 HTTP 地址,为 nil 时使用 Inference API 默认地址 | https://your-endpoint.example.com |
lsp.version | 否 | llm-ls 后端版本,插件以 llm-ls 作为后端 | 0.5.3 |
context_window | 否 | 上下文窗口的最大 token 数,提示词会自动裁剪到该范围 | 1024 |
如何确认成功
重启 Neovim 后在文件中输入代码,若出现灰色 ghost-text 补全提示,说明插件与后端已连通。
常见问题
Q:提示被限流(rate limited)怎么办?
A:README 说明使用 Inference API 时可能遇到限制,免费额度容易被限流,可订阅 PRO 计划避免。
Q:能换成自己的模型或本地模型吗?
A:可以,把 backend 改为 ollama、openai 或 tgi,并设置对应的 model 与 url 即可。
Q:输出里带特殊标记怎么处理?
A:用 tokens_to_clear 指定要从模型输出中移除的 token,例如 <|endoftext|>。
Q:如何调整补全的触发与接受方式?
A:通过 debounce_ms 控制触发延迟,accept_keymap 与 dismiss_keymap 分别设置接受和忽略的按键。
注意事项
- README 未提供具体的插件管理器安装示例,第一条命令中的 /your/path 需替换为自己实际的 Neovim 插件目录。
- 免费版 Inference API 存在调用限制,正式使用建议订阅 PRO 计划。
- url 留空(nil)时会回落到 Inference API 的默认地址,也可用环境变量 LLM_NVIM_URL 覆盖。
核心亮点
- 纯 Lua 实现,与 Neovim 原生集成,启动和响应轻量
- 支持多后端和多模型切换,不绑定单一厂商
- 可把选中代码作为上下文,AI 返回结果能直接写回缓冲区
不足之处
- 功能相对早期,缺少类似 Copilot 的实时行内补全
- 配置项较多,新手需要一定时间调通后端和快捷键
适用场景
- 在 Neovim 中选中一段函数让 AI 解释或重构
- 写代码时直接向 LLM 提问并插入生成的代码块
- 用自定义提示词批量修改当前文件中的重复模式
替代项目
codeium.nvim、copilot.vim
项目介绍
上一篇:llm-vscode
下一篇:没有了!
同类项目推荐
bolt.new
开源
想到啥说啥,网页应用当场生成直接能用
Prompt, run, edit, and deploy full-stack web applications. -- bolt.new -- Help Cente···
fuzz4all
开源
用大模型自动生成测试输入,发现各种软件漏洞
️Fuzz4All: Universal Fuzzing with Large Language Models
superpowers-zh
开源
全套 AI 编程神技汉化好了,照着用就行。
AI 编程超能力 · 中文增强版 — superpowers(250k+ ⭐)完整汉化 + 4 个中国原创 skills···
crystal
开源
多个 AI 同时写不同功能,互不干扰齐头并进。
(Crystal is now Nimbalyst) Run multiple Codex and Claude Code AI sessions in paralle···