# Vim wants you to control, VSCode wants you to consume

DevFeed: [Vim wants you to control, VSCode wants you to consume](<https://devfeed.tech/articles/vim-wants-you-to-control-vscode-wants-you-to-consume-25508.md>)

Original publisher: [Read original article](<https://buttondown.com/hillelwayne/archive/vim-wants-you-to-control-vscode-wants-you-to/>)

Author: Hillel Wayne

Published: 2026-08-18T16:26:05Z

Content type: opinion

Language: en

Sources: [Newsletter feed for Hillel Wayne's Newsletter](<https://devfeed.tech/sources/newsletter-feed-for-hillel-wayne-s-newsletter.md>)

Topics: [Vim](<https://devfeed.tech/topics/vim.md>), [Neovim](<https://devfeed.tech/topics/neovim.md>), [Visual Studio Code](<https://devfeed.tech/topics/visual-studio-code.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Emacs](<https://devfeed.tech/topics/emacs.md>)

Tags: [command-line](<https://devfeed.tech/tags/command-line.md>), [config](<https://devfeed.tech/tags/config.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [vim](<https://devfeed.tech/tags/vim.md>), [vscode](<https://devfeed.tech/tags/vscode.md>)

## AI overview

The article contrasts Vim and Neovim's programmable, state-oriented configuration with VSCode's static configuration and fixed built-in commands. It argues that Vim-based editors provide substantially more direct control over editor behavior, while also requiring more configuration and commitment.

## Source excerpt

Newsletter updates were sporadic in July because of two weddings, two conferences (with two different talks!), and finishing Logic for Programmers. Huge thank you to everybody who bought a copy, as well as for your patience with the schedule. There's some podcast appearances, a conf talk, and a book sale at the end of this post. Newsletter updates will be sporadic in August because I just started my Developer Educator job at Antithesis. I'll have less time to write because I'll be working 40 hour workweeks, about 8 hours of which being actual work and the other 32 being bashing my head against NixOS. NixOS is the standard developer OS at the company. It's also a notoriously difficult distro to learn even for Linux heads, and I'm coming from Windows. The only way I am going to get anywhere is to go all in and commit fully to the NixOS philosophy.1 For one, I'm seeing how long I can last without my customary 2000-line Neovim config. Which immediately raises the question as to why I have 2000 lines of Neovim config. It's because Vim2 (and Emacs) think of configuration in a very different way than more popular editors do. Control and Consumption Say we want to make ctrl+n to save the current file. In VSCode, you put this in keybindings.json: [ { "key": "ctrl+n", "command": "workbench.action.files.save" } ] In Neovim, you put this in init.lua: vim.keymap.set('n', '<c-n>', function() vim.cmd.write() end) Now, a couple of differences to see. First, the VSCode example is invoking a fixed, built-in command, while Neovim can bind an arbitrary function. Second, in VSCode you edit a static configuration file with static data, while in Neovim you execute a command that edits the running editor state. In fact, it doesn't even need to be in a configuration file: you can add a new keymap directly from the command line. Though you'd probably instead do that command in the OG Vim way: map <c-n> :w<CR> And that does something different than a function: it makes pressing ctrl+n mean "d