Skip to content

nvim

Arugula works with the nvim you already run in a pane, with nothing to set up for most of it. It needs nvim 0.10 or later. The first time nvim runs in one of your panes, Arugula shows the nvim in Arugula card over that pane. To see it again, choose nvim help in the pane’s menu, or Help › nvim in Arugula in the account menu.

  • Following: the pane’s card and the swarm show the file and line nvim has open, its unsaved buffers and its diagnostics. The daemon reads them over nvim’s own server socket, so this works without any plugin.
  • One entry: your nvim is the pane. It shows once in the swarm, not as a pane and an editor.
  • Open in editor: with Settings › Editor set to nvim, Open in editor (a pane’s menu, a diff card, a file, a link) opens the file in the nvim already running there, at its line. With none running, it opens a new nvim editor block. Ask each time offers VS Code or nvim on every open.
  • Key tips: each time nvim starts in a pane, the pane’s header shows one nvim key tip. Its button opens that tip’s :help in that nvim. Each tip shows once before any repeats.

With arugula.nvim, when Claude Code runs in a pane in the same session, each edit it proposes opens in nvim as a vimdiff tab: the file as it is on the left, the proposed text on the right, with a header naming the agent and the file. The edit’s card says it’s also open in nvim.

  • <leader>aa or :ArugulaAccept accepts it. Edit the proposed side first to send your text instead.
  • <leader>ar or :ArugulaReject rejects it.
  • Answering in nvim, on the card or in Claude Code’s terminal answers all three.
  • Two edits in a row open a tab each, in order.

Change the keys with keys = { accept = …, reject = … } in the plugin’s setup (false for none). :help arugula-diff has the details.

The plugin adds live following of your buffer, merge conflicts and debugger stops (from nvim-dap, if you have it) as reasons on the pane, and Claude Code’s edits as a vimdiff.

When nvim runs in a pane without it, the pane’s header offers Add arugula.nvim. That installs it into nvim’s own package directory (site/pack/arugula in stdpath("data")) and loads it into the running nvim, with no restart and no change to your config. The daemon refreshes that copy when Arugula is upgraded. A copy your plugin manager loads is never offered over or touched.

To install it yourself instead, point your plugin manager at editors/nvim in a checkout of the code repository, for example with lazy.nvim:

{ dir = "~/src/arugula/editors/nvim" }

To remove Arugula’s copy, choose Settings › Editor › Remove arugula.nvim, or delete site/pack/arugula in nvim’s data directory (:echo stdpath('data')). An nvim that has it loaded keeps it until it quits.

  • :ArugulaJoin shows the current folder in the swarm and remembers it, so nvim joins by itself the next time it starts there. Outside an Arugula pane, nvim joins as an entry of its own.
  • :ArugulaLeave takes it out at once and forgets it. In a pane, the pane stays, read without the plugin.
  • :ArugulaStatus says whether it’s in and how many people follow it. require("arugula").status() gives the same for a statusline.
  • :checkhealth arugula checks the daemon’s socket, says which daemon answers on it, and names the pane this nvim is tied to.

The plugin talks to the daemon on the same machine ($ARUGULA_SOCK, else ~/.local/state/arugula/sock). Over ssh, nvim runs on the remote machine, so that’s the daemon there. Set vim.g.arugula = { socket = "…" } before the plugin loads to use another socket.

An nvim editor block is a pane running nvim with arugula.nvim loaded from the daemon’s own copy, even if you never installed it. Your config still loads. Open one with + Pane › Editor, choosing nvim, or with Open in editor when your Editor is nvim and no nvim is running.

The block takes the page’s colors: the plugin applies them as the colorscheme arugula, and again whenever the page’s palette changes. Set vim.g.arugula = { theme = false } to keep your own colorscheme, or pick another with :colorscheme to keep it for the rest of that nvim.