Use it to write and edit code when that makes sense for you to do so. Just like you always have. It's an extremely useful skill to have even still.
I've had much more success with agents reviewing my code and offering inline autocomplete over LSP than I have with letting the agents write the code, which I then try to review. I end up with a much better mental model of the code and higher quality output than either I or the agent could do alone.
On about day 2 of using Fable I realized that the .vimrc I'd been maintaining for 15-20 years would probably never change again.
With Opus I still feel like I'm pair coding and want to get in there and make some changes myself, but working with Fable (even Fable managing Opus agents) had me in a completely different mindset, one where I realized I would just be getting in the way.
I switched from using Vim as my primary editor to using Zed's Vim Mode. When you have a second process editing your project in the background you need an editor that can display those changes immediately without clunky buffer reloads.
I've also customized Zed's UI to optimize for reading and reviewing code, and mostly adding notes or small focused edits, rather than writing entire files from scratch.
i use vim quite a bit! I find that in this new era, i'm in the command line a lot and like to stay in the command line. vim (I use neovim) is a good way to do that.
Furthermore, a lot of my workflow is now done on remote servers (i love exe.dev) where claude code is sandboxed to an extent (it can still cause damage, just not to my main computer's file system). When I'm configuring those, i have a setup script that installs all of my vim files just the way i like them, so vim behaves exactly the same on a remote server as it does locally. I can edit things as needed. I can also access claude code on those servers as well. So working on my remote machine feels a lot like workin locally [1].
[1] I'm aware that i can setup cursor or vs code to access SSH servers, but it's just not as easy and doesn't feel as natural, IMO. There's something i like about needing to call `ssh remote-server` first.
I still use Vim, but totally different from before. I don’t care about efficient movement/editing bindings. All I use it for now is navigating and viewing files.
but i don't use ai to write code for me -- i use it as a companion thing where i ask questions and then, instead of asking for code, i implement everything myself.
it keeps me sharp and helps me understand the lastest ai stuff.
Usually I keep terminal split open with the agent side by side and make edits by hand where needed or for reviewing the code. Inside the vim itself I have a small plugin that you can feed a block of text with the comment instructing LLM what to do. It then replaces the text with the result of execution. Super useful for small edits here and there that don't require full session. I also have preconfigured neoterm float with the pi agent, that allows me to jump into the session right away.
Hasn't changed at all since AI agents became a thing. tmux, nvim with a few plugins, mainly fzf and LSP support. If I do use an AI agent, I just run it in another tmux window.
I am sort of a no UI (except browser) user for a very long time now, and vim is still incredibly useful.
Granted, the language servers are getting dusted, but it's much nicer to write goals in markdown in vim and send it to LLM in a self-written harness CLI; and even look at the results in the same way. All unix. LLM is just the latest toolbox addition.
Not familiar with blink but I use tmux heavily. Tried herdr but did t stuck. The main selling point is the status report: tmux requires a plugin and even that doesn’t work as good as herdr. By reporting I mean that while a tmux plugin can report a very basic “status” in the powerline, herdr does so natively in greater detail (reports if the agent waits for use input etc). All solutions I came across with status report might support one agent / cli app and not others… so there is that.
(Neo)vim is setup wonderfully for this era. Im with Justin on the take that neovim can replace tmux soon literally all that is left is being able to restart terminal sessions on restart (which is even set as a goal for summer of code).
Neovim can already have all the agents running in different terminal buffers or there are plugins popping up every day to have deep integrations with your favorite or we even have some interesting harnesses that are unique to neovim like sidekick.
As always, the ability to compose small tools and edit any file allow neovim to stay relevant and more powerful than ever in my opinion while not forcing workflow changes like the others
What you’re saying is super interesting, I’ve been using my setup for so long I might have missed some of the latest updates.
I spend most of my time on TMUX with Claude Code and vim side by side btw, but I’m using it just to search some specific code and making small changes.
I mostly review on GitHub PRs tbh
Yea by having claude code in a terminal window within neovim rather than tmux you can leverage neovim commands to traverse, copy, paste and otherwise interact with the terminal window like any other buffer.
There are also plugins with more specific workflows but I like really seeing how much vanilla neovim can get done
Tmux is basically perfect software. It gets right out of your way.
It'll never come out of my development stack, or workflows.
Writing code isn't everything. Almost every time I start an apt command or something that might run a little while, I regret it if I'm not in a tmux session.
I will concede that this is the primary gap in the ecosystem right now is PERSISTENT terminal buffers but the act of doing terminal work in neovim is straight up nice if you use neovim motions to leverage that relationship.
Terminals resuming in a session is just a feature to be added not a complete functional rewrite.
Vim (and the neo-thing) have multiple plugins that support vim-terminals but for agentic workflows tmux (a specialized tool) and similar tools (there are quite a few nowadays) are way better.
Knowing and leveraging the editor deeply is the best high level advice. Sessions for persistence, windows and buffers to manage screen real-estate (including terminals), and the terminal command itself to run the agentic workflow of your choice.
How are you a heavy vim user if you wonder if vim makes sense with ai? There are so many things to do outside of writing code that vim is used for.
Also neovim + claude code + open terminal pane in tmux is the goated combo anyway. Especially more lately you need to understand the code you are writing if you want to do anything important in software, and the best way to do that is neovim :)
neovim + claude code + open terminal is exactly my setup! But all the heavy lifting I used to do simply I’m not doing it anymore. I spend most of the time creating new worktrees and reviewing code, and I guess I’m just not interested about the implementation details that much (not that I don’t look at the code, but minor styling things I just ignore them right now)
I’m transitioning to this new way of work btw, so I still haven’t made up my mind. That’s why I asked for someone else opinion here :)
It absolutely is. I don't really understand why people still confine themselves to a full IDE when doing "agentic programming".
Especially with neovim with something like fzf or ctrl-p, which lets just quickly navigate codebases. This is about as far as you need to go. So to me, being terminal-first and being able to do multiple things at once makes more sense (hence tmux).
It's been many months, and I thoroughly prefer my harness inside of nvim as my day to day development environment. Using Claude code or cursor makes me feel very removed from the code.
Exploring code, gathering context and tweaking prompts/giving guidance to the agent are very much enhanced by neovim.
The biggest boon has been the fact that agents make customizing neovim a lot easier. Writing new bindings, config, and even building novel plugins.
Here's a few that I built that fit into my workflow:
- a file picker that renders in your current window (like oil) and uses more intelligent signals for ranking (like frecency) https://github.com/dlants/needle
I don't think anything has changed for me regarding my vim usage. Previously, I would use vim to make simple changes in the code or configuration files, making larger changes in VS Code. Now, with agents, I never need to make larger code changes manually so I completely ditched VS Code, but I keep using vim in the same way as I did before: for small changes which I want to make manually, for editing configs, or as a scratchpad.
'a lot us' you say? just speak for yourself so at least you will sound confident; all you've demonstrated here is your ignorance of LLM, and those who use it, and you amplify that by throwing silly examples to prove your ignorance.
llm usage or not, code browsing/refactor etc still need human usable tools like vim/git/tmux etc.
I use jj vcs and now most of my time is spent reading the code, so I use diffview.nvim (https://github.com/sindrets/diffview.nvim) with some customizations for jj to read diffs. I also use the snacks picker/explorer to search for code.
Vim/Neovim have only grown more powerful in the age of AI, not less. I am certain that even 30 years from now developers will still be using some form of vim.
69 comments
[ 4.0 ms ] story [ 99.8 ms ] threadI've had much more success with agents reviewing my code and offering inline autocomplete over LSP than I have with letting the agents write the code, which I then try to review. I end up with a much better mental model of the code and higher quality output than either I or the agent could do alone.
With Opus I still feel like I'm pair coding and want to get in there and make some changes myself, but working with Fable (even Fable managing Opus agents) had me in a completely different mindset, one where I realized I would just be getting in the way.
I've also customized Zed's UI to optimize for reading and reviewing code, and mostly adding notes or small focused edits, rather than writing entire files from scratch.
It really can be a fancy auto complete, but more agentic usage moved out of the editors (and I think that's a good thing).
Furthermore, a lot of my workflow is now done on remote servers (i love exe.dev) where claude code is sandboxed to an extent (it can still cause damage, just not to my main computer's file system). When I'm configuring those, i have a setup script that installs all of my vim files just the way i like them, so vim behaves exactly the same on a remote server as it does locally. I can edit things as needed. I can also access claude code on those servers as well. So working on my remote machine feels a lot like workin locally [1].
[1] I'm aware that i can setup cursor or vs code to access SSH servers, but it's just not as easy and doesn't feel as natural, IMO. There's something i like about needing to call `ssh remote-server` first.
"vimdiff" is a really great way to review code changes side-by-side.
but i don't use ai to write code for me -- i use it as a companion thing where i ask questions and then, instead of asking for code, i implement everything myself.
it keeps me sharp and helps me understand the lastest ai stuff.
Granted, the language servers are getting dusted, but it's much nicer to write goals in markdown in vim and send it to LLM in a self-written harness CLI; and even look at the results in the same way. All unix. LLM is just the latest toolbox addition.
I can jump to one tab look at the code, jump back over and talk to claude for a little.
I can spread this all across several projects using herdrs workspaces.
I still write code when it makes sense.
Sometimes i annotate the code with comments, hop back over and ask the LLM to consume the annotations i just added and make changes.
Sometimes i ask the LLM to analyze lots of code, and come up with a plan of attack for me, then i go implement it myself.
For Personal projects I write much more of the code myself still, because i enjoy it. For work, i do whatever gets the best outcome most efficiently.
Neovim can already have all the agents running in different terminal buffers or there are plugins popping up every day to have deep integrations with your favorite or we even have some interesting harnesses that are unique to neovim like sidekick.
As always, the ability to compose small tools and edit any file allow neovim to stay relevant and more powerful than ever in my opinion while not forcing workflow changes like the others
There are also plugins with more specific workflows but I like really seeing how much vanilla neovim can get done
Tmux is basically perfect software. It gets right out of your way.
It'll never come out of my development stack, or workflows.
Writing code isn't everything. Almost every time I start an apt command or something that might run a little while, I regret it if I'm not in a tmux session.
I could sooner do without vim than tmux.
Terminals resuming in a session is just a feature to be added not a complete functional rewrite.
Also neovim + claude code + open terminal pane in tmux is the goated combo anyway. Especially more lately you need to understand the code you are writing if you want to do anything important in software, and the best way to do that is neovim :)
https://opencode.ai/
It absolutely is. I don't really understand why people still confine themselves to a full IDE when doing "agentic programming".
Especially with neovim with something like fzf or ctrl-p, which lets just quickly navigate codebases. This is about as far as you need to go. So to me, being terminal-first and being able to do multiple things at once makes more sense (hence tmux).
And wrote about my thoughts on the relevance of nvim here https://dlants.me/ai-whiplash.html
It's been many months, and I thoroughly prefer my harness inside of nvim as my day to day development environment. Using Claude code or cursor makes me feel very removed from the code.
Exploring code, gathering context and tweaking prompts/giving guidance to the agent are very much enhanced by neovim.
The biggest boon has been the fact that agents make customizing neovim a lot easier. Writing new bindings, config, and even building novel plugins.
Here's a few that I built that fit into my workflow:
- a tool for reviewing commits / branches / wip. https://github.com/dlants/glean
- an iterative grepper https://github.com/dlants/shuck
- a file picker that renders in your current window (like oil) and uses more intelligent signals for ranking (like frecency) https://github.com/dlants/needle
Nor am I
This seems to trigger argumentative replies on HN, including personal attacks
How do we explain this
llm usage or not, code browsing/refactor etc still need human usable tools like vim/git/tmux etc.
Definitely not a vim power user though. I just like writing markdown spec-ish prompts and opencode simplistic input box isn’t ideal for that
1. /edit => opens in editor
2. /feedback => opens the last llm message in an editor so i can inline feedback. Think inline responses in email vs bottom posting.
3. /review => same as /feedback but opens up the diff so i do an inline review. Yes I still read the code it ships.
So basically in this flow vim becomes integral to doing anything involved.