The Vim features that make me a Vim user instead of a Vi user

November 7, 2023

Over on the Fediverse there was a little Vim versus Vi discussion, and in response to seeing it I posted something:

I used to be a minimal vi user. Over the years I've drifted to being a not so minimal vim user, and I think the vim features that I'm now addicted to are:

  • infinite undo and redo (and a tree view of undo)
  • unlimited backspacing in insert mode (true vi only lets you backspace so far)
  • vim windows, which let me have multiple files on screen at once (this used to be vi's big limit versus emacs)
  • recently, visual mode, both line and character.

(I use other vim things but these matter to me.)

(For example, vim settings for YAML and incrementing and decrementing numbers.)

Back in 2020 I wrote about realizing that I was now a Vim user, citing Vim's powerful undo and Vim windows; the other things I mentioned are new in my awareness since then. Unlimited backspacing in insert mode is one of those Vim features that are so instinctively right that I didn't realize (or remember) that classical Vi is rather more restricted that way, much like unlimited undo.

(OpenBSD vi only lets you backspace in insert mode within the current insertion, and my vague memory is that classical Vi may not have let you back up to previous lines even within a single insertion.)

Vim's visual mode is more specialized and limited, but for the kind of editing that I do it's turned out to be quite convenient, enough so that I use it regularly and would miss it if I had to do without it.

OpenBSD's vi is probably the closest I come today to a pure old fashioned Vi experience. I can definitely edit files in it without problems (I do every so often), and I often don't notice any difference from Vim if I'm editing a single file for straightforward changes (where I only need to undo simple mistakes immediately), which is the typical case for what I do on our OpenBSD machines. However, if I only had Vi and not Vim I probably wouldn't use vi(m) as much as I do today; I'd be much more likely to reach for other editors for multi-level undo and split screen editing of multiple files (with the ability to move text from one file to the other).

(I'd probably still use vi a lot, because the forces pushing me to it are fairly strong and I was using 'vim as vi' well before I started using 'vim as vim'.)

PS: I know that there are people who like the appeal of the simple (and BSD-pure) original Vi, but I'm not a Unix purist these days. I'm lazy; unlimited (and sophisticated) undo, backspacing as much as I want, multiple windows, and so on are all quite convenient (with very little effort on my part, and they work in all the many environments I use vim in). I use Vim instead of Vi for much the same reason that I now have file and command completion in my shell.

(I might feel differently about this if I'd been a heavy Vi user and was very used to its specific quirks, but I only started seriously using vi(m) in the Vim era.)

Written on 07 November 2023.
« What client host keys OpenSSH ssh uses for host based authentication
Holding packages in Debian (and Ubuntu) has gotten easier over the years »

Page tools: View Source, Add Comment.
Search:
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Tue Nov 7 23:19:23 2023
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.