双子座
Neovim支持Gemini CLI,具有内置的diff查看器和挂钩支持。这个插件实际上并没有生成Gemini;它只是设置环境变量和工作区设置,这样当你运行Gemini时,它就可以与Neovim通信。
请注意,您应该使用 zaucy/mcp.nvim 登记工具和提示;这个插件专门关注Gemini IDE集成和监听钩子。
安装
lazy.nvim
{
"zaucy/gemini.nvim",
dependencies = {
"zaucy/mcp.nvim",
},
opts = {},
}自动命令
此插件公开了几个用户自动命令,您可以使用这些命令在Gemini交互的各个阶段触发操作。
| 模式 | 描述 | 数据 |
|---|---|---|
GeminiHookSessionStart | 当新的Gemini会话开始时触发。 | context |
GeminiHookBeforeAgent | 在代理开始处理之前触发。 | context |
GeminiHookBeforeToolSelection | 在模型选择工具之前触发。 | context |
GeminiHookBeforeTool | 在执行工具之前触发。 | context |
GeminiHookAfterTool | 在执行工具后触发。 | context |
GeminiHookAfterModel | 在模型完成响应后触发。 | context |
GeminiHookSessionEnd | 双子座会话结束时触发。 | context |
GeminiOpenDiffPre | 在打开差异视图之前触发。 | - |
GeminiOpenDiff | 打开差异视图后触发。 | bufnr |
GeminiCloseDiff | 在关闭差异视图后触发。 | bufnr |
示例用法
vim.api.nvim_create_autocmd("User", {
pattern = "GeminiHookAfterTool",
callback = function(args)
local context = args.data.context
-- Example: Print tool name if available in context
if context.tool_name then
print("Tool executed: " .. context.tool_name)
end
end,
})实施策略
gemini.nvim 与紧密结合 mcp.nvim 为Gemini CLI提供无缝环境。
实施依赖于几个关键机制:
- 事件驱动配置: 插件监听
McpServerCreated和McpServerDirChange来自的自动命令mcp.nvim当这些事件发生时,gemini.nvim动态生成当前工作区的设置。 - 环境变量: 在启用MCP的项目中发生目录更改时,插件会更新特定的环境变量:
- GEMINI_CLI_IDE_WORKSPACE_PATH:当前项目根目录。 - GEMINI_CLI_SYSTEM_SETTINGS_PATH:特定于工作区的路径 settings.json 插件生成的文件。 - GEMINI_CLI_IDE_SERVER_STDIO_COMMAND & GEMINI_CLI_IDE_SERVER_STDIO_ARGS:将Gemini配置为使用专门的客户端脚本作为MCP服务器与Neovim进行通信。
- 动态设置生成: 插件生成一个
settings.json文件:
- 将Neovim配置为Gemini的MCP服务器,使其能够调用以下工具 openDiff 和 closeDiff. - 设置“钩子”,通知Neovim会话事件(例如。, BeforeTool, AfterModel).
- 吊钩系统: 当Gemini执行钩子时,它会调用此插件提供的钩子脚本,该脚本进而通过RPC与Neovim通信以触发
User自动命令,允许可扩展的行为。
其他插件
- https://github.com/vaijab/gemini-cli.nvim-此插件的原始灵感
