Settings

Theme

The Loneliness of the Mid-Level Vimmer

johnwhiles.com

39 points by jwhiles 2 years ago · 60 comments

Reader

sodapopcan 2 years ago

I did 100% pair programming with a team that didn't standardize on editors or keyboards. We solved the issue in the article by just never using each other's machines. It was very rare that the navigator would want to type something but if they did, it was usually just a line or so, so we would "strong" pair, ie, tell the other person exactly what to type. If we wanted to switch the driver/navigator role, we would just make a WIP commit, force-push, then pull and `git reset head^`. It was only ever two people working on a branch at a time, so the force pushes weren't scary. We did this without issue for three years.

  • PartiallyTyped 2 years ago

    Unfortunately my employer doesn't allow force-pushing :(

    Instead we resort to using jetbrains stuff.

    • diarrhea 2 years ago

      Same at my place. I think it’s for compliance reasons, but it feels patronising. A bit like taking away the sharp tools so us dummies cannot hurt ourselves. Next, maybe No-Code GUI programming because a real language is too scary too?

      • sodapopcan 2 years ago

        I understand not allowing force-pushing on main, but pretty weird for branches you own and no one else uses.

      • kartoshechka 2 years ago

        golang almost accomplished to be non scary language, but the users have been fighting back

clircle 2 years ago

I think vim users highly overestimate their productivity and just like the way using hotkeys feels.

  • yoyohello13 2 years ago

    I would classify myself as a vim power user and I agree with this take.

    I think I'm probably equally as productive as a person that really knows their editor of choice. The productivity benefits mostly just come from knowing what things your editor is capable of.

    However, I subjectively feel a twinge of frustration whenever I need to take my hands off the keyboard to reach for a mouse. So using vim makes a massive impact on my day to day wellbeing.

    • sodapopcan 2 years ago

      Ya, any carpal tunnel-type problems I was experiencing went away when I became proficient at Vim. I've never thought much about the productivity gains... I'm generally slow anyway, ha. But not having to move my hands away from the homerow much or reach for the mouse ever is important, and beneficial, to me.

  • dasil003 2 years ago

    As a long-time vim user I admit this is probably true compared to modern IDEs/editors in the majority of developer workflows today. On the other hand though, if I'm logging into random servers and manipulating any kind of text, especially over a low-bandwidth, high latency connection, I'll make a VSCode user look like a kindergartner who hasn't learn to hold a pencil yet.

  • soperj 2 years ago

    When I'm repeating something in a non-vim environment, it feels incredibly tedious to actually have to do the steps repeatedly instead of just pressing .

    I don't care about the productivity, I do care about not doing tedious things.

  • elliotec 2 years ago

    It'd be interesting to do a comparison. But to your point, I don't think people use it as much for productivity gains as just the fun of it.

    • Jensson 2 years ago

      I've worked with many productive people and the speed they write code at never was a big factor. The first thing you should optimize for is the speed you read code at, that makes a big difference, so look for tools or IDE's that helps you explore and read code faster. Debuggers, jump to reference, lookup usages of symbols and so on are all very important things to have.

    • sneak 2 years ago

      The time spent doing input is a tiny fraction of time spent coding, yes. However, it is all wasted time, and reducing it leaves more time free for thinking.

      There are many syntax-aware vim verbs (ci[ or ci” for example) that save a lot of time and let me get back faster to thinking about the what and not the how. Too much time on the how and my ADD kicks in, sure as someone walking into my office and trying to talk to me.

    • rochak 2 years ago

      Can confirm. I prefer using Vim because it makes writing stuff fun. Never thought I could ever write for fun.

  • mkehrt 2 years ago

    As someone who is a midelevel vimmer and has been using it for 20 years, that's probably true. But the muscle memory is there, and it's standard everywhere. I do get a lot of leverage out of macros and text objects, features which I'm sure have equivalents in IDEs and other editors, but I know how to use them in vim.

    • qwertyfoobar 2 years ago

      I don't think there are IDEs which are as scriptable as (neo)vim or emacs. Am I wrong?

      • mkehrt 2 years ago

        Oh, I have no idea. I assume that they must have some features, but I really only use vim and vscode with vim bindings turned on.

  • smabie 2 years ago

    This is a realization I had after finally ditching Emacs / keyboard only life.

    Keybindings seem to engage your brain in a different way and make the activity more fun, but I don't think it's actually any more productive.

    • Miner49er 2 years ago

      Except in most cases I would say having more fun results in more productivity.

  • huijzer 2 years ago

    Hotkeys with VS code can me made mostly the same right especially with Vim mode? I like the flexibility most. Little time when switching between projects or languages because it’s always Zellij, one or more nvims and a shell and ripgrep. It just feels the most comfortable at this point and it’s nice that it’s small and flexible instead of one big IDE. But yes probably people in other IDE‘s can be just as fast.

  • ip26 2 years ago

    Crazy hotkey sequences, yes. Basic sequences like ci"foobar or /foo<enter>dwn... are a pretty great user experience - although it's true that your editing speed rarely determines the success or failure of the company.

  • Cthulhu_ 2 years ago

    I suspect this is the case, but have no hard evidence. I can see how being proficient at vim makes it feel gamified though - a clever series of commands resulting in a code change giving people that hit of dopamine.

  • zingababba 2 years ago

    I just hate touching my mouse if I can avoid it. NeoVim + vimium in the browser weee.

  • camgunz 2 years ago

    This probably applies to all tech workers.

tkzed49 2 years ago

Why can't you use vim and VSCode? I use the neovim extension for VSCode[1] and it works great! That gets me real vim input and the VSCode extension ecosystem.

1: https://github.com/vscode-neovim/vscode-neovim

jrm4 2 years ago

Ha, I'm like this but moreso because I don't strongly professionally program. (I teach IT in a presently not super-technical program, and get a pretty good bit of freedom and variance in what I do.)

I feel the same way about vim that I do learning cursive; I honestly wish I could erase it from my brain because -- and it took a long time for me to figure this out -- it, for me, brings NO advantages.

Now, what would be nice is something as extensible and potentially light as vim but, first and foremost, played nice with other "regular people" programs and keybindings. Maybe it's out there, but I haven't found it yet.

  • blt 2 years ago

    Why do you want to erase cursive from your brain? Or am I misunderstanding the analogy?

    • jrm4 2 years ago

      Lol, I do. I didn't much explain it, but it didn't really do anything besides make my writing harder to read :)

