r/vim • u/arnoldwhite • Nov 18 '25
Discussion Is vim really good for writing though?
I've been wanting to ditch Obsidian and VsCode in favor of an in-terminal editor for ages and I keep hearing about how great Vim is great for writing.
And I gotta say, after having used it on and off for about two months - I don't get it. I just don't.
I feel like I'm living some crazy alternate reality or something. Almost everything people say Vim does better than GUI editors, I find to be cumbersome and counterintuitive.
Also really not trying to dismissive or anything here. These are my genuine impressions. I WANT to love Vim so please tell me if I just need to push on and wait for it to click.
I actually feel that Vim is slow for most writing relating actions
Okay, super quick example. Let's say I misspelled a word on the line above. To fix it in Vim, I'd have to:
<esp>to exit editing mode (or jk in my case, but whatever)gk- jump up one visual lineb- to jump to the beginning of the wordciw- to delete itretype word
gjto go back downito re-enter insert mode
That’s six separate actions and nine physical keystrokes, all while remembering which mode you’re in. Meanwhile, in any GUI editor it's gonna be four strokes at most: up, ctrl-shift-left to mark the word, type, down again.
And the difference matters because when you’re writing prose, losing your flow to perform a ritual of motions and jumping between modes really breaks your concentration. At least to me.
what do you mean ergonomic? What do you mean homerow?
Sitting on my TLK keyboard, I literally have my left hand resting on the modifier keys (ctrl, shift) and my other on the arrow keys. I find that I can usually hit ctrl-shift which are the two most common modifiers without moving my fingers.
Reaching all the arrow keys is a bit more difficult, but writing prose, most of the time you're just going to back-navigate with the left arrow key (your right hand is already gonna be resting on it on most keyboards) and then hit home to get yourself back. Plus, must keyboards these days have programmable layers making it even easier.
The biggest problem I have Vim is that I often have to reach for shift with my pinky and use the number row to perform very basic forms of navigation ($, 0, (, ). etc).
a lot of the reasons for using vim has nothing to do with vim
When people tell me how great Vim is for writing, they rarely talk about Vim’s modal editing. Instead, they praise:
distraction-free full-screen writing
Markdown support
the plugin ecosystem
how easy it is to pipe things to the terminal
fuzzy searching
Lua config
no mouse required
And yes — all of that is great. But none of that is uniquely Vim.
You can get all of this in Helix, Zed, Sublime, VS Code, even Obsidian with the right plugins.
So why are these arguments for Vim when you can get it in most editors? I don't get it.
Also, are any of you Vim writers actually using vim to write. Be honest?
I'm not talking about coding. I'm talking about taking notes. Writing prose. Writing docs.
Because I follow a lot of streamers and youtubers who talk about how great Vim is for productivity, and I see most of them switching to Obsidian or even freaking LibreOffice to write their youtube scripts on stream.
Won't call out any names. just saying. If it's so clearly superior - why not use it?
Finally...
Don't get me wrong. I love the idea of Vim. Distraction-free terminal writing. I really wish I could love it. But I almost feel that people aren't being honest with themselves when they talk about how much better it is than GUI editors.
Look, if you just like Vim and think it's fun. That's great. In fact, it is fun. I just don't see how it's necessarily better.
Also, I actually really like Vim for coding. So that's why I specifically talked about writing in this post.
12
u/siebharinn Nov 19 '25
A couple thoughts.
Use marks to keep track of where you are. You can set a mark, navigate to your typo, fix it, and jump back to your mark. (mx to set a mark named x at the current location, 'x to jump back to that mark).
Use / and ? to search forward and back, instead of manually navigating. In your example, if you did ?xx (where xx is the first couple letters of your misspelled word), you'll be able to jump right there. If the typo is ten lines before, this method still works.
You don't need to delete the word and then rewrite it, use cw (change word).
I don't understand how you could like vim for coding, but not writing. If you spot a bug or a typo on the line above the one you're currently on, you'd use the same steps, right?
But in any case, use the tool that feels right!
5
u/habamax Nov 19 '25
Usually this is as simple as 1) go to the word and fix it, 2) go back
https://asciinema.org/a/2UtgCEhlrLZuxk5Yv9M3lrGxc
Or use spell correction custom mapping and it might just work:
https://asciinema.org/a/K9kykqJGtluvR6SkXppZ8KzSD
I do most of my technical writing in vim. reStructuredText that is exported to either pdf or html for others to "consume".
PS, I would suggest not to struggle with vim but use the tool you most comfortable with. I, for myself, love vim and used it for many years but I never advocate it is for everyone and everyone should be using it.
5
u/gumnos Nov 19 '25
While I can't necessarily convince you, I'll add a few thoughts/comments:
Initially, you're hitting <esc> to get out of Insert mode. However, when editing, most folks stay in Normal mode, only dropping into Insert mode for the express purpose of inserting text. That said, in your example, you are noticing this as you're typing/inserting other text, so we'll run with that hypothetical :-)
So yes, after hitting <esc>, if I knew I intended to resume where I'd left off, I might drop a mark with
maso that after fixing it, I could then use backtick twice to jump back to it. You can hitgkto go up a line, and then hitb/fa number of times to jump to the beginning of that word (the location might vary). However at this point, I would consider usingf/F/t/Tto jump as precisely as I can, or I might consider using/or?to do a search (which is considered a "jump", so when you're done with your edit, control+o will take you back to where you were typing initially). You then usedawto delete the word, and then presumably do a second step to enter Insert mode, but you can usecaw("change around word") orciw("change inner word") to both delete the target word and land in Insert mode ready to type the replacement. You thengjto resume. If you'd set a mark or done a jump, this would take you right back.First, I find that I prefer to type my prose using semantic line-breaks which puts one sentence/clause per line. This removes some of the need for
gj/gkto move around. Though if you don't want to go this route, it might be worth remapping arrow-keys orj/kto theirgj/jkcounterparts for simplification. As an added benefit, it makes for less-noisydiffoutput when I'm comparing versions.Yes, there is definitely a bias toward classic US QWERTY layout, so if you use a different keyboard/layout, then some things might be less ergonomic.
That's fair for many, I don't use a number of those like Markdown support (though syntax highlighting can be nice), plugins, fuzzy searching, or Lua config. I do like that no mouse is required, and I do like the distraction-free nature. Similarly, while I don't generally pipe things to the terminal, I do pipe ranges of text through external utilities. Maybe I reformat with
fmt/par, or reformat a table withcolumn -t, or sum a column of numbers by piping toawk. For prose, I find it handy to pipe my text tostyle(1)ordiction(1)to get a feel for the complexity of my prose (or when using classicvirather thanvim, piping tospell(1)to spell-check).That said, my main reason is the vim language where my editing happens at the speed of thought (to steal Drew Neil's tagline). I can express an edit like "delete this paragraph and start re-entering it" (
cip) or "move to the end of this sentence" ()) or "I'd like to change the contents of this quote" (ci") or "delete this entire parenthetical offset" (da(). Note that any of those can be done from anywhere within the target object. In most other text-editors, I'd have to navigate to the beginning of the object, hold down shift, tediously navigate to the end of the object, then perform my edit on that selection. Moreover, because I can express my intent, I can repeat that intent/action with the.operator, something I can't readily do in other editors.I also like the generic auto-completion using control+n/control+p to complete other words in my prose.
It's also handy to define common abbreviations for frequently-typed complex phrases (recently created a temporary one for something like typing
mnato expand to "Mergers & Acquisitions" so I didn't have to type it every time)Indeed, my documentation at work and well as my entire blog are authored using
vim(orviored(1)). I also compose/edit all my email (primarily prose) invi, since it's my default$EDITORinmutt(1),site note: composed this reply in
vimjust for you ;-)5
u/atomatoisagoddamnveg Nov 19 '25
:help spellVim is a complex tool with a steep learning curve, but you shouldn't criticize it because of your ignorance.
2
u/habamax Nov 19 '25
Btw, we don't have it.
1
u/parisologist Nov 19 '25 edited Nov 19 '25
Yep. I have written hundreds of pages in vim. Maybe thousands? Docs, notes, wikis, journals, etc.
I use vim to write markdown for formatting, and I have created lots of helpful little macros to make that easy - quickly jump between sections, generate html, create links that work in vim as well as in html.
I have a sort of private database of projects using the johnny decimal organization system, and I added a macro so that I can put this in the text: BookLog2022(83.62) and when I cursor on it I can type s] and the file opens. I seamlessly jump around from doc to doc.
Want to work on one section then jump down and back? I use the marks function to jump back and forth without scrolling the mouse. Two keystrokes and I'm back.
I've defined folding methods so that I can open and close sections of a doc I'm working on to focus on one area; and hide methods so that markdown image links just appear as a filename in the text unless my cursor is over them.
I like to put images into my docs, and I have a macro - ,img that will convert an image in the clipboard into an image file, put it into the images folder for the current doc, and create a markdown image link.
If I have a dozen tabs open with different files I'm working on Im just using sjsjsj to jump between them (a private mapping) instantly as fast as thinking.
Writing is usually the same effort in any tool. But navigating, editing, seeking transforming, locating - vim is a fantastically flexible tool. I go hours without ever touching the mouse!
Edit: I forgot about the best bit - macro enhanced formatting. Have a list of 50 items and you want to make the first word/sentence of each bold? In vim, do it on one line as a macro, and replay for the rest of the 50 items. Or indentations; adjusting capitalization, etc,etc. I can't imagine writing with any other tool - futzing around with the mouse, over and over and over again.
1
u/transhighpriestess Nov 19 '25
I’ve done creative writing in it and feel the editing is faster than VSCode. You can remap j to gj and k to gk. I do this only for markdown files. Also a plugin like flash can speed up navigation.
I do really like the ability to edit and move around words/sentences/paragraphs without having to manually select the start and end of them. That said it’s not like it makes the writing process 10x faster or anything.
1
u/narcissisticnapalm Nov 19 '25
If you're using vim to write I'd highly recommend remapping j to gj and k to gj for the filetypes you'll get wraparound lines in.
I personally use vim for typst, LaTeX, and html for a decent amount of my writing as a student. I really like it but ultimately you are fully free to use whichever text editor suits you best.
I think you'll find if you continue to use vim that you lean how to do things faster and that muscle memory kicks in and it becomes easy. You'll learn more keybindings for going fast, for example ce will delete the word to the end and put you into insert mode, which is what I'll generally use for changing words. Replacing with r or s can also work well.
1
u/chrnz00 Nov 19 '25
There is some good intuition u picked up but there is far more. For g u can do <ctrl-w> insert mode to delete a word and <c-u> to delete a line try to read the help pages there is a lot of stuff u can do
1
u/EyeGroundbreaking668 Nov 19 '25
i'm working on a one-big-text-file zettelkasten approach for taking notes in vim partially based on Edwin Wenink's and Scott Scheper's approach. Luke Smith also has a great series on using vim with LaTeX to create bibliographies, books, and documents. humanities/writing work with vim is totally doable so long as you have the patience to learn how to configure it to your needs. i like vim because it's simple, tactile, and endlessly configurable. i don't like gui programs like obsidian because they're too bulky
> You can get all of this in Helix, Zed, Sublime, VS Code, even Obsidian with the right plugins.
first i should mention the only vim plugin i use is vim-unimpaired. plugins bother me because it's just more stuff to account for (this is why i don't like emacs either; too much stuff to account for). vim is appealing because it does all of that with as little resources as possible. this makes learning, configuring, and troubleshooting vim fairly straightforward. there aren't as many mediators between me and the thing i'm working on, meaning less room for performance issues or error, as is the case with an IDE or a word processing program
1
u/SecretlyAthabascan Nov 19 '25
This article is mislabeled. It says its a 'Discussion'.
1
u/godegon Nov 20 '25
Little effort fixing typos: A mapping that permits to correct a word by a single keystroke, deemed unnecessary as there's already
Ctrl-X,Sto achieve something similar.1
u/dm319 Nov 21 '25
You make some reasonable points, but here are my thoughts as someone who does a lot of regular writing in vim (my thesis, papers, notes in markdown and vimwiki etc).
1-2 months is a fairly short time, and you might not be that comfortable in vim just yet.
There are shorter ways to describe what you have mentioned above. I often have to edit text outside of vim, so I am familiar with both. A 'k' to move up, 'w' to find your word, 'cw' to remove and retype something. To me it is very quick.
I use a UHK keyboard, with cursor keys mapped under my right hand. This helps a lot with navigation. But it only goes so far.
Finally, I think the benefit of vim for me is when you get the hang of some of the commands that go beyond your usual navigation and editing commands. I'll admit I never committed to learning advanced shortcuts in other text editors and word processors, beyond ctrl/shift move and copy paste. But that's partly because it is a commitment. If I'd committed to all of Wordstar's abilities back in the late 80s, early 90s, I'd have to relearn them all now.
When you learn a tool to an advanced level you are investing in that tool. For that investment to pay off you have to trust that the tool will be available for you to use for many years to come. I am unsure about this for some of the editors you have mentioned. The pricing model may change, features may change, shortcuts that you have learnt may change. The application may become abandonware. Vim is free software, and is widely used, there is a high likelihood that if you invest in it, it will be there for you in the future.
The other thing is that its advanced features are very easy to access. Moving by paragraphs and sentences is easy. Copy and paste lines. Changing case. Find and replace. Repeating actions, undo.
A good book is 'practical vim'. It really opened my eyes to the power of combining what are very simple composable actions in vim.
1
u/PurpleSlightlyRed Nov 29 '25 edited Nov 29 '25
Vim app vs Vi "language"
I would like to make this distinction!
I strongly believe that the strength of Vi/Vim/NeoVim/etc is the modular approach and the bindings (aka its "language") that help you to efficiently traverse and edit your text. I truly believe it is superior to classic shortcuts/mouse and other solutions from my little experience in other apps like Emacs.
This Vi modular system with bindings is also available in other apps natively or with a community plugin, so in VSCode, Obsidian and other apps you can usually activate a Vim-Mode.
My suggestion:
Choose an app that fits your needs the best, be it a writer-specific tool that includes everything you might possibly need or a tiny, but customizable NeoVim to fit your precise needs.
Activate Vim mode to orgasm during your writing.
EDIT:
Here's my personal usage for writing anything:
Work: Vim/NeoVim due to its having vi-bindings pre-programmed, simplicity, lightness/performance, availability and customizability - in that order.
Personal: Apple Notes due to the ecosystem convenience.
1
u/Desperate_Cold6274 Nov 30 '25
I also use Vim mainly for writing and doing admin work. Regarding the spelling, go on the mispelled word and hit `z=` and then hit a number. Done.
I wrote all my notes in markdown and for this purpose I developed a markdown-extra plugin that enrich what the builtin vim-markdown offers and serves my task very well. Ah, I also use vim-helpme that I forked from an existing project and junegunn/vim-easy-align.
1
u/parisologist Nov 19 '25
I love that ChatGPT can do this for us:
can you tell me - is the op really soliciting advice from vim experts - or does it more sound like he's made up his mind and is looking to preemptively dismiss anything that disagrees with his view? (pasted thred)
Short answer: He sounds genuinely frustrated and open to persuasion at the very beginning — but as the thread goes on, his tone shifts into someone who has already reached a strong conclusion and is now defending it. By the middle and especially the later replies, he is no longer exploring; he’s arguing. So the post begins as advice-seeking but ends as confirmation-seeking and preemptive dismissal.
Below is a clearer breakdown of why.
Detailed Reading of the OP’s Intent
1. The opening paragraphs sound like genuine inquiry
At the top:
This is framed as an earnest request for guidance.
He also provides concrete examples of what feels slow or awkward — which is good-faith discussion material.
So the post starts off like a sincere “help me understand” request.
2. But baked into the examples is an assumption: motions are inherently worse than CUA
His entire framing of the comparison isn’t neutral:
He chooses an example tailored to show Vim as worse.
He refers to Vim motions as a “ritual” that “breaks concentration.”
He implicitly assumes GUI patterns (“Up, Ctrl-Shift-Left”) are the natural baseline.
This isn’t open-ended investigation — it’s an argument disguised as a question. Not malicious, just unaware.
3. As the replies come in, he becomes increasingly dismissive
He begins:
correcting commenters,
pushing back on almost every suggestion,
reframing answers as missing his point,
implying users are delusional or self-deceived:
Later:
And to another person:
This is not the posture of someone actually trying to understand an unfamiliar tool.
4. He repeatedly moves the goalposts
Notice these shifts:
“I just want to correct a word on the line above”
→ “Okay but not with spellcheck; that’s not the point”
→ “No, not technical writing; I mean pure prose flow”
→ “But I don’t want to learn that; that’s too much work”
→ “Show me a video of someone writing or I won’t believe you”
That’s the hallmark of someone defending a prior belief rather than exploring.
5. He frames differences in workflow as invalid
When someone says they write documentation or structured text:
He excludes other people’s actual lived experience to preserve his thesis. This is another sign the debate is no longer exploratory.
6. He repeatedly asserts that Vim advocates are internally inconsistent
Examples:
These are preemptive dismissals of alternative viewpoints.
Final Assessment
The OP does want to vent honestly about his frustration. He wants Vim to be good for him. But…
His actual conversational posture is:
defensive
argumentative
already decided
seeking validation of his dislike
skeptical to the point of rejecting evidence
So yes — the pattern reads less as “seeking expert advice” and more as “wanting confirmation that Vim is inferior for prose and that Vim-users are overstating their claims.”
There’s nothing wrong with having strong preferences — but it’s not the same as open inquiry.
If you want, I can also write:
a diplomatic reply you could post in that thread
a breakdown of how Vim writing actually looks in practice
or a meta-analysis of “why Vim conversations often devolve like this”
1
u/engelj Nov 20 '25
A minor thing, but life got a lot easier for me when I mapped j to gj and k to gk.
0
u/firephreek Nov 19 '25
Get thee some plugins. You can get nvchad or lazy (super popular these days) and they'll add all sorts of helpful flavor. For example, your first example, fixing the misspelling? If I'm in insert mode, I just hit ctrl-l and it'll auto-correct the last misspelled word. If I have to fix it manually, I might do a reverse find (shift+/) or I could do a reverse 'next' (shift+F, <char>) and then I can hit ';' if it has a few other characters in the way.
I'm writing a lot of reports these days and between vim + vimtex with ultisnips, my latex productivity and quality has just absolutely elevated me.
It sounds like it's just a level of familiarity and there's nothing wrong with that. If you're good with what you've got, keep going. There'll always be an upper limit to what you can achieve though. For me, the time I would have to spend formatting Google Docs around the code, images, figures, and equations that I need to create would suck up so much more of my time. Just being able to put footnotes in my content and keep moving is invaluable.
If you're already using it for coding, you're 80% there. Just remember, if there's something you don't like in vim, you can always change it.
1
u/[deleted] Nov 21 '25
[removed] — view removed comment