From that angle, yeah, it's probably fair for people to look at vim and go "what even is this".
I think the right way to look at vim is "it's a powerful editor that is installed on almost every linux box everywhere that is deeply customizable and extremely flexible".
Seldom a week goes by where I'm not ending some ridiculous shell pipeline incantation with "| vim -" to dump it into vim and then do further investigation there (with regex, find/replace, etc etc support).
So, I consider myself a vim fan, but I don't use it for day-to-day coding but I still consider it an important tool in my toolbox.
I do think there's a crowd, too, for whom customizability for the pure sake of customizing is a big feature. And that's fair too. But I think that really tends toward being for amusement rather than productivity gains. Which is fine! Lots of software is for having fun, and having fun adjacent to being productive and make it easier to be productive. So I'm really not bashing anyone here, promise!
Nowadays, I use both vscode and neovim but mostly neovim as it’s faster for me.
The problems I see are -
- not everyone is comfortable with customizing their editor.
- the meaning of bare-minimum features is different for everyone.
- some of us try hard to learn vim and then give up, declaring it unfit.
- some of us go too far in customizing it and end up thinking that we are overdoing it.
So, some of this hate may be genuine, but generally, people don’t hate vim.
They just hate the way they know/use it. At least I did.
I like vim's code navigation, but I miss the autocompletion features of bigger editors. Can you make vim tab complete like sublime? Last I tried, it was never as "one key to rule them all", but required some additional finger-fu and attention. Also moving selected code around (so I can make engine noises) is a must.
Something about VS Code just feels wrong, but it's pretty much exactly enough of an "IDE" for me. Tho, I strongly dislike the project based file management. Would like to have a solid vim setup instead.
For code-completions coc.nvim offers similar config and plugins as vscode. There is official lsp support for neovim now but coc.nvim works fine.
I think there can be clever specialized vim gurus, but god the ones I work with just struggle so much while idiot me click 3 buttons in an IDE and move on.
We're not paid to be clever, we're paid to make money.
Like I said in the other thread about vscode:
If you assume whatever's been done here's been done wrong it saves the company time and money, we know it's fucked up that's why we called you.
According to that, Microsoft's budget was 20 billion. I bet quite a bit of that goes towards convincing developers to lock into their ecosystem
I'm not trying to force you into anything, certainly not anything closed. I used NEdit until its lack of utf-8 and ancient GUI library started causing trouble. Then I used Slava Pestov's JEdit, which was wonderfully extensible and portable. Now I use vscode, which is just so outrageously well made that even electron and Microsoft can't scare me away from it. All are open source. (Don't know what you mean by EEE threat, googling it doesn't help.)
But modal editing is just a bad idea. We've known since the 70s. One of the most solid things to come out of behavioural psychology was the idea that switching contexts - so that the same thing does something different - has a cost, and isn't a great idea when designing a user interface. Imagine you had a car with stick shift. But you also had a little button on the dashboard, which, if you pressed it, toggled so that the stick shift controlled your car radio instead of your gearbox.
Obviously, that would be a terrible idea. Still, people might get used to it. They might even get so used to it that they would defend it and complain when the feature wasn't there.
All I see that's really different about modal editing is that the stakes are lower when you make mistakes. But it's, bizarrely to me, become a matter of prestige and pride for some to use an antiquated UI design. I'd understand it if you grew up with it, but odds are you didn't. Even the guy who tried to push it on me back in the 90s didn't either. It's like everyone's zipping around in electric cars, and some people still swear by those gear/radio sticks.
That is an unfair comparison on the edge of a strawman. In vim, you see your mode right at the cursor shape (bar in insert, block in normal, selection in visual). It’s like saying that DEs are bad because switching active windows is modal. Why not send input to the first window in the taskbar by holding ctrl and to the second by holding ctrl-shift then? Does that sound absurd? Even when you make a modal mistake once in a while, no stakes are lost because uu.
One thing I agree on is that UI could use more graphics, smoothness and features. But all my attempts to adopt vscode failed miserably. It’s just too mouse-y and too configure-y but still lacks futuristic features I want.
Vimr looks excellent on macOS though, I'll definitely give it a go.
I did say the stakes are much lower. But shouldn't we make less critical interfaces with the same care we make more critical ones?
And yes, many things we still have in UIs are arguably mode switching and bad, it's just we haven't figured out better ways to deal with it. With editing we did, long ago.
I don't understand how you can speak so authoritatively as if I'm accessing a completely different part of my brain when I'm using vim modes when I'm telling you that having to navigate a cursor to click, drag, and select all text is so much more context switching
And also, that ci) command? It's a language. You can do `ci"`, which is (c)hange (i)nside " to instantly change a string without having to hold the backspace button or manipulate a cursor.
Citation please? I mean, from a personal point of view I'm mostly in agreement with you, but your post reads like a straw man argument with a non apology affixed. "Not trying to force you into anything" followed by "modal editing is just a bad idea" just reads like judgmental noise to me – can it can be backed up with actual research?
Meanwhile vim (and variants) exists and are hugely popular and so to me it seems that by definition modal editing can't be that bad an idea, or such multitudes of people simply wouldn't use these tools and they'd die out. Doesn't this kind of invalidate your argument?
I'm a staunch Sublime Text supporter myself, having paid license fees since 2011-2012 sometime. I've dabbled with vim and friends but never really "got it" – yet I don't presume that my inability to see the light means there isn't one to be seen.
Anecdotally, the vim users are the ones "zipping" around their code. I can't remember a single time thinking it was painful watching a vim user when pair-programming. In contrast, it's often quite painful watching someone slowly point and click around their IDE.
My understanding was that the UX studies around modal editing showed it was hard for new users, which isn't quite the same thing as "bad".
Personally I think what really works about vim for me is the composition of action and motion in a sort of language.
It's difficult for me articulate how valuable it is to maintaining flow to almost _never_ feel like I'm switching muscle-memory contexts, where my text editing and screen switching and file-handling and model-training and everything else all feel like I'm in the same app.
I've never come close to achieving this using a graphical IDE, including with vim keybindings.
It obviously requires up-front investment in a way that more newb-friendly GUI tools don't, but I was lucky enough to make that commitment in college, when the initial hit to my productivity was practically costless.
Your comment is by far the most ignorant one I've come across on hackernews.
Take my advise, go ahead and try out vim for a few weeks. Then even if your opinions don't change at least you'll have an ounce of credibility
Same with me. I try and get on the vim hype train. seems like a great idea, but i can never 'get' vim.
Your problem with Vim is that you don't grok vi https://stackoverflow.com/a/1220118/867757
You cannot create a "language for manipulating text" in a modeless editor, at least not a very rich one.
It's a bad analogy because a car's controls are operated while carefully piloting a ton of metal at life ending speeds around 17 assholes on their phones while your editor is operated safely at your desk. Your car also has few enough vital controls that they can all be given a physical manifestation while your editor has a lot of functionality and most provide some way for you to access all of this functionality easily. All options have some downsides and mental overhead.
You can provide a wide array of buttons possibly in sub and sub sub menus see content creation applications. Specifically 3D modeling apps.
Filtering options as you type. Consider application launchers on most platforms where you could type Fir<Enter> to launch Firefox.
Sequences of shortcuts after you have exhausted the standard fare. See Emacs default key bindings for an extreme example.
The thing is that even Holding down Control while you press c is an example of a modal action. The C key either inserts its character or copies selected to a buffer based on whether the control key is held down. This is modal!
The same is to a degree true of sub menus as the functionality presented changes based on which menu is open and which options you have picked previously.
You are to some degree paying the inevitable cost of navigating a large number of functions and the only thing you can do is either forego the power of additional functionality by using simpler tools or figure out how to pay it in the least expensive fashion.
You've elevated your preference to how to pay this tax to a scientific choice and reduced a massive number your fellows to Luddites in an abusive relationship with their editor defending their choice with misplaced pride. I invite you to consider that perhaps 1/4 of your fellows aren't simply idiots and perhaps there are reasons that for them this method of dealing with complexity is effective for them.
Either way, what's distracting context switching for one, is essential functionality that enables effortless work for another.
(Edit: I mostly use VSCode with the Neovim extension myself)
I switched from vscode to vim as I found it to be largely much faster in getting around when I started my new job, some people find the opposite. A ok.
Why do people try to force us into these largely closed solutions? ( Mainly it's vscode, which has a real EEE threat)