zknill 2 years ago

> excepting those poor, sad professionals who have to write languages that can only be written with a special, hyper-bloated text editor [1].

> 1. I'm talking about C# and Java

I write Java in vim, and it's pretty usable. Coc.nvim and coc-java fix code completion. There are also plugins to make running tests, and the debugger usable too. I can't stand the start-up time of IntelliJ!

  • pfesenmeier 2 years ago

    C# support in neovim is pretty solid, too. Omnisharp, Roslynator, Neotest, nvim-dap. Not much I feel I’m missing

  • mettamage 2 years ago

    I'm happy you mentioned that! I didn't know one could use Java in vim. If I'm using Java again this is the way I'm gonna go. I'm not a great vimmer, but I survive.

    Wanna be survivable in vim? I know of _the course_ that teaches you enough vim to be survivable in just a few hours! You think I'm selling snake oil? Nay!

    On Mac/Linux type: vimtutor

    Do all the lessons

    Then a month later do all of them again

    A few months later do them again

    You're now survivable in vim and it only took you a few hours ;-)

Barrin92 2 years ago

>But there is a downside to Vimming. It's a weird fringe interest, even amongst software developers who are already a weird fringe group

Is that even true though? The VsCode Vim extension has over 6 million users, pretty much every editor ships with a vim mode and if I had to guess most developers are at least cursory familiar with vi editing motions. The latest Stackoverlfow survey put vim at a respectable fith place[1] with 22% of devs using it.

I've never felt vim is some sort of fringe stumbling block, and that's coming from someone using Emacs day to day. (where a good chunk of people use evil mode)

[1]https://survey.stackoverflow.co/2023/#section-most-popular-t...

progre 2 years ago

Nice swipe at C# (and Java). It's not true anymore for .Net Core though (that you need the bloated editor). All of the tooling is command line now

  • jwhilesOP 2 years ago

    The only time I had to work with C# it was a non .Net Core project, and I had to run the editor in a virtual windows machine running on a Macbook. It was a vaguely traumatic experience.

siegecraft 2 years ago

Almost every so-called bloated editor has a vim plugin (I guess that's an upside of their bloat): vscode, intellij and friends, even vimium for the browser. And although I wouldn't argue that vim (or, to be precise a subset of vim functionality in editor plugins) makes me more productive I would argue that vimium does.

mmh0000 2 years ago

I was a long, long-time Vim user from ~2005 to ~2020; I loved and still love Vim. But, man, it's a time-sink. Sure, I can edit fast, but I first need to spend an hour fixing some random thing that annoys me in my vimrc.

After pairing with many co-workers using vscode, I saw the light and had to switch. Then I discovered vscodevim[1], and now I have the best of both worlds! The ease-of-use and "it just works" of vscode, and the power of Vim when I need it.

[1] https://marketplace.visualstudio.com/items?itemName=vscodevi...

EDIT: Years of "fixes" I've had to figure out and add: https://doc.xn0.org/.vimrc

  • sodapopcan 2 years ago

    > but I first need to spend an hour fixing some random thing that annoys me in my vimrc.

    That's a not universal problem, of course. I barely touch my vimrc anymore. I've paired with vscoders a bunch and never saw any light ;)

