switching to neovim

apr. 5, 2026

i use neovim btw

about 3 weeks ago, i switched my editor from VS Code to neovim (and switched my terminal emulator from the native macOS terminal to ghostty).

honestly, the motivation at first was just to try out something new. i had watched a youtube video where someone had a really sick setup for their terminal (done with what i now think was oh-my-zsh + kitty) and thought it looked super cool. i had never really been that into the terminal for anything beyond using the built in VSC terminal to run my projects, but i was bored of my current projects and looking for something cool to work on, so i decided i'd give a proper terminal setup a try.

what followed was an interesting ride where i tried out a bunch of different tools and setups, really sucked at using nvim / the terminal as my primary editor, and eventually got to a baseline level of competency. i've arranged a summary of my findings below to hopefully be entertaining / help you decide if you should make the switch to neovim yourself or not.

what made me initially switch to neovim (and should you?)

my take on this is that it's pretty easy to figure out if you're the type of person that would enjoy using vim/neovim/vim keybindings before you've ever even tried it.

before i even really knew how many people seriously used vim/neovim as their primary editor, i was already the kind of person that liked to experiment with my setup to optimize for doing as much with the keyboard / with as little effort as possible.

about a year or so ago, i switched the native macOS spotlight search to raycast. while it has a plethora of great features, the one that i have found to be the greatest by far (and the reason i'll basically never use anything other than raycast again) is the ability to assign apps to hotkeys. i personally have my apps mapped to some combination of option + [character], e.g. opt + m for opening / focusing messages, opt + c for my IDE, opt + t for my terminal, opt + a for my browser, etc. this has been a complete game changer for me in navigating my desktop and it's become second nature to basically fly around using these hotkeys to navigate / change window focus / open apps, without ever even touching my mouse to open apps. i've also used zen browser (and arc browser before that) for about the last four years, and my favorite features are the ability to set custom key mappings to switch between spaces, toggle the sidebar, etc.

if this sounds like you, i can already say with confidence that you'll like vim keybinds and should try them out. if this instead sounds insane and you're the type of person to just set up your laptop using the vanilla settings and never really make these kinds of optimizations, vim will not be appealing to you.

once i took the time to get slightly comfortable navigating text with vim, the experience felt really similar and tickled the same part of my brain as setting up all my raycast hotkeys. the tradeoff is that the learning curve is incredibly steep; even now that i'm relatively comfortable with basic file navigation / text editing and using the different modes, i'm not even close to being "good" at vim and anyone who's been using it for years is probably hundreds of times faster with it than me. that being said, my raycast shortcuts eventually became second nature with muscle memory for me, and i can already see that once i start getting to that point with vim, the result will be drastic and i'llbe able to maintain the "flow state" / focus on my work without having to think about what i need to press to navigate much faster.

making the switch

based on the advice i was seeing online, most people recommended that to get better with vim, you should use tools like :VimTutor and install the vim extension for your preferred IDE to start using keybinds in a familiar environment, instead of switching to vim or neovim cold turkey.

i tried this out for VS Code initially, but i honestly found that the experience was kind of lackluster and really wasn't enjoyable. instead, i opened the zed IDE (another great IDE, but lacking full tooling / extension support in my opinion) and the vim extension there worked much better.

over time, i found that :VimTutor was honestly largely uselss, and so were most online tools i tried out that promised to help you get better with vim. instead, i found that just opening up a project i was working on and trying to do the work with vim keybinds is what ended up working. by doing actual work, i was forced to repeatedly confront similar actions that i would be using in an actual coding environment (e.g. quickly jumping to a specific line, or the end of a coding block), which would cause me to learn those specific movements as they came up. this meant that more useful motions naturally got committed to muscle memory faster, since they were the ones that were coming up the most often as i was doing work.

however, the extension experience honestly still didn't quite feel fully native, so at some point i decided to just try out nvim cold turkey. the main thing i'd heard about it was that it was pretty daunting to switch to at first because it requires a lot of setup to be usable / provide an experience comparable to an IDE.

honestly, this is the piece of advice i've heard that i would disagree with the most strongly. even for someone with my skill level (and i'm still a junior dev) and with claude's help, the full setup process was really painless and straightforward; i basically told it i was switching to nvim for the first time and asked it to walk me through the setup. it installed lazy.nvim for me as a package manager, and it only took a quick overview of the init.lua to get a cursory understanding of how packages were installed. from there, i'd ask it for package recommendations any time there was a feature i wanted, and unsurprisingly there was always a package to accomplish exactly what i was looking for (e.g. neotree for a VSC-like file browser sidebar, telescope for super fast file searching, and mason-lspconfig for lsp support / error detection).

