I tried these, and they seem to mainly be opening Claude Code in a pane in Vim, along with commands to open the pane. It’s missing the features added to the Emacs version like open file awareness, access to text selection, and integrated diff for changes.
It would be really interesting to see a version which exposes Vim as an MCP. I would love to see Claude Code work on the active file, reading from open buffers, typing Vim motions, and taking advantage of Vim features like find/replace and macros. It would be closer to the real pair programming experience, whereas the read and write experience is slow and disjointed from editing.
Hello, I'm the maintainer of the coder/claudecode.nvim plugin.
This plugin does indeed support that functionality. It implements an MCP server using pure Lua and Neovim primitives. It not only notifies Claude Code about the currently open file and selected lines in a file, but also opens diff views whenever Claude Code attempts to make a file change.
Avante - https://github.com/yetone/avante.nvim. Admittedly I haven't had time to keep up with it's changes and as a result have gone back to VS Code + Copilot, but it's very well integrated last I did use it.
I gave Avante a fair try for about a week and my opinion is that it's not really ready for big time yet. Lots of bugs, slow, and cumbersome. Now I just use Claude Code in a separate tmux pane and its great.
I think that’s a decent approach, but doesn’t the performance of a Neovim terminal bother you? It simply does not feel as good as a native terminal pane. It’s not as bad as VSCode’s terminal pane, but it still leaves something to be desired.
I use Neovim + kitty (https://sw.kovidgoyal.net/kitty/conf/) and the performance is phenomenal. Everything is instant. kitty also has a built-in robust layout system so I ended up ditching tmux entirely for it.
Out of curiosity, do you have a good flow for having a file buffer automatically update in response to claude's changes? I'm perpetually needing to remember to `:e!<CR>` to read the updated file.
To offer an anecdote: I've been used to doing `:e!` with vim. I recently finally had a reason to move to nvim... and it's been auto-updating my buffers when I do stuff in `aider`. Very much a, "oh, ok that's nice!" and I haven't dug further.
I’m actually a neovim user already! This makes me worry that my config has something to prevent this behavior (but I hope not, I hate messing with my config)
Can you prompt it? A bit manual, but hey. I wonder if you can script visual selection in Neovim to output full file path plus line number range, for direct copy paste.
https://github.com/greggh/claude-code.nvim https://github.com/coder/claudecode.nvim
I tried these, and they seem to mainly be opening Claude Code in a pane in Vim, along with commands to open the pane. It’s missing the features added to the Emacs version like open file awareness, access to text selection, and integrated diff for changes.
It would be really interesting to see a version which exposes Vim as an MCP. I would love to see Claude Code work on the active file, reading from open buffers, typing Vim motions, and taking advantage of Vim features like find/replace and macros. It would be closer to the real pair programming experience, whereas the read and write experience is slow and disjointed from editing.
Hello, I'm the maintainer of the coder/claudecode.nvim plugin.
This plugin does indeed support that functionality. It implements an MCP server using pure Lua and Neovim primitives. It not only notifies Claude Code about the currently open file and selected lines in a file, but also opens diff views whenever Claude Code attempts to make a file change.
I have tried the CodeCompanion plugin and had good results. I don't use it super extensively but it's nice when I decide to try it.
Avante - https://github.com/yetone/avante.nvim. Admittedly I haven't had time to keep up with it's changes and as a result have gone back to VS Code + Copilot, but it's very well integrated last I did use it.
I gave Avante a fair try for about a week and my opinion is that it's not really ready for big time yet. Lots of bugs, slow, and cumbersome. Now I just use Claude Code in a separate tmux pane and its great.
I just like having a neovim terminal open with claude code open
I think that’s a decent approach, but doesn’t the performance of a Neovim terminal bother you? It simply does not feel as good as a native terminal pane. It’s not as bad as VSCode’s terminal pane, but it still leaves something to be desired.
I use Neovim + kitty (https://sw.kovidgoyal.net/kitty/conf/) and the performance is phenomenal. Everything is instant. kitty also has a built-in robust layout system so I ended up ditching tmux entirely for it.
Just use tmux and split windows
I have never noticed any problem...
The main annoyance is dealing with newlines
I've noticed no problems, and I'm usually pretty controlling about performance- what am I missing?
Out of curiosity, do you have a good flow for having a file buffer automatically update in response to claude's changes? I'm perpetually needing to remember to `:e!<CR>` to read the updated file.
To offer an anecdote: I've been used to doing `:e!` with vim. I recently finally had a reason to move to nvim... and it's been auto-updating my buffers when I do stuff in `aider`. Very much a, "oh, ok that's nice!" and I haven't dug further.
I’m actually a neovim user already! This makes me worry that my config has something to prevent this behavior (but I hope not, I hate messing with my config)
:help 'autoread' (I think)
There is a vim setting to automatically load changes from disk. I can’t remember name of the option right now, but it should be an easy lookup.
they how do you say. look at these lines of code to claude?
Can you prompt it? A bit manual, but hey. I wonder if you can script visual selection in Neovim to output full file path plus line number range, for direct copy paste.
you can start neomvim with a network ( neovim --listen) socket and tell calude
" look at neovim at this network socket and get current selection"
This actually works :)
I just say "look in file.py at lines 20-30" or "See in function FooBar where we foo the bar".
i guess thats a bit of typing and then claude has to do a grep/find to figure out what you are talking about.
magenta nvim