Dalius's blog

Sunday, June 1, 2025

What's missing in LLM tools in Neovim?

So I have exposed myself to non Neovim LLM tools (e.g. Cursor, Warp) and how professional developers are using them in their day-to-day jobs. I did that because of two reasons mainly:

  • To learn where AI assisted development is moving on

  • To see what I’m missing by using Neovim LLM tools (CodeCompanion.nvim mainly) and if those gaps are easy to fill

To get balanced view I recommend this Simon Willison article as it gives some very good ideas how to use LLM without any tools actually and what’s important:

https://simonwillison.net/2025/Mar/11/using-llms-for-code/

Context

So first thing that is important is how to give context to LLM.

Context might include:

  • Files
  • Terminal output
  • LSP References
  • Library samples you are using (one of the interesting examples I have seen recently is LLM section in https://hono.dev/docs/. I am not sure how common it is)

Cursor allows doing that by simply drag-and-drop - that’s not something you can do in Neovim. Actually I wouldn’t expect this to be able to do in Neovim as it is not vim-way. CodeCompanion has support for adding files (#buffer, /files, /buffer) but IMHO this can be improved and this discussion was nice start for that https://github.com/olimorris/codecompanion.nvim/discussions/641

Context size

Cursor has some functionality to handle situation when you reach the limit of your input tokens. This is something that could be improved in CodeCompanion, but I am not sure how critical it is. I have not met this problem yet, but that’s because I don’t use agentic workflows.

Multiple chats support

Here my impression was that in Cursor you can fork your chats basically. E.g. you create plan do add feature and fork each task to separate chat. This kind of can be done in CodeCompanion but this is going to be quite manual.

I’m not sure how critical it is to improve this.

Rules

This is something what’s going to become important when working in teams IMHO. Cursor support user and project rules. CodeCompanion has different concepts for user rules so IMHO that’s covered. For project rules it seems this Neovim plugin can be used:

https://github.com/banjo/contextfiles.nvim

I still don’t use rules, but I think I might need to do that in the future.

Generating git commits

That’s useless in general as LLM generates “what’s done” and not “why it is done” which is usually important. At least that’s what I’m looking for when I use git blame

CodeCompanion can do that and I think we are good here.

Agentic workflow

CodeCompanion can do that, but I have not used that yet. Therefore no comments how good it is.

MCP

mcphub.nvim allows using MCP in CodeCompanion and it works great.

Summary

Overall I think Neovim tooling for LLM is good enough and comparable to what Cursor has. It is not ideal, but it does not limit me by lacking functionality. It limits me only by not being optimal.