the experience was immediately way better and felt much more native. the biggest thing for me was the ability to navigate everything with only keystrokes, as my biggest gripe with VSC + vim extension was the inability to easily switch focus between the file i was editing and the file browser side panel without touching my mouse. the only thing i was losing was the ability to switch away from vim keybinds when i felt like it, but this ended up working in my favor since using vim keybinds exclusively helped me ramp up / get used to vim as a primary editor even faster.

productivity definitely suffered significantly at first, but i'd say it took less time than i had expected before i felt relatively "comfortable."

using a combination of the above techniques (forcing myself to use neovim immediately for actual work, and forcing myself to use only vim keybinds) i was able to get to the point where i didn't really miss VSC anymore in about two weeks.

even for those who are nervous to make the switch to keyboard only file navigation immediately, it's honestly not that deep if you enable mouse support in neovim. with it, you can use plugins like neotree to get a largely similar experience to a traditional IDE, with the caveat that actual text editing is probably still best done without the mouse.

is it better?

first of all, i'd pretty much immediately do away with the notion that vim / neovim will make you "more productive." to be so lightning fast at thinking through coding problems that your thought processes are genuinely limited by the time it takes to lift your right hand from your keyboard to your mouse and then switch it back, you'd have to be some sort of demigod that is described only in the bible.

that being said, it definitely has its advantages if you're the right kind of person (see section on if you should switch). while i'm definitely not faster at actually coding, and i honestly haven't even reached the point where every single motion is like second nature to me, at the times when a motion does come naturally to me it feels like magic and helps me to keep thinking without interrupting my "flow." it feels the same way as when i hit opt + t on my keyboard and just start typing whatever it was i was going to do with the absolute confidence that raycast will have opened my terminal without my having to think about it. when it works, it really works and i can basically find things, start editing, and keep going without having to move my mouse or find it visually.

that being said, if the idea of that kind of improvement sounds meaningless to you, or you're otherwise satisfied with your editor, there's not really a compelling reason to switch.

the other nice consequence of switching to neovim has been that it intrinsically forces me to actually interact with your code more. the easiest ways i've found to navigate files quickly is by either jumping to a specific line (requires me to know roughly where the code block i'm looking for is) or by searching for text and jumping to it that way (requires me to know exactly what code i'm looking for). with the increasing prevalence of AI coding tools, i think it's really easy to get swallowed up in the trap of just relying on claude entirely without actually even looking at what it's doing after a certain point. the navigation mechanisms and slightly increased friction of searching for stuff visually actually makes neovim a really good deterrent for me to fall into those traps, which is the main reason i've continued to use it.

neovim + ghostty

i also switched to ghostty as my terminal emulator around the same time i started using neovim. i have found that they synergize really nicely.

my default setup now when i'm sitting down to work on something is to create a new ghostty tab, and then split the window into three terminals (a large one on the left, and then two vertically split ones on the right), which can all be done with keybinds. i use the main terminal for neovim, and the other two for running shell commands / claude code respectively. ghostty is also configurable enough that i could setup keybinds to navigate between the terminals quickly using cmd + shift + h/j/k/l (which conveniently mirrors the vim keys for going right, down, up, and left).

i've also really loved playing around some of the "less useful" features that ghostty provides. specifically, ghostty supports shaders so i was able to set up my cursor to have a blaze effect + cursor trail, and i configured my zsh prompt to look really cool with starship. my friends have used all sorts of colorful insults to describe how dumb / nerdy / useless they think all this is, but i don't care because it's fun 😼

porting my extension to neovim

the last straw for me (and probably the clearest sign that i'm probably sticking with neovim for good) was when i finally decided to just bite the bullet and port my VS Code extension to neovim.

for context, i'd developed an extension called One Million that was inspired by the Primeagen's 99, and allowed for super fast inline edits with AI without having to vibe code an entire feature or even leave your editor. that extension was one of the last things keeping me from switching to neovim entirely, but eventually i got tired of switching back and forth between VSC and neovim.

i tried out 99 in neovim, but ironically i ended up not really liking the user experience, and crucially the fact that you could only use it in visual mode after having highlighted the block of text you wanted to edit. so, i decided the path of least resistance would be to just port my entire extension to neovim with full feature parity.

it ended up being really easy (thanks claude code) and took less than an hour to have full feature parity with the original VS Code version. if you'd like to check out / install the plugin, you can do so here.

where i'm at now

at this point, i've switched to neovim entirely for all personal development / text editing. as of now, i'm using neovim primarily at work as well, but still have an IDE installed for some of the features i haven't quite fully gotten comfortable using neovim to replace, and also for allowing for quick collaboration with my coworkers if i ever need help with something. my setup works really well and feels really natural to me at this point, so i don't anticipate i'll be switching back to VS Code or another ide any time soon.

it's been a lot of fun setting up my terminal & neovim config, and i can already see the appeal just three weeks in. i'm excited to keep finding new plugins and tweaking my config + getting better with vim motions, and hopefully in due time i'll be fully comfortable and even faster with nvim than i am with traditional IDE setups.