To be blunt, I think this is not good. The claims are dubious on a factual level (you really can get most IDE functionality in Vim, or at least in NeoVim) and it’s framed in such a discouraging, knowing way. I admit I might have found this motivating when I was younger (and that’s probably why it’s framed this way) but ultimately on net I think this is pointlessly intimidating.<p>Unrelated: Helix is a great vim-like editor that has a selection-first editing model that I prefer and requires much less configuration. <a href="https://helix-editor.com/" rel="nofollow">https://helix-editor.com/</a>
One of my favorite things about using vim as my main IDE is, I can run it on a linux server. My work has me moving around the country. I program on a vim instance running on a remote server. I just need to carry a tiny laptop around.<p>I usually get an okay ping(<100ms) and if its unacceptable (overseas travel) I change the vm location. Depending on what I am working on I can increase or decrease resources and since things I program usually end up running on ubuntu servers it feels right at home.<p>edit-
Incase anyone is wondering, I actually started doing this since one of my laptops once got lost while traveling. Airline did find mybag later, but the two weeks without it drove me crazy. Now, if I want I can just show up anywhere get a fresh laptop load up my ssh keys and im all set lol.
This is four years old. It was outdated at the time it was written, and now it is woefully outdated.<p>For example:<p>> From sketchy terminal integration, to being single-threaded, via the lack of anything resembling a proper internal plugin API, nothing in Vim can be leveraged to give you a convincing Integrated Development Environment.<p><a href="https://neovim.io/doc/user/api.html" rel="nofollow">https://neovim.io/doc/user/api.html</a>
I'm a big fan of Vim, but I hardly use it as my primary editor anymore (applies for Neovim as well).<p>I think the ecosystem is amazing, but I hardly have the patience to set things up to feature parity with other editors. Debuggers are the biggest missing/hard to configure feature.<p>I do, however, use Vim bindings in every editor that supports them (and extensions for browsers like Vimium).<p>The extensions/Editor functionality are hit-or-miss; some are missing key bindings that I use often, or features don't quite work correctly, but I find it much more enjoyable to use than the "typical" approach.<p>The VSCode one is pretty good (even has EasyMotion/Sneak out of the box, if that's your style), but often seems to slow down and buffer keystrokes on heavy load/undo seems very hit or miss.
Least we forget, UNIX type systems is an IDE with many small tools. Plus you can batch up mass changes and run in background which you cannot do with an modern IDE.<p>See Unix as IDE (2012)<p><a href="https://news.ycombinator.com/item?id=38789528">https://news.ycombinator.com/item?id=38789528</a>
I made the mistake of using vim before switching to an IDE. I bought in to all the tough guy talk and put tons of effort into learning the arcane key combinations and trying and failing to get plugins to work to make it do basic programming stuff. Utterly pointless - use an IDE - if you are a professional programmer it is the one tool you use all day every day, spend the money for the best one you can that has a team of people working on it full time, paid well to make that IDE awesome.<p>I use vim all the time now for simple text editing when logged in to a machine but I'd never dream of using it for programming. I know how to cut and paste lines in vim and how to save and exit, nothing more needed.
I set up F2 to run the shell command on a line in nvim, and I noticed it improved my shell productivity. I run tests with with cargo test, rspec, pytest etc by writing the command on a line, hitting F2 and all results are just there. I can navigate to errors, search traces or whatnot all the same as I navigate the code. I can search GitHub issues when I'm writing a commit message with gh. This is just a simple productivity hack that I can't replicate in other editors.<p>I'm sure there are better special tools but vim is the most general purpose tool you can learn and use. I never had regrets to invest time on it.
> if you think it's everywhere<p>One of the counterpoint is vim not being available on Windows. But It is.<p>Not by default, but most critical stuff aren't there by default anyway and vim will be one of the easiest block to have ready.<p>Then Windows comes with WSL, where I think most people who even care in passing about vim will spend their time, so we're back to the editor they'd use on Linux anyway.<p>That was to me the main reason I went with Vim when I first touched an nuix system, and to this day that's still a good enough reason to keep using it where a full IDE isn't required.<p>Any system I've seen had a simple enough way to get vim, that hasn't changed.
What is the consensus on productivity with Vim? I have thought about trying out the keyboard only approach, but haven't wanted to invest time in it yet. When I see people on YouTube using Vim it slightly feels like there's a whole lot of keypresses happening, but not a lot is actually gained compared to using a mouse or even frequently it seems it takes a while to do something that is much quicker with the mouse. I understand half the point is to be able to keep your hands focused in one place, but how do people feel about the productivity?
Ironically text editing is the thing I like least about vim. I would switch to an IDE if it provided the level of programmability Vim has. For example, I have a binding which, when used on a netlink command, opens the corresponding implementation in the kernel. How do you do that in something like VSCode? I guess I could write an extension, but in Vim it takes like 2 lines of code that you write once and forget about it.<p>Or another example - you can analyze log files in terminal buffer by folding based on patterns, multi-color highlighting, etc.
Counterpoint (or at least counter-consideration): Sometimes Vim is really, truly, absolutely <i>the very best tool for the job</i> and very much worth your time.<p>I learned Vim because I had to edit code through an ssh tunnel, limited to text only, and nano just wasn't cutting it any more. This is pretty much the exact thing vim was born to do, so it was a pretty clear win to learn Vim, despite the horrifying learning curve. And now I know Vim!
I moved to NeoVim recently and I never missed VSCode. Most of my development happens in remote machine and I found VSCode symbol look up, code navigation painfully slow and sometimes it doesn't autocomplete. When I update my repo, all linting and LSP features stop working in VSCode. In NeoVim, it happened 0 times so far. So, yeah, OP is wrong. VIM(NeoVIM may be) is as good as any other IDE out there.
Regarding using the right tool for the job:<p>> sed, awk, cut, a quick bash one-liner, a simpler editor, an infinitely more powerful IDE, an actual IRC or mail client, an actual presentation program, some online CSV-to-JSON converter, etc.<p>All of these will take time to learn or find. I know basic sed syntax but I'm never 100% sure that my edit does exactly what I want, so I end up running without -i and then with. I don't know awk at all. I use cut but always mess up the field numbers, and if there's multiple spaces involved then forget it. In all of these cases, it's faster for me to open the file in vim, make the change or grab the word I need, then exit. I'm not saying the tools are useless, but vim is flexible and covers a lot of use cases.<p>Half these examples are gui programs. Who is realistically trying to replace a presentation program with vim? These seem like strawmen to pad out the list.<p>Is vim the right tool for every job? No, definitely not. But I think it does well enough that it's okay to lean on it if you already know it.
Related:<p><i>Don't use Vim for the wrong reasons</i> - <a href="https://news.ycombinator.com/item?id=33850674">https://news.ycombinator.com/item?id=33850674</a> - Dec 2022 (14 comments)
<i>sketchy terminal integration</i><p>Vim’s :terminal is better than win10 terminal. And than Konsole too, for that matter. (Maybe I mistaken “integration” for something else.)<p><i>to being single-threaded</i><p>Is this a problem? All language servers run async in different processes. I don’t think vscode is multi-threaded either. Multi-processed sure. Threads are mostly dead.<p>I’m not a vim missionary, don’t use it, don’t learn it, don’t scratch where it doesn’t itch. But these arguments make little sense. The rest varies from okay to low quality bait, tbh.
How many 10+ year veterans of the software industry are actually only limited by their typing speed and need to maximise it with vim?<p>I do kinda get the feeling you get when you can transfer your thoughts to screen as efficiently as possible.<p>But really, if your typing speed is the only thing holding you back when coding, it's a bit suspicious to me.
The real reason to learn vim is so you can login to any linux server and edit.<p>You learn it and if you enjoy it you can go deeper. I use VSCode on my desktop and I’m not about to give up a graphical IDE, but it’s great to be able to ssh into any linux server or container and be able to efficiently edit with just a keyboard when you need to.
I had to start using vim back in the early 2000s, because nano didn't make it easy to search, modify and navigate large config files using regex. It was out of pure necessity.
This is so true. Over 10 years ago I began craving the idea that is vim - and now I am a vim/neovim user, but it was a gradual process. I've used all kinds of stuff, 20 years ago TextMate was the first I used for serious programming, then Sublime Text as I switched to BSD and Linux, then Atom.<p>I tended to par Atom down to the essentials, but just like everyone else got gradually more and more frustrated with the performance and instability, so I began to play with vim and quickly discovered it's not so easy to jump in. I didn't want an IDE, but I did want some modern features like git integration, so my initial vim plugin count was reasonable. What I really struggled with initially was the lack of standard cursor movement, with select/deselect (autoreturn to insert), i.e what basically everything other input field and editor behaves like - even once I was comfortable with the vim way, switching between browser input fields and vim just felt annoying - eventually I configured my way around that so I can have the best of both.<p>Going full vim took some back and forth. Using it on servers out of necessity really helped. One day, when an Atom update broke my configuration yet again, I deleted it and went all in on vim, I'm not sure how long it's been now, probably 6 years - and I'm still learning.<p>So yeah... one does not simply recommend vim, but it is awesome, and weird.<p>My favourite thing about vim... I've had the same config from the start, it has never broken due to an update. I value that so much.
> While some recent advancements may hint at future changes in that direction, Vim currently lacks everything it would need to be considered/used as an IDE.<p>I disagree. Neovim can be considered an IDE with the caveat that you have to configure it as such and use plugins.<p>> From sketchy terminal integration<p>What's so sketchy about it? The terminal integration in both Vim and Neovim are decent, and you can always do Ctrl+z to go back to your "proper" terminal and do whatever.<p>> to being single-threaded<p>Sure, everything isn't multithreaded although you can write asynchronous configurations and plugins.<p>Regardless, Neovim is more than fast enough (and certainly much faster than the comparable IDEs) so I don't see the critique being valid.<p>> via the lack of anything resembling a proper internal plugin API<p>Neovim has a very good API for writing plugins in Lua.<p>> nothing in Vim can be leveraged to give you a convincing Integrated Development Environment.<p>That's just false and ignorant.