submain 2 years ago

I used VSCode for a good 5 years. Before that, it was intellij (and long before that, eclipse).

I have switched to neovim and have been using it for the last 5 years. I haven't had a desire to move back.

There's something about using the keyboard to seamlessly transition between tabs, buffers, terminals, and control window positions and sizes that makes me enter into a flow state a lot easier than other editors.

The only thing I truly miss about VSCode is how easy it is to set things up. In neovim it can be a PITA.

MarkusWandel 2 years ago

I developed the finger memory for vi when I first encountered it - in 1987! - on a Unix system on which there weren't any other fullscreen editors.

Like with the Perl programming language, I probably understand about 5% of the capabilities of a modern vi implementation. But those are hardcoded into muscle memory for the rest of my life. ddp to swap a couple of lines or :e! to undo your edits and reload is fast when you don't have to think about it, and ditto is moving around with just alphanumeric keys - not having to move the hands to a an arrow pad. Probably vi appeals less to non-touch-typists.

But am I insufferable about it? Nope. I just like it this way. Just fine to drop into an editor of choice if someone else needs to collaborate. And I'm aware that my younger, more mentally elastic colleagues have all developed wizardly knowledge of Visual Studio Code... hmmm, maybe it has vi bindings...

  • MarkusWandel 2 years ago

    So basically, learning vi was about the same as only having a stickshift car available and wanting to drive it. You learn what you need to learn. And once you get the muscle memory, you actually prefer it even though it's weird and kind of obsolete. I've had to give up on the stickshift, but I'm guessing vi will remain available indefinitely. What incentive for someone to learn vi now? Very little. So it goes.

    • acuozzo 2 years ago

      > What incentive for someone to learn vi now? Very little.

      I've seen programmers on multiple occasions spend 30+ minutes writing a script to do what could otherwise be accomplished in less than thirty seconds with vi(m).

      I often see HN users dismiss vi's approach to editing as if it were some kind of micro-optimization, but consider what impact writing the aforementioned script has on flow. It's worse than the resident office WaterCoolerGuy chewing your ear off for 30 minutes, IMO.

      • MarkusWandel 2 years ago

        Well part of the "5% of a typical modern vi clone" capabilities is applying a regex over a range of lines, and judicious use of the "." command. Yes, that often replaces writing a script. But probably still not worth learning the editor for.

arandomhuman 2 years ago

Similar to the author, Telescope really got me to stop using the file tree and really begin to prefer neovim over vscode (well that and the amazing language server support).

  • roblh 2 years ago

    Telescope is great. I’ve been trying to move to full neovim (astrovim to start with) for while since I’ve been using vscode-nvim, but the part I’ve had the hardest time with is tab/buffer/window management. I never really know what’s going to happen when closing tabs or panes. Sometimes it’ll close but leave a weird empty tab in place, and I never know what closing something is going to do to the layout of panes. Also, all the actual little tabs at the top stay left aligned rather than attaching to the pane that they’re a part of and it’s always confusing. Maybe I’m doing it wrong, but it’s far better in vscode for now.

fietske 2 years ago

I use Vim, not neoVim. Combined with Tmux it's great. Any strong arguments in favor of neoVim?

tmaly 2 years ago

I used Vim since 1996, and I still use it.

But I also use PyCharm and VS Code now too.

subjectsigma 2 years ago

Long time on and off vim user. Stopped reading after the first obnoxious paragraph. Maybe mid-level vim users are lonely because they’re such jerks.

  • JoelMcCracken 2 years ago

    Yeah, you really don't _have_ to be insufferable. I use emacs and evil/vim mode, have done for years, and it's not like I bring it up all the time or whatever, or shame people for using vscode.

    It is just a tradeoff, like anything else. Using a niche tool means that those not in the niche are alienated, but those in the niche are drawn to you/familiar.

    Any time someone brings it up, I basically say "yeah, I use this tool, but it really is just a tool that I personally choose, and can see how someone would pick another one. Not everyone wants to fuss with their environment all the time to get their job done." etc. I both genuinely believe this and think its a disarming POV.

    Really, at this point in my career, I have a massive quantity of legacy knowledge that informs my choices. Since I know emacs lisp, and have already expended the effort to learn and use it, it continues to be worth my while to work in this environment. For someone who doesn't have this legacy knowledge, their value calculations won't work out in the same way.

    • jack_pp 2 years ago

      I suggest people learn the basic movements and use whatever editor they want with the vim extension. To me that's best of both worlds and what I personally use

  • zogrodea 2 years ago

    Funnily enough, the author says that "all the people who do use Vim are completely insufferable" in the third paragraph. Maybe the author was trying to demonstrate that.

  • buddhistdude 2 years ago

    Sounded like sarcasm to me.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection