Skip to main content
Glama

vim_buffer_save

Save the current buffer or to a specified filename directly within the MCP Neovim Server, streamlining text editing and file management workflows.

Instructions

Save current buffer or save to specific filename

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filenameNoOptional filename to save buffer to (defaults to current buffer's filename)

Implementation Reference

  • Core implementation of buffer saving logic in NeovimManager.saveBuffer method, which executes Neovim :write command
    public async saveBuffer(filename?: string): Promise<string> { try { const nvim = await this.connect(); if (filename) { // Save with specific filename await nvim.command(`write ${filename}`); return `Buffer saved to: ${filename}`; } else { // Save current buffer const buffer = await nvim.buffer; const bufferName = await buffer.name; if (!bufferName) { throw new NeovimValidationError('Cannot save unnamed buffer without specifying filename'); } await nvim.command('write'); return `Buffer saved: ${bufferName}`; } } catch (error) { if (error instanceof NeovimValidationError) { throw error; } console.error('Error saving buffer:', error); throw new NeovimCommandError(`save ${filename || 'current buffer'}`, error instanceof Error ? error.message : 'Unknown error'); } }
  • MCP tool handler function for vim_buffer_save that wraps neovimManager.saveBuffer and formats the response
    async ({ filename }) => { try { const result = await neovimManager.saveBuffer(filename); return { content: [{ type: "text", text: result }] }; } catch (error) { return { content: [{ type: "text", text: error instanceof Error ? error.message : 'Error saving buffer' }] }; } }
  • Zod input schema definition for the vim_buffer_save tool parameters
    filename: z.string().optional().describe("Optional filename to save buffer to (defaults to current buffer's filename)") },
  • src/index.ts:326-350 (registration)
    Registration of the vim_buffer_save tool with MCP server including name, description, schema, and handler
    server.tool( "vim_buffer_save", "Save current buffer or save to specific filename", { filename: z.string().optional().describe("Optional filename to save buffer to (defaults to current buffer's filename)") }, async ({ filename }) => { try { const result = await neovimManager.saveBuffer(filename); return { content: [{ type: "text", text: result }] }; } catch (error) { return { content: [{ type: "text", text: error instanceof Error ? error.message : 'Error saving buffer' }] }; } } );

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bigcodegen/mcp-neovim-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server