vim_register
Manage and update text content in Neovim registers. Specify a register name and content to store, enhancing workflow efficiency in the mcp-neovim-server environment.
Instructions
Manage Neovim register contents
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The text content to store in the specified register | |
| register | Yes | Register name - a lowercase letter [a-z] or double-quote ["] for the unnamed register |
Implementation Reference
- src/neovim.ts:532-546 (handler)Core handler function that validates the register name and uses Neovim's setreg API to store the provided content in the specified register.public async setRegister(register: string, content: string): Promise<string> { const validRegisters = [...'abcdefghijklmnopqrstuvwxyz"']; if (!validRegisters.includes(register)) { return 'Invalid register name'; } try { const nvim = await this.connect(); await nvim.eval(`setreg('${register}', '${content.replace(/'/g, "''")}')`); return `Register ${register} set`; } catch (error) { console.error('Error setting register:', error); return 'Error setting register'; } }
- src/index.ts:243-268 (registration)MCP server.tool registration for 'vim_register', including Zod input schema validation and thin async handler wrapper that delegates to NeovimManager.setRegister.server.tool( "vim_register", "Manage Neovim register contents", { register: z.string().regex(/^[a-z"]$/).describe("Register name - a lowercase letter [a-z] or double-quote [\"] for the unnamed register"), content: z.string().describe("The text content to store in the specified register") }, async ({ register, content }) => { try { const result = await neovimManager.setRegister(register, content); return { content: [{ type: "text", text: result }] }; } catch (error) { return { content: [{ type: "text", text: error instanceof Error ? error.message : 'Error setting register' }] }; } } );
- src/index.ts:246-249 (schema)Zod schema defining the input parameters: register (a-z or ") and content (string).{ register: z.string().regex(/^[a-z"]$/).describe("Register name - a lowercase letter [a-z] or double-quote [\"] for the unnamed register"), content: z.string().describe("The text content to store in the specified register") },
- src/neovim.ts:356-369 (helper)Helper code in getNeovimStatus that reads current register contents using getreg for status reporting.const registers: { [key: string]: string } = {}; const registerNames = [...'abcdefghijklmnopqrstuvwxyz', '"', ...Array(10).keys()]; for (const reg of registerNames) { try { const content = String(await nvim.eval(`getreg('${reg}')`)); // Only include registers that have content if (content && content.trim().length > 0) { registers[String(reg)] = content; } } catch (e) { // Register empty or error } }