项目简介

Vim MCP集成服务(vim-mcp)是一个基于Model Context Protocol (MCP) 实现的后端服务,旨在将Vim/Neovim编辑器与大语言模型(LLM)客户端(如Claude Code)连接起来。它允许LLM通过标准化的MCP协议,获取Vim实例的实时状态(如缓冲区、窗口、光标位置),并执行各种Vim命令,从而实现通过自然语言与Vim进行高级交互。无论是要完成复杂的正则表达式替换、查找Vim帮助文档,还是录制并执行宏,vim-mcp都能让LLM辅助用户高效操作Vim。

主要功能点

  • Vim实例管理: 列出所有已连接的Vim实例,并允许选择特定实例进行交互。
  • Vim状态查询: 获取选定Vim实例的当前状态,包括缓冲区列表、标签页、窗口布局和光标位置等。
  • 命令执行: 允许LLM通过自然语言描述,转换为Vim Ex命令并在选定的Vim实例中执行。
  • 安全退出Vim: 提供带有保存检查、强制保存并退出或强制不保存退出的功能。
  • Vim帮助搜索: 根据关键词搜索Vim的内置帮助文档。
  • 宏录制与执行: 将自然语言描述的操作转换为Vim宏序列,并可选择立即执行。

安装步骤

  1. Vim/Neovim插件安装: 使用您偏好的Vim插件管理器(如'vim-plug')安装'vim-mcp'插件。 例如,对于'vim-plug',将以下行添加到您的'.vimrc'或'init.vim'文件中:

    Plug 'iggredible/vim-mcp'

    然后,在Vim中运行':PlugInstall'。

  2. MCP服务器安装: MCP服务器是一个Node.js项目。请确保您的系统已安装Node.js 18+。 进入Vim插件的安装目录(通常是'~/.vim/plugged/vim-mcp'):

    cd ~/.vim/plugged/vim-mcp
    ./install.sh

    此脚本将自动检查依赖、安装Node.js模块,并尝试全局安装'vim-mcp'命令。如果自动安装失败,您可以手动进入'server'目录运行'npm install',然后根据需要选择'npm link'进行全局安装。

服务器配置

MCP服务器是为MCP客户端(如Claude Code或Claude Desktop)提供服务的。您需要将该服务器添加到您的MCP客户端配置文件中,以便客户端能够发现并连接到它。以下是一个示例配置,您应将其添加到您的MCP客户端(例如Claude Code)的配置文件的'mcpServers'部分。

如果'vim-mcp'命令已全局安装成功:

{
  "mcpServers": {
    "vim-mcp": {
      "command": "vim-mcp",
      "args": []
    }
  }
}
  • '"command": "vim-mcp"': 指定启动MCP服务器的可执行命令为'vim-mcp'。
  • '"args": []': 启动命令的额外参数,此处为空。

如果'vim-mcp'命令未全局安装(例如,'npm link'失败),需要指定Node.js和脚本的完整路径:

{
  "mcpServers": {
    "vim-mcp": {
      "command": "node",
      "args": ["/some/path/.vim/plugged/vim-mcp/server/bin/vim-mcp"]
    }
  }
}
  • '"command": "node"': 指定启动MCP服务器的解释器为'node'。
  • '"args": ["/some/path/.vim/plugged/vim-mcp/server/bin/vim-mcp"]': 启动Node.js脚本的完整路径。请根据您实际的'vim-mcp'插件安装路径替换'/some/path/.vim/plugged/vim-mcp'。

基本使用方法

  1. 启动Vim实例: 打开任意Vim或Neovim实例。安装了'vim-mcp'插件后,Vim会自动尝试连接到本地的MCP服务器。
  2. 在MCP客户端中交互: 在您的MCP客户端(如Claude Code)中,您现在可以通过自然语言或工具调用与Vim进行交互。
    • 列出实例: 提问 "List vim instances" 以查看所有连接的Vim实例。
    • 选择实例: 如果有多个Vim实例,使用 "Select vim instance '<实例ID>'" 来选择要操作的实例,例如 "Select vim instance file1-vim-12345"。
    • 查询状态: 提问 "How many buffers do I have?" 或 "What is my cursor position?" 来获取Vim状态。
    • 执行命令: 提问 "Split into two windows vertically" 或 "execute vim command 'w'" 来执行Vim命令。
    • 退出Vim: 提问 "Exit vim" 或 "GET ME OUTTA HERE" 来安全退出Vim。
    • 搜索帮助: 提问 "Search vim help for channels" 来查找Vim帮助。
    • 录制宏: 提问 "Record a macro that uppercases the first word and moves down 2 lines" 来创建并执行宏。

信息

分类

开发者工具