Falling between two stalls

I often find myself torn between the approaches of traditional and modal text editors.

I am now convinced that if the Internet didn’t exist, I could not be fully effective with Neovim. Day to day, mundane editing tasks? Sure. But fully proficient? Like off the top of my head write the code to do a project wide find and replace for a string? I need the Internet or my own prior notes for that.

As I age, my capacity to remember esoteric commands seems more limited. For example, for the odd time I want to perform a project wide find and replace, in Neovim, I just can’t remember that I need to type cfdo %s/thingOne\$/thingTwo$/g | update. Perhaps unsurprisingly, it just doesn’t flow forth from my brain. I suspect if I plied my trade in the backend, on a Linux workstation, many of the conventions would seem common sense and ‘bread and butter’, but for me, whilst I have an appreciation for their terseness, without encountering that syntax day to day, it just doesn’t come naturally.

Another example is multiple cursors. Where you would solve a problem with multiple cursors in a GUI editor, in Vim, you record and apply a macro. This involves recording the macro to a specific register, and then select where to apply said macro with the appropriate incantation: :g/pattern/norm! @a. Again, I get it, I just don’t remember it, and it is not easily searchable. I know all about the docs, sweet Jesus do I, but the manner in which they are written just doesn’t seem to resonate with me, and after a sortie into the help of Vim, I often remained baffled.

GUI editors have more obvious visual affordance by default — you can poke at them; search in the menu’s, hover on UI elements, context click for additional menus. Sometimes, I really need and appreciate those crutches.

My long time GUI editor of choice is Sublime Text (I find VSCode feels slow, and prefer to give my money to the ‘little men’). But that can feel lacking too. There is no built in Terminal (you can add one via Package). Granted, when I am in GUI land, I would likely only need it to perform the odd npm related command but it’s another thing.

Then there is working with Git. Sublime has some built-in Git goodness but for anything significant you need the Terminal or another GUI program. The companion app for the task is Sublime Merge; lightning fast and incredibly capable for sure, but another interface to learn and master. In the TUI I am a fan of Lazygit. I love when working in Neovim, it is right there, feeling like a part of the editing experience.

And what of the editing niceties of Vim? Typing ci" to change the value inside the quotes, daw to delete a word. Man I miss those capabilities for sure. At some point, I guess, one cannot have ones cake, and eat it.

For now, at least, the pendulum has swung back to my old faithful Sublime Text.