Why I wouldn’t recommend vim (or emacs) to developers

I promised I would get back on the issue of vim and why I wouldn’t recommend it to anyone, and why (horror, shock, awe!) I find it kind of retrograde. That, importantly, doesn’t mean that everyone is not free to use it, and, to the contrary, people should use it when they are bound to console mode for some reason or another. However… 

In the previous article I made a harsh statement: there is absolutely no reason to learn vim in this day and age. In the small melee that followed, my commentators fought to show me the opposite, and I had two amazing examples that I will embed below. First one with emacs (that has been sided with vim in my rebuttal):

In this example we have emacs orgtbl mode, that will help you arrange a table in the comment part of an HTML file, even precalculate things, in a spreadsheet manner, and then generate the HTML table out of it. However, this is probably not in the common offering of the emacs editor, so it’s “pour les conoisseurs”. That is not its biggest fault though: the main problem here is conceptual: who needs to edit tables in HTML files? Who edits HTML files by hand in this day and age? We’re in the age of generated content and CSS: I find it hard to generate with said tool two types of tables in the same file, and I find it useless to generate tables in HTML files. For a developer this is a breaking point, not a selling point. For anyone else it is proof of loving the 1998-looking web. I am sure it’s useful, but we have more sophisticated tools at hand.

The second one displays the power of vim itself, the named ‘evil’. Even if it does pretty much the same thing as above, generating HTML content, it does so in a less intelligent, more appropriate manner:

I call this a more appropriate manner, and I will explain a bit later, however, note one thing: this is about learning a macro and applying it to a set of data. This is not a feature unseen in other editors, however, it has one detail extra: it knows when to stop. Whenever I record such macros in my usual editors I apply them a number of times manually because the editor is not smart enough to understand when the data ends, or where it should end.

This example has all the faults of the previous example, minus ‘it needs to install something amazing that you might not know about’, which makes vim more of an editor than an IDE.

These examples exhibit exactly what the problem with emacs/vi is. The problem is that there are features that you need to know about, and both emacs and vi require you to learn a plethora of shortcuts without any visible cues.

And I come back to the issue of vim being the same as gvim: it’s not. While gvim embeds vim quite nicely, I am still unable to get it on my cygwin distribution. And while Mihai argued that ‘cygwin is fake Linux’, I need to assure everyone that there is absolutely not a single reason why gvim would not run on Windows. Luckily, outside of cygwin gvim has an installation package that will make things work. You know what, surprisingly, works in gvim for Windows?

CTRL-C, CTRL-V. Selection using SHIFT and direction keys. Basic editing functionality, that is.

This is, of course, inconsistent across versions of vim, but it’s an amazing addition. Even the creators of gvim understand the fact that it’s a must to support basic editing functionality, as understood by most people. However, vim lacks on pure Windows the support of the GNU platform. And vim is useless without it.

The UNIX philosophy is to build tons of specialized tools. There is a high degree of flexibility that this philosophy brings, the downside being that you have to know a lot of tools. Sure, there are a lot of smart editing cues in vim itself, but most vim tricks will display some intelligent import from curl, completion done via ctags and other things like that. And some people will need that and some don’t. Most modern developers don’t, because they use an IDE, and I’ll explain some features of an IDE.

But there is always the amount of intelligence an editor can hold. Most editors of an IDE are seen as ‘dumb’ when compared to emacs/vi, because they do little more than editing and completion. vi and emacs are smart. And that’s the problem. The problem is that you have to learn a lot to grow to the level of intelligence your editor has. Vi is a savant, it does amazing things but it’s disconnected from reality.

And the reality is that vi is amazing when you have to type a lot, and generate tons of code. You know what sort of programmers generate tons of code? Mediocre programmers. The goal in modern programming is to generate less code that does smarter things. Efficient developers write 10, 20, 100 lines a day in busy days. And here I come to the place where vi doesn’t stand a chance in the face of an IDE.

While vi and gdb can work together, it’s not as glamorous as Mihai makes it. It just runs gdb in a separate sub-window. It highlights the current line. There is no watch window. There are no key bidings, you have to write stuff by hand in gdb. Here’s a session:

The problem is that most of the stuff that vi ‘can do’, they ‘can be done’. They are not necessarily practical, but they can be done, therefore they are there, the fans say. But the overhead is in fact so big that it’s impractical to anyone but the expert.

My question: Is the time invested in vim worth it? My answer: no, unless you are bound to a console in a way or another. Sure, for Linux server professionals (admins) it makes sense. Even for occasional server admins it makes sense. Does it make sense for the modern developer? Not unless you don’t have a proper IDE. And C++, C# and Java have amazing IDEs that offer a lot of features, including refactoring support, well integrated debuggers, editors well tuned to the needs of your applications (in place graphics editing, or visual editors for UIs, for example). And you also have the space of your editor properly balanced between the needs of the current state: when editing, you can see the project layout, you can also have a find-window without sacrificing too much of your editing space. When debugging, a watch window, more space for code, even split window for following code. And the IDEs keep improving. Integrated git? Even Visual Studio has that, available at right-click on the solution name. The amount of stress on my memory? 0.

While vim glorifies typing, because that’s the only thing that it can do, the rest of editors go beyond 1960 in computing and use a mouse. Certainly, some things are done faster in vi, while a lot of other things are done faster in IDEs. And I cannot find a single reason to use vi over other editor in post Y2K world.

Because in the previous mail I was subjected to vymching (lynching for saying bad things about vi, something that emacs users are accustomed to as well), I will now address the concerns of my unfairness towards vi and to state again that gvim and vim ARE NOT THE SAME SOFTWARE™. They might use similar mechanics, but as gvim for Windows shows it, no, it’s not the same. However, there were other valid concerns that I wanted to address and clarify.

First cmatei’s comment:

So, you want noobs to become experts doing expert stuff, or not ?

If they want to become server administration experts, certainly not. Let them take over the world with vi, since it’s one of the tools of trade. If not, I’d have them off my server. Make them build delivery packages, and shell scripts that will automatically fix the configuration files. Better yet, have the configurations versioned in a git repository, and they can edit with whatever they wish.

Mihai’s concern, aka my bullshit:

there’s no more VT100, everything is emulated.

But vim is thought with the limitations of VTXXX in mind. That’s what the ‘text’ in text-mode means. Sure, it’s not driven by the limitations of VTXXX in mind, and it uses graphical mode fully. To display text using monospaced fonts.

There’s no hint in this for newbies being forced to use vim/emacs and terminal

People make such harsh recommendations to beginners. That was my complaint.

«There is no real reason to resort to this sort of painful penitence,» — way to generic to be considered as being only related to newbies

Yes, it refers to everyone. Just because you get to enjoy it, eventually, doesn’t make it less painful. And yes, later I call it ‘crap’, because it is crap. Ask any person having a first contact with vi. Sure, it is smart crap, and it can be used amazingly.

vi

Notice the cursor? Up there? It’s not where you’ll start typing, actually. You’ll start typing in the lowest row, not in the highest row, if you follow the instructions to quit. This is just an example of how counter-intuitive vim is.

Why is vim a piece of crap? While it does the job, it does it like it hates you. The only piece of help you get is that opening text.

If you start editing, and press F1 you get a helpful screen. That doesn’t tell you the basic idiom of vi, which is to press ESC before typing commands like :q!<Enter>

vi-help

At this point, the user is overwhelmed. hjkl??? Are you kidding me??? Are you really using hjkl to move around? And I should know that… why?

Most unguided vi users I know quit here.

I understand them.

Vi is a piece of crap because the amount of things you have to learn to use it proficiently have not valid use outside it. While other editors try to find a common ground, that’s not the case with vi. It doesn’t need to, when bound to a console. But that is a cruel limitation for most developers out there.

Proceeding with Mihai’s comments:

«There is absolutely no reason to learn vim in this day and age.» — waaaay too generic

No, it’s a very specific affirmation. Other than the limitation of the console, there’s no reason to learn vim. And that limitation is often self-imposed; you don’t need an XServer to run X applications on a remote display, you need only X libraries installed. There is no security risk. However, remarkably, vim became an amazing tool for administrators. I salute them with all due respect, but developers don’t really need it unless they really really want to.

«you don’t need to fight with the black lacing of the scary terminal. In fact, if your work would ever require starting a terminal, the distributions already failed; » — How is that applicable to newbies in programming? When even QtCreator opens consoles?

You can, you are not forced to.

The rest of his comments were towards my mean parallel that vim is worse than Notepad. In some sense, it is. Especially when it comes to those people that quit when seeing the help screen. Of course I was augmenting the suckiness of vim by putting it side by side with Notepad, an editor it will never beat at intuitivity.

Not to beat vim too much, I do recommended where a lot of typing is involved. Not a book, editing text is crappy with vim, and it doesn’t really help there, but when you edit config files, HTML files, etc. it’s a fast alternative to any other editor. It is a nice tool, a cool gimmick, and it can do a ton of things.

Too bad its fans are such a lynching bunch. We could hear less spite, and more interesting things about it.

But the dialogue is driven by spite. I write a spiteful article towards vim and I’m answered with spite, mostly because there are no arguments. I loved cmatei’s mature intervention because it showed real cases of stuff done faster and better. Yet I don’t think it’s a reason to recommend the editor to beginners for that alone, this kind of arguments need to be brought up, not attacking flame with flame.

This article is inflammatory, I know. I will do something special for this article. From each commenter I will censor ALL comments beyond the first one, and I will answer to each such comment, without the possibility to be answered back. I do this to stop any flame from burning, because it’s my blog, and because I want the answers and possible questions to be well thought through. This is my opinion on the matter, I put a few days of reflection behind it and I am more than happy to explain why I said things I said.

And I am more than happy to note any feature that vim has and no other editor has. Other than console mode.

And please, pay attention. I said vim is crap, but said nothing on the developers or other professionals that use it. I never insult someone’s way to work, especially if that way is efficient for them. And vim can be very efficient once you know it.

Ladies and gentlemen, you have one comment. Thank you for your patronage.


97 Replies to “Why I wouldn’t recommend vim (or emacs) to developers”

  1. Jagjit Chanda

    Helo!!

    I try to installed and used Vim and worked for me!! Sadly background its too black which I do not like. How to change, do you know? Otherwise liked very much.

  2. Tucker

    “Why should I try to write a configuration file that makes vim feel like a normal editor just because vim cannot come out of the box like a decent editor?”
    I think this is where we disagree. A lot of people, myself included, struggle with ‘normal’ editors for a long time and wonder why there isn’t anything better. These people think ‘normal’ editors are clunky, hard to use, and not decent in the slightest. These are the people vim is made for, and these are the people who become vim users. If you’re writing a configuration file to make vim act like one of those other editors, you clearly aren’t the kind of person vim is for, and you clearly shouldn’t be using vim. You should be using one of the other editors.

    “what did you want to achieve with trying to convince me that vim is any good?”
    I wanted to get you to recognize that just because vim isn’t the right editor for you, that doesn’t mean it’s a bad choice for other people. And you say that you understand that, and you clearly don’t, because you continue to follow it up with ‘vim is a piece of crap’, ‘vim is a joke’, ‘vim isn’t any good’, ‘there’s absolutely no reason for anyone to ever use vim’, etc.

    You’re asking me why I’m spending my time trying to explain to you that vim can be a powerful tool for those willing to understand it? Then I get to ask you why you’re spending your time trying to tell me that it’s a piece of crap that’s about as useful as notepad or edlin. You feel ‘lynched’ by me because I have a problem with your unreasonable criticism? How do you think I feel when you unreasonably criticize something that I love to use every day? How is your behavior any different than those assholes who run around going ‘Windows is a stupid worthless piece of shit, nobody should use Windows, you’re an idiot for using Windows, Micro$oft steals your money, Bill Gates is Satan, lololol.’ I mean, I don’t like Windows much, but I do recognize that there are plenty of valid reasons for using it, and I also recognize that it’s a lot of people’s choice, and I respect them for making that choice because it’s their choice to make.

    I would never go up to someone and say, ‘you use Windows? Windows is terrible.’ But if I ever did, and if it was a reasonable person, I know they would say something like, ‘Well Windows works pretty well for me, and I like it. what exactly do you think is wrong with it?’ If, at that point, I felt as if they were lynching me, and I spent a lot of time yelling about how horrible windows users are for actually defending their choice of operating system, then wouldn’t that make me the irrational one? So how are your actions any different in this situation?

    “Explain me the logic of “autocmd BufRead,BufNewFile * startinsert”.”
    This is one thing I agree with. I mean, the logic is clear, but it could be much more clear. As I’ve said before, this is one of the biggest issues I have with vim: vimscript is a terrible programming language. I wish they used something better. I hope Neovim uses something better …

  3. Jagjit Chanda

    Thank you!! Vim is best text editor I try. Very simple its perfect for to write blog post, no distraction.

  4. Liberty

    I freed myself of the shackles of emacs last week, and I’ve seen a boost in programming productivity. The turning point for me was after I had wasted almost two days trying to get a code browser to work again on an upgraded version of my OS. Only to find out that after I had gotten it to work, it still didn’t work quite the way I wanted (the common sense way in my opinion) and it looked like crap. That was the straw that broke the camel’s back and I simply went back to an editor that I’d used occasionally before. Geany. And guess what I discovered? It does everything that I was asking of emacs and more. The only features that are lacking, but not really missed that much, is adding custom snippets (which is possible in geany but less intuitive), and using the menus for snippet selection. On the other hand the things that do work, work better than in emacs and I have to spend ZERO time configuring the hell out of it and trying to make all the dependencies work only to have everything broken by the next update of another link in the endless chain of dependencies. Or dealing with conflicting packages, etc. Geany just WORKS. Only by leaving emacs I discovered how much of a productivity drag it was, either by not having things work right or by making you waste hours of your time trying to make them work right. I feel truly liberated. Up until that point I had told myself that the learning curve may be steep, but it’s all worth it in the end. I don’t believe that any more after more than a year of intense usage. I mean, think about what you really gain and how much time you waste on getting there. I’d seen the videos about artist mode and HTML tables etc. I never considered these of any use to me. I used org mode for a while, but soon discovered that emacs was utterly the wrong tool for this kind of task. My sense is emacs is for enthusiasts who want to use nothing else. I love linux. Emacs is an editor. I don’t love emacs. But for Stallman, the GNU OS guy, and emacs enthusiasts they use it almost like an operating system, where they never have to leave it. That’s fine for them, but that won’t work for me. For me linux is the winner and that’s where I work with the appropriate tools for different jobs. Emacs is an appropriate tool for remote shell editing. That’s it as far as I’m concerned. Open it, do a quick edit, say bye bye. I have less experience with vim, but my atttitude is pretty much the same. Initially I considered giving vim a try, but dismissed that quickly. I can use vim for quick tasks, that’s enough. I’ll never use it as an IDE like editor. There’s just no need to go through that pain. Never again.

  5. Tucker

    @Liberty

    I used to use geany, it’s pretty excellent. I used it for years, but after a while I got to the point where I just felt like I wasn’t being productive enough. That’s why I switched to vim, and I have to say it was one of the best decisions I’ve ever made. My productivity skyrocketed. Recently, I gave emacs a try … I couldn’t do it. You’re right, there’s way too much configuration to make it work how you want. That’s the emacs thing: it’s not an editor, it’s a lisp platform that has an editor plugin. If you have enough time and patience, you can make emacs do anything you want. Which is great, I totally respect it, but it’s not for me.

    See, the reason emacs requires so much maintenance is because that’s what emacs is about: configuration, extension, basically customization. That’s emacs’ thing. Vim is a little different. It supports the configuration and the customization, and that comes in handy, but it isn’t the focus of the project, it isn’t vim’s thing. Vim’s thing, actually, is productivity. You don’t get vim, customize the hell out of it to make it do things the way you want, and then use it. You get vim, learn how it does things, and change the way you do things to match because it’s so much more productive that way. Then, if one day you realize that you’re missing a feature or if there’s something getting in the way of your productivity, you add an extension or a line to your config, and you’re done.

    Basically what I’m saying is, emacs is for people who don’t feel comfortable unless their editor works exactly the way they expect it, to the point where they don’t mind the huge config timesink (even then, I couldn’t get things to work exactly right in emacs when I tried). Vim, on the other hand, is for people who want to be extremely productive. The major timesink in vim is not configuration, but just learning how to use it. Once you get proficient at it, though, you get that time back, and then you save a lot more. Of course, if you’re not willing to do that either, then by all means, geany is a wonderful alternative.

  6. Liberty

    Tucker. you know what’s also a great boon? Tabs. Yep, such a simple tool but so indispensable in organizing your windows for greater productivity. Not just the document windows, but the shell, code browsing windows, directory views and so on. Emacs doesn’t have tabs and as far as I know vim doesn’t have them either. I can imagine emacs trying to integrate some form of tabs into their editor and what that would look like. Probably not something I would want to use. And like I said I don’t see a reason to switch away from geany for the time being. You didn’t mention what productivity problems you had with geany, but for my workflow I don’t see those on the horizon yet. Another thing about emacs that I kinda found annoying all the time but sort of just put up with is the scrolling. Simply moving the cursor to the bottom or top of the window suddenly makes the whole screen jump. You can’t choose exactly the section of the code that you want to view. You have to be liberated to realize the real weight of the shackles you were wearing. At least vim doesn’t have that sort of behavior. But anyway, I appreciate your enthusiasm for vim, but like I said, I won’t use it for programming. I feel blessed just thinking about code and problem solving and not worrying about the editor at all. And that includes not having to consider vim. I understand that you say vim has no configuration problems and all but I reserve my skepticism. The thing is this. If I open a python file in vim I don’t get something that I can work with for programming by a long shot. So I will have to configure it and I’m not going down that path again.

  7. Tucker

    @Liberty

    I assumed emacs had tabs, but maybe not … I know vim does though, I use tabs all the time in my vim. They’re amazingly helpful for organizing my windows and views and things. Granted, tabs in vim are a little different than tabs in geany and other editors. In geany, each tab is just a viewport for one buffer, but in vim you can split a tab up into subwindows and open different buffers in it and things like that. I never liked using tabs in geany, because if there are too many of them, they don’t fit on the screen, and I can’t see all my files. I always used the document list sidebar to switch between documents, it’s much nicer I think. Anyway, in vim, there’s actually an even better way to do this. It’s a plugin called ctrlp, and it’s basically just Sublime’s Goto Anything. You hit ctrl+p, and it pops up a footer with all the files you have open, and you can arrow to one and open it, or you can type part of the filename and it’ll narrow the list for you. You can use it to open files from the disk too, and to jump to particular symbols as well. No need to scroll around looking for the file you want. Much more productive than geany’s tabs,

    My productivity problems with geany are the same as my productivity problems with every other editor that isn’t vim: all editing is slow and clunky. Of course, I didn’t realize that I was having these problems at first, since I hadn’t known anything different, but once I watched a few people use vim and once I learned a bit more about what it can do, I started to notice all the little unproductive things I was being forced to do all the time, and I started to get annoyed by them. I’ll try to give some examples of what I mean. Say you want to find a particular occurrence of a word in your document. In geany, you have to stretch your little finger to ctrl, hit f, and redirect your attention to this new popup window. Then you have to make sure the window isn’t in the way of your viewport, and if it is, you have to reach all the way over to the mouse, drag it to the top of the window, click, move it over to somewhere out of the way, let go, and move your hand back to the keyboard. Then you have to type what you’re looking for and hit enter. Then you have to hit enter a few more times until you find the right one. Then you have to reach for the mouse again to close out of the find box, so you can go back to editing your file. Now, let’s say you want to do the same thing in vim. Just hit /, type your word, and hit enter. Hit n until you get to the one you want. And you’re already ready to do more editing. Much faster, no need to reach over to the mouse or the ctrl key, no need to worry about switching focus to a subwindow or worrying about positioning things correctly. Much more productive.

    Productivity isn’t just about how fast you perform an action, it’s mostly about how many steps your brain has to go through and how much extra stuff it has to think about while you’re doing the action. People don’t realize how many things your brain has to process when operating a mouse. You have to locate the mouse pointer, locate where you want to go, move the pointer toward that point. If you’re not quite there, or if you overshot, do it again. Usually you repeat this two to four times, and this is just moving the mouse. Not to mention how much extra time it takes to move your hand back and forth between the mouse and the keyboard. Let me give another example. Let’s say you’re writing in a string literal, with double quotes around it. Let’s say you decide that you want to start over, delete the contents of the string literal and start fresh. In geany, you reach over to the mouse, position it at the start of the string, make sure it’s right in the middle between the quote and the first character. Then you click and drag all the way to the end of the string. If you fucked up, click out of the selection, and try again. Once you have the string selected, put your hand back on the keyboard and hit delete. Now you can start typing. Compare that to vim. You think, “I want to Change the text Inside these double quotes”. You type ci” and you start typing your new string. ci” means “Change Inside Double Quotes”. This can also be done with single quotes, words, sentences, paragraphs, lines, parentheses, brackets, braces, and more. This is called a text object, and it’s one of the coolest features in vim. It also requires three keystrokes and zero mucking about with the mouse. Much more productive. As I said before, productivity is about how many steps your brain has to go through to perform an action. The idea behind text objects is, it lets you edit in terms of the ‘objects’ that your brain thinks about when it thinks about text. The alternative, of course, is that what geany does: you have to edit in terms of characters, and that forces your brain to worry about which characters represent the bits of text it wants to edit. Text objects also eliminate many accidental edits: In geany, if you select one character too many, you have to do the selection again. In vim, ci” will do exactly the same thing, no matter where your cursor is in the string. You can’t mess up the selection. This, I think, is far more productive.

    Yeah, the scrolling in emacs sucks, I don’t know if there’s a way to change it but I haven’t found one. That’s honestly one of the reasons I couldn’t use emacs when I tried. Vim doesn’t have that problem, if you scroll off the page it just scrolls one line, like in geany. In vim you can also use the z commands to do some nice autoscrolling: zt will scroll the page so your cursor is on the top line, zz will scroll so your cursor is on the middle line, and zb is the same for the bottom line. I use this all the time.

    I didn’t say vim has no configuration problems, I just said it isn’t an absolute bitch about it like emacs is. The amount of time I spent configuring vim the day I started using it is about the same amount of time I spend configuring geany when I started using that. Vim is fully configurable, and there are a number of default options that aren’t optimal (a handful of bad keybindings, opening and switching between files is really sucky if you don’t have ctrlp or something like it installed, things like that). But these things are really easy to change, usually just one line in your .vimrc will fix any given thing. And most customizations happen over time. I’ve been messing with my config ever since I started using vim, but it’s not a big timesink at all because I spend maybe a minute or two per month realizing I need to change something, figuring out how to do it, and doing it, and then I’m done until I find something else in another month or two. And the default configuration is perfectly fine for editing individual files and things. Why, what kind of problems do you run into when opening a python file that makes it unworkable? That surprises me.

    I’m not trying to get you to switch or anything like that. I’m just expressing where I’m coming from.

  8. Slava

    Vim is crazily powerful, cross-platform and free… yet everything it does it does so terribly assbackwards. I do use it often due to its strengths, but I hate every minute spent with it. And if you happen to enjoy this, face it – you are crippled the Vim way. Do not assume it is OK, or suggest others to use. It should die out so that another, both powerful and human-friendly editor may appear.

  9. Tucker

    @Slava

    “everything it does it does so terribly assbackwards”.

    Like what, for instance? Could you expand on this? I’ve always thought the concepts vim introduces are leaps and bound ahead of any other editor … if they were assbackwards, they wouldn’t be powerful, would they?

    I do agree that vim has a small handful of rather awkward default settings, but nothing you can’t fix easily with a line in your config. Also vimscript is kind of a shit programming language, but it’s a perfectly acceptable config language, and it’s not your only choice for writing plugins (vim comes with bindings for python, perl, ruby, lua, and maybe some others). Also, I guess vim isn’t the best at some things, emacs and other editors can do some things better. Emacs is more extensible because the concepts it uses are more general, but then emacs is meant to be a full lisp platform and not just a text editor. Emacs is slightly better at correct autoindentation and syntax hilighting in some languages sometimes, but that’s more of a minor support issue (and when it comes down to it, vim’s syntax hilighting is better in general because it supports more hilight groups, which increases code readability). But, all of those are just minor issues, most of them are fixable, and none of them are ‘terribly assbackwards’, just a tad lacking. Which is fine, it’s not like any editor is perfect.

    Anyway, all of that is easily forgivable when you take all the brilliant parts of vim into account: modal editing, text objects, key composition, etc etc. The fact that it’s highly customizable and supports or has plugins for pretty much anything you could want in a text editor is icing on the cake.

  10. Humblestone

    Hmm, I’m vim user but not an expert one, just a basic user (know only how to navigate and only handful of commands)

    Like you said, when busy days, programmer could write several tens or hundreds line of codes. But to me, when I write I always keen on repeated code, so at first when coding, I usually recognize the pattern and I edit my design to make more general. So it’s the code design that’s crippled instead of bashing the text editor/IDE.

    You can make your code more generic and short with smart usage of functions composition and higher-order functions. That’s why when someone write 100-200 lines of codes, I edit my codes from 200 lines to 100 lines. That’s why vim is really my favorite as I tend to edit more.

    Oh, if you are OOP programmer, my bad, you have my condolence then. Surely IDE is definitely your thing because you need to write those boilerplate codes and type those repeated word again and again.

  11. Dan Pupek

    I agree with your points and have experienced personally the ridicule that serious VIM users inflict on those of us that don’t use it. 20 years in the industry and I have worked with no one that uses VIM to write code. I have friends that use it but never worked with them. I’ve also used it myself for a year or so when I was in a “phase”.

    The number one argument that I get from VIM users is the “we don’t like to have to use the mouse” argument. I used both Visual Studio and Eclipse quite successfully without mousing. They both have a great set of keyboard shortcuts, can be modified and even extended with macros and plugins.

    So, anyway, I just don’t like the VIM input paradigm and the cryptic commands. I won’t teach new programmers to use it and I still let all my developers use any editor they like. Most just use VS, others use a combo of VS and some other things. BTW, Has anyone pointed out that most of those paradigms in VIM date back to computers that didn’t have monitors but just printed output?

  12. Dorin Lazăr

    Great answer: the point is that no, nobody actually pointed that out. However, I do understand the “keyboard only” paradigm, and the way vim does it is relatively ok, although I myself prefer a more direct-input mode to be dominant (the way it is in Emacs, or all the other editors on this planet).

    I think that elitism in use of a tool is silly, ‘s all.

  13. Dorin Lazăr

    Great answer: the point is that no, nobody actually pointed that out. However, I do understand the “keyboard only” paradigm, and the way vim does it is relatively ok, although I myself prefer a more direct-input mode to be dominant (the way it is in Emacs, or all the other editors on this planet).

    I think that elitism in use of a tool is silly, ‘s all.

  14. Tucker

    ‘The number one argument that I get from VIM users is the “we don’t like to have to use the mouse” argument.’

    That’s silly, since that’s just as valid an argument for Emacs, VIM’s primary flamewar opposition. The main argument I hear for using VIM, generally, is “I’d rather not use the mouse, but also the keyboard shortcuts non-vim editors have are horrible in comparison.” I can’t stand all the complex ctrl+shift+random bullshit you get with other editors. With VIM, your keyboard shortcuts are all simple to use and easy to remember (fewer modifiers and complex keystrokes, all the shortcut keys are the first letter of the thing they do, etc), and it’s all set up really nicely.

    No, I wouldn’t recommend it to beginners at all, VIM is for power users obviously, and of course you should let people use whatever editor they’re most comfortable with. But that doesn’t mean VIM isn’t as good or valid an option as any other, and it definitely doesn’t mean it’s outdated in any way. I know you guys like your IDEs, but I personally can’t stand them, and I’ll tell you why:

    IDEs are too bloated for my taste. They take way too long to start, and they have huge menus and docs that are full of things I’ll never ever use. It’s just a big waste of resources, and a waste of time at the beginning of the day. I shouldn’t have to wait more than a second or two for something as simple as a text editor to start up, and I certainly shouldn’t have to wait thirty seconds to a minute, but that’s how long Eclipse and most other IDEs take.
    IDEs are way too complex to configure. All those menus and wizards and everything make my brain hurt, and they all save to either big clunky xml files or special unreadable domain-specific files or god knows what else, and there are a ton of these stored all over the place, I can’t keep track of them all. Not to mention most IDEs have their own special project files that they need to save in your project’s directory which is extremely annoying all the time. Isn’t there a simpler way? Why yes there is. VIM gets it. Emacs gets it. Hell, even Sublime gets it. All you need is one text file with one simple syntax where you put all your configuration. Much better.
    IDEs are much too cluttered. There are always sidebars or hover windows or whatever open all over the place. When I’m editing code I want to see my code, and anything else on the screen is just distracting. This isn’t as big of a deal because you can configure this away in most IDEs, but it takes a while to disable all of those little distractions, so it’s still annoying.
    IDEs tend to have their own style and workflow, and resist conforming to that of the user. Even before I started using VIM, I couldn’t find an IDE that I was comfortable with, simply because none of them would let me use a workflow I was comfortable with. For example, I can’t stand Eclipse’s ‘workspace’ system, it causes me no end of annoyance. This is also tangentially related to what I said earlier about IDEs leaving useless project files everywhere.

    So yeah, IDEs aren’t my thing, and VIM is. That doesn’t mean I’m going to try to push it on you or anyone else, especially not beginners. That said, I do take issue with what the author of the article here is doing: attempting to disguise a cheap shot at a decent tool as a set of legitimate concerns, attempting to disguise a cheap shot at the tool’s mostly decent userbase as a set of legitimate concerns, mistakenly believing that the reason he had a bad time with VIM is because VIM is a bad tool, mistakenly believing that the reason he had a bad time with VIM is because all of VIM’s users are bigoted, elitist assholes, etc. It would be one thing if this article was actually about what its title seems to think it’s about: an attempt to explain why teaching VIM to new programmers is probably a bad idea, and an honest attempt to show people that forcing your tool of choice (any tool, not just VIM) on others is generally going to be a bad idea because every choice is legitimate for its own purposes and everybody has their own preferences. All of that would be great to see in an article, but that’s not what this is. This article is nothing more than a description of how ‘bad’ VIM is for anyone to use, how ‘outdated’ it is, and how all of its users are horrible bigoted assholes. In short, the author of this article is being just as much of an elitist (about IDEs) as the VIM users he discusses, and that’s not alright, I think.

  15. quicknir

    @Tucker: the whole point is that it’s not about convincing already entrenched users to give up VIM. It’s about what beginners should be told. And honestly, VIM people are terrible when it comes to giving a fair comparison between VIM and a good IDE. Example: you wrote above that VIM supports symbols, that is jumping to a symbol, etc. The goal of your statement is clearly to show that VIM has equivalents to these important IDE features.

    The problem is that it doesn’t. Ctags, gtags, etc are bad on reasonably complex c++, it’s much worse compared to Eclipse’s indexer. YouCompleteMe is probably the most accurate package you can get for that sort of thing for VIM. Though it works reasonably well, it’s harder to setup, not as performant for incremental changes (these first two are both a result of using clang as the backend), and nowhere near as featureful. In Eclipse I can search my entire project with incremental matching and splatting, not only for files (which VIM users often cite as a killer feature in some VIM plugin, not being aware that every single IDE has this), but also for classes, functions, macros enumerations, typedefs, etc. How about finding all the references to a given variable, function, etc? Can’t do that either. In Eclipse I can do that, as well as look at type, call, and include graphs/hierarchies.

    The thing is that reading code takes up much more time than writing code. So I’d prefer sophisticated features for reading code, over sophisticated features for writing code. And if you want a final nail in the coffin: just about every major IDE nowadays has at least decent VIM emulation. I recently used Eclipse + Vrapper to fix a bunch of compiler warnings; I was using the IDE features to find problem areas, and using VIM macros to fix them.

    What’s really not ok is the way that so much of the VIM community is getting young developers to jump into VIM without giving IDEs an honest shot. I’ve lost track of how many times I’ve heard a VIM/emacs person say that using these tools will actually make you a better programmer (false, and actually awful if anyone thinks that). Or that VIM/emacs makes you more productive because you have keyboard shortcuts for everything (because clearly IDE users use the mouse to click on everything). Or that VIM/emacs have plugins for every aspect of IDE functionality (completely false). Or that with VIM/emacs you can use all these awesome command line tools like grep and sed; as though launching eclipse disables my console and I don’t use grep on a regular basis. Or getting people to focus on things that are (or should be) irrelevant: I don’t care that Eclipse uses 2 gigs of RAM when I have 16, and I don’t care how long it takes to start when it runs all day. The author’s basic point is that needing to work through a terminal is the only good reason to use VIM/emacs, and he’s 100% correct.

    The fundamental problem, and difference between IDE and vim/emacs people, is that the latter (in many cases) have let their tool become part of their identity. That’s why they care so much and advocate so deeply. That’s why they attack with so much vitriol when an article like this is written. Do you think anyone cares to the same extent when someone writes an article ripping Eclipse? I would kick Eclipse to the curb tomorrow if something with better features came along. I’m not an “Eclipse person”, I’m a C++ programmer who wants the best tools for the job, whatever they happen to be.

  16. ecadre

    “Yeah, the scrolling in emacs sucks, I don’t know if there’s a way to change it ”

    Of course there is, it’s GNU Emacs 😛

    I’m going to write something terrifying here … if you want to know about scrolling in GNU Emacs, then read the manual.

    The information about scrolling is in the “Controlling the display” entry under “Scrolling” and “Auto-scrolling”.

    I assume that the effect you want is for the text to scroll by one line each time you move the point off the top or bottom of the screen, but to leave the point in the same place physically on the screen at the top and the bottom (no centring or the like).

    Sticking this into your .emacs will do that (as per the manual):

    (setq scroll-conservatively 101)

    There are other ways to produce similar or nuanced ways of achieving the kind of scrolling you like.

    Personally, I like the mostly default behaviour. I like to see my code properly in context, so the standard behaviour of moving half a screen and centring the point vertically is exactly what I want. The only change is to set scroll-margin to 3 so that auto-scrolling gets triggered 3 lines from the top or bottom of the screen.

    I also bind scroll-up-one-line and scroll-down-one line to convenient keys (it’s up to you), so that I can move up and down a buffer by a few lines whilst leaving the point in the same place relative to the document.

    There’s masses of other stuff to do with scrolling and centring etc etc. Just read the manual. 🙂

    PS. Oh, yes, tabs. There are a number of ways of doing tabs. I’ve never been interested in in tabs, just as I’m not interested in the menu bar, the button bar or scroll bars.

  17. Fubared

    Advice like this is why we are increasingly faced with developers who know next to nothing about how software actually works. Just pick some brainless IDE and push buttons. Learning a real skill is not worth it. You will go far.

  18. Jojo

    You’re not saying anything new by saying Vim is bad for beginners, it’s true, I wouldn’t recommend it to anyone UNLESS they tell me that they feel like writing code is tedious and they’d like to find a better way. And not before warning them that they’ll feel slow for the first month.

    Vim is a tool for people that write a lot of code, so it doesn’t need to be approachable, the people that need it will force themselves to learn it anyway. That’s not to say it couldn’t be made more noob-friendly, I think there’s a lot of things that could be done to ease the transition, but since it’s not a mainstream tool, it doesn’t need to, and that’s why nobody has done it yet.

  19. Tucker

    @ecadre
    Huh, that’s cool about the scrolling. No matter how much I looked or googled before I couldn’t find any easy way to do that, even though now when I google it’s right there, so I don’t know what’s up with that. Anyway, thanks. I might give emacs another shot at some point, I dunno. I kind of can’t function without vim bindings so last time I installed evil-mode, but it’s not perfect. But that doesn’t really matter as long as the differences aren’t too bad or confusing.

    “Personally, I like the mostly default behaviour. I like to see my code properly in context, so the standard behaviour of moving half a screen and centring the point vertically is exactly what I want.”
    I like that too, which is why I don’t like the default behavior: the section of code that it decides to show me almost never actually corresponds to the context I want to see, it’ll cut off the top by a quarter page or the bottom by a quarter page and there’s no middle ground, and that’s really annoying. In vim I can scroll to where I want and hit ‘zz’ to center the point on the screen, that way I get the entire context. I’m sure you can do that in emacs too, though. I just don’t like my text jumping around large amounts, I lose track of the code I’m looking at too easily and it’s a chore finding my place again.

    “I also bind scroll-up-one-line and scroll-down-one line to convenient keys (it’s up to you), so that I can move up and down a buffer by a few lines whilst leaving the point in the same place relative to the document.”
    I do that sometimes in vim, it’s ctrl-e and ctrl-y by default. It’s pretty useful in some situations.

  20. Tucker

    @Dorin
    “I prefer quality, not quantity.”
    lolwut? “People who write a lot of code” means “People who spend a lot of time coding”, as in, people who code for a living or as their major hobby or both. It does not mean “People who write 50 lines of code for something that could be done in three lines.” The editor of choice for those kinds of people I think would be an IDE, considering IDEs have built in tools you can use to generate a bunch of code without even having to type it. Vim, however, is good for people who spend a lot of time writing code, because it minimizes the tedious little non-coding tasks you have to do when editing. In other editors you spend a lot of time moving the mouse or hitting modifier keys or making selections manually or navigating enormous menus or whatever, and if you don’t code very much those things don’t matter all that much and Vim just isn’t worth learning, but if you code a lot, those things add up quickly and you end up spending a large chunk of your day doing tedious things, so minimizing those tasks is extremely helpful.

  21. quicknir

    The main non-coding task you do is read code. For many languages (Java, C++, Python, and many others), IDEs have many useful tools that let you read code in different ways. Go-to definition is a tool that helps you read code. Type hierarchies, call graphs, include graphs, outlines, etc, are all code reading tools. Vim is far behind in terms of options and quality of those tools.

    The fact that you calmly assert that you spend lots of time using the mouse in other editors tells me you haven’t achieved a very high level of mastery in them. Eclipse has keyboard shortcuts for everything.

    I use Vrapper inside Eclipse which gives me excellent vim emulation. I enjoy using it tremendously, and it does generally save me a bit of time here and there. It’s only saved me a great deal of time in a few situations; when we decided to upgrade warning levels and I was fixing repetitive warnings, or when I occasionally want to align code e.g. to the = sign, and I’m able to effortlessly call a python script on some lines of text using ! in vim, and a few others. Most of the time, the savings are small, and this isn’t surprising, because the amount of time spent editing code are not that huge to begin with.

    Vim/emacs have very poor options for any tool that depends on actually having an AST of your codebase, compared to what’s available for IDEs. If you have a counterexample, I’m all ears, I’d love to have a good option for remoting in. YouCompleteMe is the best I’ve seen for VIM and it’s way behind Eclipse.

  22. Tucker

    “The goal of your statement is clearly to show that VIM has equivalents to these important IDE features.”
    I guess? I don’t think those features are that important, I never use them anyway. I don’t know what the ctag support is like in Vim, I’ve just heard that it exists, but I’ve never had a reason to use it. You know how I find things like function/variable/class/type/macro defs/uses (and literally anything else) in my projects? I use ack. That’s a wonderful tool for the job. Actually, I’ve recently found a pretty nice plugin for vim called ctrlsf (https://github.com/dyng/ctrlsf.vim), it makes searching and refactoring from within Vim extremely fast and easy, and it uses ack to do it, or ag, which is supposed to be the same thing as ack except noticeably faster.

    “The thing is that reading code takes up much more time than writing code.”
    I suppose so? When you’re reading code you’re limited to how fast you can read, but no editing tool is going to change that. The only thing I can think of that would make reading code faster is proper documentation. I do understand where you’re coming from though, when you have multiple levels of indirection spread out over many files you have to be able to quickly follow the chain of reasoning between those files, but again, I can do that just as fast with ctrlsf as I can in an IDE. The thing is that editing code takes up much more time than reading or writing code, and that’s where Vim excels.

    “just about every major IDE nowadays has at least decent VIM emulation.”
    I guess? I’ve been forced to use Intellij IDEA in my workplace recently, and I enjoy a lot of things about it, one of which is that it’s actually usable without me having to bash my head against a wall until it bleeds (as opposed to Visual Studio and Eclipse which are severely painful to try to do anything with at all), and another of which is that when I first started it up, it asked me if I wanted to install the vim plugin. And it’s fine. It’s not great, but it’s okay. Most things work the way I expect them to, some don’t, but more importantly, I don’t get any of the cool plugins I have in Vim. I have access to some of the same functionality, but it’s not all there. It’s the same problem I had when trying to switch to emacs/evil-mode. Vim emulation =/= Vim.

    “I don’t care how long it takes to start when it runs all day.”
    Even if it’s only once, waiting for that shit to start up still annoys the hell out of me. And it’s not just once either, because IDEs require a restart every time you install a plugin or change some major configuration. I’m pretty sure you don’t even need to do that in Vim, but even if you do it’s not really a problem because it starts instantly. But, even emacs takes too long to start, for me. I dunno, it just annoys me on a conceptual level: something as simple as a text editor should not have to take multiple seconds to start up.

    “Or that VIM/emacs makes you more productive because you have keyboard shortcuts for everything.”
    Well, not so much emacs, and not so much ‘more productive’, but with Vim you waste less time doing tedious things because of the keyboard shortcuts. This primarily has to do with the fact that Vim’s shortcuts can do more in fewer keystrokes, don’t require the use of modifier keys nearly as often (I’m not a fan of straining my little finger every time I want to do anything at all), and are more powerful and versatile because of things like key composition and text objects. I would say that emacs can technically also make you more productive, but that’s only because you can conform it to your personal use and workflow to an infinite degree, which can increase your productivity because you don’t have to fight your editor to get things done (you can do this with Vim too, just not to the same extent).

    “Or that VIM/emacs have plugins for every aspect of IDE functionality”
    I guess not, but the point is that they can. If a plugin doesn’t exist, you can just make it yourself, especially in emacs. And as far as I’m concerned, Vim has plugins for every aspect of IDE functionality that I actually use, and also it has plugins for every aspect of functionality that I need that IDEs don’t support.

    “I’ve lost track of how many times I’ve heard a VIM/emacs person say that using these tools will actually make you a better programmer”
    I completely agree with you on this one, that’s just stupid. Vim can make you better at writing code, but it doesn’t magically increase the quality of that code. No editor or tool can do that.

    “What’s really not ok is the way that so much of the VIM community is getting young developers to jump into VIM without giving IDEs an honest shot.”
    Really? Because every Vim user I’ve ever met uses Vim because they used to use IDEs and hated it. I’ve never heard of anyone starting on Vim, that’s absolutely ludicrous.

    “The author’s basic point is that needing to work through a terminal is the only good reason to use VIM/emacs, and he’s 100% correct.”
    That is one of the points the author made, yes. And this is at the heart of what bugs me about this article: The author’s basic point is supposed to be that teaching Vim to new programmers is a bad idea. That’s what he says the article is about. But it turns out that the article is actually about how he’s scared of terminals and how all Vim users are terrible people and shit like that. “needing to work through a terminal is the only good reason to use Vim”. Because I suppose you should only work through a terminal when you ‘need’ to? If you’re talking about Windows then I get where you’re coming from, the DOS terminal is a piece of shit, but I use Linux at work and home and I prefer to use the terminal, it’s so much easier to get things done in terminals. So in that case I’d rather use a terminal-based editor. But again, that’s just my personal preference.

    “Do you think anyone cares to the same extent when someone writes an article ripping Eclipse?”
    No, because Eclipse is terrible. Eclipse is the worst IDE I’ve ever used, and I can actually say that now because I’ve used IDEA (which I actually kinda sorta like) so I have another mainstream IDE to compare it to. People don’t freak out about Vim because it’s ‘part of their identity’, people freak out about it because it’s really good. People talk about Vim like it’s the greatest thing in the world because when they use it, it makes them feel like it’s the greatest thing in the world. Vim is the only editor I’ve ever used that’s had that effect on me. Hell, even watching people use Vim has that effect on me, that’s what got me into Vim in the first place. A couple years ago, one of my professors was editing some code on the projector, and he did it so fast it was like magic, and I was like “I want to learn to do that shit”. You don’t get that with IDEs.

    “I would kick Eclipse to the curb tomorrow if something with better features came along.”
    You think I wouldn’t? You think that if something that combined the best parts of Vim and Emacs appeared on Github tomorrow I wouldn’t drop Vim for that in a heartbeat? I totally would. The thing, though, is that this is extremely unlikely to actually happen. Although it might happen, NeoVim might be the greatest thing ever, it’s still in beta and it can already do things Vim can’t do, like run a terminal emulator in a buffer (which is probably the most useful thing that Vim can’t actually do, which is honestly horrible). But yeah, don’t imply that Vim users will forever just stick to Vim no matter what else comes out. If Vim users were actually like that, they’d still be using Vi. Or ed.

    “I’m a C++ programmer who wants the best tools for the job, whatever they happen to be.”
    That’s all well and good, and an IDE might just be the best tool for a C++ programmer. But I’m not an (insert language here) programmer, I’m a programmer. Day to day I use a wide variety of languages, from the general-purpose to the domain-specific, from the mainstream to the less-well-known to the in-house. The thing that makes IDEs work so well for particular languages is that they’re programmed specifically to support that language really well, which is fine, but it comes with the caveat that those particular IDEs can’t be very easily used with other languages. Many of the languages I use every day aren’t well-supported by any of the mainstream IDEs. Vim, on the other hand, is specifically designed to work well for programming in general, with any language at all. I personally think this is the true power of something like Vim or emacs or even Sublime, over IDEs. That does mean the support is not quite as good for any language in particular, but in my case that’s not a problem. In your case it might be I suppose, since you’re ‘a C++ programmer’. I would, then, like to suggest you give CLion a try. It’s an IDE by JetBrains (the people who made IDEA and PyCharm which are the only two IDEs I actually like) designed specifically for C and C++ (unlike Eclipse, which is primarily for Java and only supports C++ as an afterthought via a plugin). Anyway, just a suggestion.

  23. Tucker

    I often tell people that the best way to be a better programmer, besides practice and reading code written by programmers that are better than you, is learning to use as many different languages and tools as you can possibly get your hands on. Vim and emacs and IDEs included.

  24. Dorin Lazăr

    @Tucker: “…makes searching and refactoring from within Vim extremely fast and easy, and it uses ack to do it, or ag, which is supposed to be the same thing as ack except noticeably faster”

    First of all, this is obviously exaggerated, any suggestion that “searching and refactoring” in Vim would be faster than in IDEs. Such declaration from vim fans only mess up things, because the point is not speed of things (I can do things faster if I write a shell script that does renames, for example) but: how long does it take to discover that feature, how easy it is to perform that operation, how much stuff do I have to get acquainted to before doing that. The answers for vim are: “too long, too much, too many”.

    But most importantly, the fact that an IDE starts with all the things bound and ready to use, that’s what makes me use an IDE instead of Vim or even Notepad++. I don’t have to load suspicious add-in to do magic stuff for me. I already have my IDE more or less complete.

    Really, you have to work on 1+MLOC projects to really understand what an IDE is good for.

  25. Tucker

    @quicknir
    “The main non-coding task you do is read code.”
    I guess I wasn’t as clear as I should have been. By ‘non-coding task’ I mean tasks that aren’t directly related to doing things with code. So, anything that’s not reading, writing, or editing code.

    “Eclipse has keyboard shortcuts for everything.”
    Does it? What’s the keyboard shortcut for copying the current paragraph? What’s the keyboard shortcut for deleting everything in a set of quotes? I can’t find those anywhere. Vim has those. And even the shortcuts that Eclipse does have require multiple modifier keys to press. I’d rather use the mouse than contort my hand all over my keyboard just to do something as simple as renaming a variable. Although you’re right, I’m not very good at Eclipse’s keyboard shortcuts, that is why I use the mouse. I think the problem is that they’re so hard to remember. There’s no rhyme or reason as to why they are what they are. Vim’s shortcuts were easy to learn because they’re all the first letter of the thing they do: ‘m’ is mark position, ‘f’ is find in line, ‘u’ is undo, ‘c’ is change text, ‘n’ is next search result … what’s next search result in Eclipse? Ctrl-k? Um why? How am I supposed to remember that shit? So yeah, the bottom line is Vim’s keybindings can do more and are easier to remember and use. If you don’t have Vim bindings at your disposal, you might as well just use the mouse.

    “I use Vrapper inside Eclipse”
    Then you do have Vim keybindings at your disposal. At least partial support for them. What are you doing praising the default Eclipse bindings if you don’t even use them? Now you’re just being silly. And yeah, as I’ve said in another post, I use IDEA with IdeaVim for work. I still prefer actual Vim.

  26. quicknir

    Okay, so you’re basically saying that an IDE is the best tool for anyone working predominantly in a few languages that are well supported by IDEs? If so, then we totally agree. The guys working in 12 languages, including Algol and SmallTalk, sure, vim is probably better for those guys.

    Most people work mostly in a few languages, because it makes a lot of sense to do so. And most popular languages have good IDE support. So really, you should fully agree with this article. 99% of developers will work in conditions similar to what I described, and therefore should learn an IDE.

    Also, FYI, Clion is nowhere near where Eclipse as a C++ IDE, yet. The JetBrains guys are very good, and Clion will probably surpass it, but not yet. The quality of the Clion indexer is just much poorer than Eclipse’s, they still haven’t resolved very basic bugs that I filed months ago. You sound like someone who used Eclipse 4 years ago, hated it, and haven’t looked back. I’ve tried every C++ IDE worth mentioning in the last year, and compared their ability to parse code head to head. I assure you, Eclipse is the best. Oh, and one of my main beefs with PyCharm compared to PyDev? Eclipse has much better vim emulation than PyCharm.

  27. Tucker

    @Dorin
    “First of all, this is obviously exaggerated, any suggestion that “searching and refactoring” in Vim would be faster than in IDEs.”
    Wow, I knew you were terrible at listening but jeez. No, I never said searching in Vim was faster than searching in IDEs, if anything they’re about comparable speeds. I said ag was faster than ack, but I never said anything about IDEs …

    “the point is not speed of things, but: how long does it take to discover that feature, how easy it is to perform that operation, how much stuff do I have to get acquainted to before doing that.”
    Why? Once you discover the feature, and get acquainted with it, those things don’t matter. And ‘how easy is it to perform that operation’, as easy as you make it, considering you get to decide what the keybindings are. If things like ‘how easy is it to learn’ actually mattered to you, you wouldn’t be a programmer in the first place, you’d have been scared away by your first language.

    “But most importantly, the fact that an IDE starts with all the things bound and ready to use, that’s what makes me use an IDE instead of Vim or even Notepad++.”
    Except that it doesn’t? If you’re using Eclipse, and you need support for a language other than Java or a VCS other than Subversion or anything else you might want, you need to install a plugin for it. Also Vim plugins aren’t suspicious or magic, because they’re just text files written in vimscript or python or lua or something, you can read the source code as much as you want.

    “Really, you have to work on 1+MLOC projects to really understand what an IDE is good for.”
    I do. Every day. Still not sure what all the fuss is about.

  28. Tucker

    @quicknir
    “Okay, so you’re basically saying that an IDE is the best tool for anyone working predominantly in a few languages that are well supported by IDEs?”
    No. I’m saying that the best tool for anyone depends entirely on who that person is and what they’re trying to do. Personal preference, comfort level, learning ability, deadlines, etc play as big a part in deciding which tool is right for the job as the actual job does. It’s a case-by-case thing. All I meant by what I said is that in my particular case, IDEs are a bad choice because of the variety of languages I use. However, the best choice for someone else in the same situation might just be to learn twelve different IDEs or something. I’m just saying it’s not generalizable like that. I think that in most situations, you should try multiple different tools and choose the ones you think are best for your particular situation. This isn’t always the case either, but it’s a good rule of thumb I think.

    “Most people work mostly in a few languages, because it makes a lot of sense to do so.”
    Yeah, web development never made much sense to me either. I kid, though. No, I don’t think you’re correct about that, I think it makes the most sense to use different languages depending on what you’re trying to accomplish. If you have something that needs to run very fast, you should use C. If you need code that is extremely stable and bug-free, Haskell. If you need to write your code very quickly, Python. If you’re writing short snippets that use a lot of external tools and not much in terms of data types, Bash. If you’re writing really complex code where many levels of indirection is key, a Lisp might be a good choice. If you’re parsing and generating a lot of XML, I would suggest Groovy or something. Different languages have different strengths and weaknesses, and you always want to choose a language who’s strengths match the needs of your program. Just using Java for literally everything is a terrible idea.

    So really, you should fully agree with this article.”
    Wait … why? This article is about how horrible Vim users supposedly are and how outdated the terminal supposedly is and how bad Vim’s learning curve is. It has nothing to do with what you’re talking about.

    “Also, FYI, Clion is nowhere near where Eclipse as a C++ IDE, yet.”
    Alright. I dunno, I’ve never used CLion, I just know the JetBrains stuff I have used is pretty good comparatively.

    “You sound like someone who used Eclipse 4 years ago, hated it, and haven’t looked back.”
    I’ve actually used it infrequently for the last four years and have hated it every time. The last time I gave it a shot was a couple days ago. It hasn’t changed a bit as far as I can tell.

    “I’ve tried every C++ IDE worth mentioning in the last year, and compared their ability to parse code head to head.”
    Ability to parse code? What exactly are you actually looking at? What is ‘indexing quality’, are you just talking about speed? Or does CLion miss instances of things in your code?

    “Eclipse has much better vim emulation than PyCharm.”
    I’ve never used PyCharm’s Vim emulation, so I don’t know.

  29. Dorin Lazăr

    Let me cut your quote, because you can’t really focus on such large texts: “makes searching and refactoring from within Vim extremely fast and easy”. Refactoring from within Vim cannot be extremely fast and easy, that’s what I picked on, and yeah, let’s leave it at that.

    I am not a fan of eclipse and the myriad of things needed to install. I like my IDE bare, with all things in it or not at all, but it’s a preference.

    With vim, on the other hand, I have to learn about a gazillion things that will allow me to do stuff in a very memory-exhausting way. I’m not referring to computer memory, I’m referring to my memory, which is the scarce resource here.

    So frankly, I couldn’t give a rat’s ass about what vim can do: it takes too much learning to do the things I already do with my IDE.

  30. Tucker

    “Let me cut your quote, because you can’t really focus on such large texts: “makes searching and refactoring from within Vim extremely fast and easy”. Refactoring from within Vim cannot be extremely fast and easy, that’s what I picked on, and yeah, let’s leave it at that.”
    … yes it can. And I never compared it to IDEs in this quote, although, again, it’s just as fast and easy as it is in an IDE.

    “I am not a fan of eclipse and the myriad of things needed to install. I like my IDE bare, with all things in it or not at all, but it’s a preference.”
    And I like my Vim. It’s a preference. No need to write an article about how much of an asshole I am over it.

    “With vim, on the other hand, I have to learn about a gazillion things that will allow me to do stuff in a very memory-exhausting way. I’m not referring to computer memory, I’m referring to my memory, which is the scarce resource here.”
    Like what? The keybindings? So you think I went and memorized all the Vim keybindings? Fuck no, I don’t have a big list of key/function pairs memorized. With Vim it’s more of a mindset thing. You want to undo. What do you press? Well, what letter does ‘undo’ start with? Things like that. And if you do that enough, it just becomes muscle memory, second nature. And you don’t do them all at once, you learn like three of them and then you add one or two keys at a time whenever you find you need it. I guess you might also be talking about the commands though. I don’t fucking know what all the vimscript commands are either, I just google them as I need them. If there’s one I think I might use a lot, and I don’t think I can remember it, I just make a leader binding for it that I know I can remember more easily. Or maybe you’re talking about the plugins? I don’t fucking know what all the plugins are, nobody does. You just find them as you go. I’ve been using Vim for years, and I didn’t know about ctrlsf (which makes my life loads easier) until a month or two ago. You just take the plugins you think you need, and you forget the rest, no need to worry about all of them. You’re making this shit a lot more difficult than it actually is, is all I’m saying.

    “So frankly, I couldn’t give a rat’s ass about what vim can do: it takes too much learning to do the things I already do with my IDE.”
    Okay, that’s fine. A lot of people don’t have time for that kind of thing. A lot of my friends keep pestering me to switch to Dvorak, but I’m not going to because the long term benefits don’t outweigh the initial steep learning curve and gigantic drop in productivity it will cause. However, notice that I’m not sitting here writing articles about how horrible Dvorak users are, and how assbackwards and outdated Dvorak is, and how you’re stupid if you don’t use Qwerty. You know why? Because it’s a matter of preference, and should be respected as such.

  31. Dorin Lazăr

    @Tucker: oh, so the problem is that I’m writing an article about how the VIM users are horrible, because they jump in front of everyone to preach about it? Ok, then it’s settled.

    The point is that I would not recommend vim to a beginner, yet I’ve seen too many people doing just that. Their arguments: if you have this plugin and this and this and this and this you could do this. Which is silly. The point is that vim becomes a barrier to accessing programming when such people guide future developers.

    And that was the initial problem. Now, the second problem is that vim users are elitist and smug about their choice of editors. And I’m like “fuck no, you can use whatever, but I recommend an IDE, because you have everything there without need to make an effort, without the need to learn how to quit the darned editor. It’s simple, it’s what you know, go for an IDE”.

    From time to time I like to use vim, but I can’t for bigger tasks. I find it horrible for refactorings – again, I’m sure that with this and that plugin refactorings are fast and easy, yet I doubt that its results are proper.

    So that’s the story that vim elitists find hard to stomach. Developers ARE better off with an IDE, at all levels. End of story.

  32. Tucker

    @Dorin
    “oh, so the problem is that I’m writing an article about how the VIM users are horrible, because they jump in front of everyone to preach about it?”
    The problem is that you’re pretending to write an article that explains your fears about Vim being taught to beginners, and attempts to convince these people to change their behavior, yet what you actually write is nothing but malicious vitriol describing how stupid you think said people are and how much you dislike their personal choices in tools. I don’t know about you, but as far as I can tell, pissing off your audience is a pretty poor way to change their minds about something. I would have been very happy with a thoughtful discussion about how introducing beginners to Vim can often scare them off of programming entirely or something similar, and how we should, as Vim users and teachers, be weary of this fact. What I got was a slap in the face by a whiny douchebag who clearly doesn’t know what he’s talking about. I want my proverbial money back. Of course, I’ve said all this multiple times already, but I know you don’t actually listen so why do I even bother.

    “Their arguments: if you have this plugin and this and this and this and this you could do this. Which is silly.”
    Why is it silly? I’d think an editor being extremely extensible would be a major plus, because it would mean you could actually do all those things. If all it could do was stuff that was built in then it’s a pretty shitty tool. Emacs especially takes this concept to the extreme: nothing is built in. This is great because it allows you to mix and match your tools, and your experience won’t be weighed down with tools that you don’t need, like it is in an IDE. And if there’s a feature you want that doesn’t exist, you can easily just write a plugin for it. Vim doesn’t go quite as far as Emacs does, because Vim does have everything Notepad++ has and some more built in, but if you want anything more than that, you use plugins. There’s nothing wrong with that. If everything you could possibly need is built into your editor, that’s a lot of interconnecting code for the developers to maintain, and there’s a lot higher chance that the product is going to be a complete train wreck. This is the idea behind the Unix philosophy of ‘every program should do only one thing, and do that thing really well’. The more complex your code is, and the more it tries to do at the same time, the more of a chance there is that it will suck. That’s why the best software products are often the simplest.

    “The point is that vim becomes a barrier to accessing programming when such people guide future developers.”
    No, I agree. I’m just explaining to you that pissing such people off is not going to make things better. And pissing other people off in the process … it makes me think you don’t actually care.

    “Now, the second problem is that vim users are elitist and smug about their choice of editors.”
    sigh. See this is what I’m talking about. Generalizing an entire group of people based on some bad experiences you’ve had in the past. No, not all Vim users are elitist and smug. Some Vim users are. Some non-Vim users are. Some people are elitist and smug. The thing is, a lot of people aren’t, as well. And including those people in your misguided whinings does not help your cause, to say the least.

    “And I’m like “fuck no, you can use whatever, but I recommend an IDE, because you have everything there without need to make an effort, without the need to learn how to quit the darned editor. It’s simple, it’s what you know, go for an IDE”.”
    … you mean :quit? :quit is how you quit Vim. Or :q for short. I guess if that’s too hard for you to learn then yeah, just stick with what you know. Don’t bother going to university either, they try to make you learn things there so you’ll just end up tiring yourself out. In fact, stop writing code altogether. Go work on an assembly line screwing toothpaste caps on toothpaste, or better yet, go live in your mom’s basement for the rest of your life. That way you can live your life ‘without need to make an effort’. Jackass.

    “I find it horrible for refactorings – again, I’m sure that with this and that plugin refactorings are fast and easy, yet I doubt that its results are proper.”
    You ‘doubt the results are proper’, what’s that supposed to mean? Refactoring is an extremely interactive process, sure you have tools to help you but ultimately the programmer is the one making the changes, so the programmer is the one who decides what the results are. What, do you just hit the ‘refactor’ button and hope for the best? Do you have any idea how terrible of an idea that is? I guess you don’t care though. After all, you’d rather not ‘need to make an effort’. Jesus, if I were your boss I’d fire you.

    “So that’s the story that vim elitists find hard to stomach. Developers ARE better off with an IDE, at all levels. End of story.”
    Cool story bro. So, just so I’m clear, let me recap your story: “Here’s why Vim should not be recommended to beginners”, “Installing plugins is hard”, “Vim users are jerks”, “Learning is hard”, “Effort is hard”, “Refactoring is hard”, “In summary, that’s why IDEs are better than Vim and every developer is better off with an IDE.” … no, I’m afraid that doesn’t follow. Sorry.

  33. quicknir

    I doubt that dorin meant to say that all vim users are elitist smug jerks. But a lot are. If you try to tell many people about why an IDE is better than vim, many will tell you: you just don’t grok vim. If you haven’t spent ten years trying to master it, then you just don’t understand it. Of course, try telling them that they haven’t mastered Eclipse for a fair comparison.

    By parse code, I mean exactly that. All the cool IDE features are built around the IDE’s ability to have an AST representation of your entire codebase. It needs to be both fast and accurate. Parsing/indexing c++ is hard, so it’s never 100% perfect. But if the accuracy is even moderately away from 100%, it becomes almost useless. Eclipse’s parser/indexer is excellent, and on top of that it also has the best feature set for the useful things it lets you do, enabled by that AST representation. Our codebase is pretty complicated (templates, indirection, etc), Clion’s static error detector (finds errors in code as it’s written without compiling, extremely useful feature) had 100’s of false positives in files of a few thousands lines of source. When you have a false positive on every 10th line, that feature is now useless. In that same piece of code, Eclipse’s error detector had one false positive (on about 5000 lines of code) stemming from some trivial bug in how std::cerr and << are handled.

    As for multiple languages, I don’t want to get too far into this, as it’s off topic. But basically, there’s huge technical cost to interfacing between different languages, and there’s a cost for a single individual in spreading themselves thin. Even enormous companies like Google are probably 95% covered by just a handful of languages (Google AFAIK has only 4 official languages: C++, Java, Python, and Go, between those and Javascript variants I suspect it covers 99% of their LOC and daily work). Even more relevantly, a given job posting will rarely ask for more than a few languages.

    Anyhow, I’m quite willing to bet if you survey programmers at a variety of places, you’ll find that the vast majority of programmers will do at least 50% of their development in just one language, in a given week or month. And out of those, most will be doing it in a language that has a good IDE available.

    You say it’s all about different people needing different workflows, I think the exact thing that me and Dorin are saying is that for the vast majority of people programming e.g. C++ or python in vim, if they had an open mind and looked at it objectively, they would be using an IDE. But they don’t, because so many vim and emacs people treat their choice of editor as a religious matter. Worse, they have convinced themselves that they’re just uber programmers who naturally uber case about efficiency, use these tools because they’re the most efficient, and try to convince anyone who will listen. There are edge cases where using vim over an ide makes sense; needing to work over ssh, not spending long enough in one specific language, etc. But for the majority of developers working in today’s environment, IDE’s are a much better tool, and the main reason that a certain group of people hasn’t grokked that is not because they have such a special workflow, but because they can’t reason objectively anymore about the matter.

  34. Dorin Lazăr

    @quicknir: correct. I am a vim user, although not proficient, I still am a vim user. Not all are horrible jerks, but those that push it as THE ONE TRUE SOLUTION are that, and are inconsiderate as well.

  35. Tucker

    @quicknir
    “I doubt that dorin meant to say that all vim users are elitist smug jerks.”
    You sure about that? Because he has never said ‘some vim users are elitist smug jerks’, or ‘most vim users are elitist smug jerks’, and he has also never said ‘some vim users are not elitist smug jerks’. Over and over he says, ‘vim users are elitist smug jerks’. If he had instead said ‘Japanese people are pedophiles’ or ‘women are extremely unintelligent’, I don’t figure you would be coming around to defend him because he didn’t explicitly say that all of them were such.

    “But a lot are. If you try to tell many people about why an IDE is better than vim, many will tell you: you just don’t grok vim.”
    If you try to tell people that IDEs are better than vim … they’ll tell you that you don’t understand vim … and that makes them smug jerks? I don’t follow. If something has a huge fanbase it’s clearly doing something right, and if you don’t see what that is, then that’s clearly because you don’t understand it very well. That’s okay, there’s nothing wrong with that. What there is something wrong with is running around telling a bunch of people that your IDE is better than the tools they choose to use. That makes the person using the IDE an elitist smug jerk.

    “If you haven’t spent ten years trying to master it, then you just don’t understand it.”
    If you think Vim takes ten years to master then you clearly don’t understand it. It only took me a month or so to start using all the keybindings well, and even before then I was decently good with it. Even the day after I started using it, I was just as fast with it as I was with my old editor, Geany. Sure, it seems overwhelming at first, but it really isn’t, unless you’re an idiot and try to learn it all at once.

    “By parse code, I mean exactly that. All the cool IDE features are built around the IDE’s ability to have an AST representation of your entire codebase.”
    Why would you ever need that? The only useful thing I can think of that you could do with something like that is get instant feedback about compiler errors/linting/etc, but unless you’re just a shit programmer you won’t make mistakes often enough for that to actually save you any time or effort.

    “Clion’s static error detector (finds errors in code as it’s written without compiling, extremely useful feature) had 100’s of false positives in files of a few thousands lines of source.”
    Sounds to me like their algorithms just aren’t very good yet. Of course with C++ it’s probably pretty easy, comparatively. I’ve been using IDEA a lot for Groovy recently, and I get a lot of false positive error checks because it doesn’t recognize a lot of the DSLs I’m working with. That tends to get annoying. I might as well just turn it off, nothing it tells me is ever an actual error anyway, and if it is I’ll just figure that out when I try to compile it.

    “there’s huge technical cost to interfacing between different languages”
    That depends on the language. A lot of languages are pretty easy to combine and use together. Embedding Lua in a C project, linking C and ASM objects together, writing Scala that uses Java libraries, interfacing Javascript in a browser with Groovy on a server, writing separate services in different languages and having them interact via some REST API, or just writing different programs in different languages and tying them together from a BASH script.

    “and there’s a cost for a single individual in spreading themselves thin.”
    Oh yes, because using more than one language a day really ‘spreads you thin’. What are you even talking about? There’s nothing exhausting or complicated about using different languages for different purposes. Even if there was, it wouldn’t be nearly as exhausting or complicated as trying to use a language for a purpose it wasn’t designed for. You of all people, being a C++ programmer, should understand this. You can write just about anything in C++, sure, but sometimes in order to do it you have to build tons of infrastructure and work around all the shitty static typing and god knows what else, and by the end of it all you’ve written five hundred lines of code and you could have done the same thing in Python in fifty lines. For me at least, the latter spreads less thin. I understand that a lot of the time there are still plenty of good reasons to choose the former, but in this particular example, for simplicity’s sake, let’s just say there isn’t.

    “I think the exact thing that me and Dorin are saying is that for the vast majority of people programming e.g. C++ or python in vim, if they had an open mind and looked at it objectively, they would be using an IDE.”
    Why? What’s objectively better about an IDE? Nobody on this post has actually given any real input as far as this is concerned, yet. Dorin has talked a lot about how he likes IDEs because he’s comfortable with them, and because he doesn’t like Vim’s userbase, and that’s about it. I guess you’ve discussed your Eclipse parsing/indexing, which, hey, if you find that useful, more power to you. But you also use Vim keybindings, which are pretty much the defining feature of Vim, so as far as I’m concerned you’re a Vim user.

    “But they don’t, because so many vim and emacs people treat their choice of editor as a religious matter.”
    I don’t know anyone who actually does this. I don’t know of anyone who actually does this except, like, Richard Stallman, and he’s an insane person.

    “Worse, they have convinced themselves that they’re just uber programmers who naturally uber case about efficiency, use these tools because they’re the most efficient, and try to convince anyone who will listen.”
    A lot of them seem to do this, yes. But at least as far as most of these people are concerned, if you actually get to know them, you start to realize that they just find the increase in efficiency or extensibility or whatever to be much more comfortable and freeing than what they were using before. I remember, before I started using Vim, I would look at the Vim people and wonder, ‘what’s the point? Aren’t all editors basically the same? As long as you get the job done it doesn’t really matter. These people just think they’re better than me.’ Then, when I started using Vim, I realized something: it’s actually possible to enjoy the act of using a text editor, not even for anything in particular, just the act of editing itself. And I realized that the reason I had felt the way I had felt was simply because I hadn’t enjoyed it, but I hadn’t noticed because it didn’t occur to me that it was something that could possibly be enjoyable. The same thing happened to me when I switched to Linux: before that point I wondered why there were all these elitist Linux people running around telling me how cool their operating system was, but once I actually tried Linux, I understood that they were actually right, and that just wasn’t a possibility that had crossed my mind before that point. Of course Vim users are going to try to convince anyone who will listen to use it. It’s like when you read a book that you really really really like, and you can’t stop recommending it to people, even people who don’t even like that genre, even to the point where they start getting annoyed at you. Most Vim users aren’t trying to be assholes about this. Some are, but most are just trying to share something with you that’s special to them, and they come across the wrong way.

    “But for the majority of developers working in today’s environment, IDE’s are a much better tool, and the main reason that a certain group of people hasn’t grokked that is not because they have such a special workflow, but because they can’t reason objectively anymore about the matter.”
    What is this about ‘special workflows’? I never said anything about that, at least I don’t think I did. I guess workflow is one example, but the thing that really matters the most, the most objectively important thing to consider when choosing a text editor, is personal comfort level. The more comfortable you are with your editor, and the less you fight it, the better your experience is. Believe it or not, this can make a huge difference in both how productive you are and the quality of your code.

    This is why I don’t like Eclipse: because every minute I’ve ever spent using it, it’s doing things that I don’t want it to do, or failing to do things that I do want it to do. This includes crashing so hard I have to reinstall it from scratch (fairly often), popping up a ton of extra useless information about my code that only serves to distract me from it, or having me rely on magic buttons that end up doing things I don’t expect or intend to do. Every time I run into something like this, I grumpily storm off to the preferences or to Google to figure out how to fix it. Sometimes this works, other times it doesn’t and I’m forced to just live with this ass-backward ‘feature’ for the rest of my life. A good example of this I think is the ‘workspace’ concept; I can’t just open files or projects anywhere on my disk, they have to be in special workspace directories that I have to switch between and each workspace has separate preferences, so I have to do a ton of extra work that I shouldn’t need to do every time I want to open a new or different piece of code. Because of these things and other similar shit, it takes me three times as long to get anything done in Eclipse than in Vim, even with all of Eclipse’s boilerplate generation and static code analysis and search features and interactive debugging and code completion and integrated docs and so on. On the other hand, everything in Vim is simple enough that it works exactly the way I want it to every single time, yet powerful enough that I don’t get slowed down by it, and the times I have to fight Vim are few and far between. I can only think of a handful of examples of Vim doing something I didn’t want it to, and every one of those times I could fix it easily with a quick google search or :help and a line in my .vimrc. I’ve been openminded about Eclipse many, many times (after all, the problem may just be that I’m approaching it incorrectly, as that’s the problem most people run into when attempting to use Vim), but until the day I realize that this is the case, I’ll continue to dislike Eclipse because it’s so uncomfortable for me, personally, to use.

  36. Tucker

    @Dorin
    “Not all are horrible jerks, but those that push it as THE ONE TRUE SOLUTION are that, and are inconsiderate as well.”
    Wait … that sounds familiar …

    “Does it make sense for the modern developer [to learn Vim]? Not unless you don’t have a proper IDE.”

    “I would never recommend to anyone working without an IDE.”

    “Developers ARE better off with an IDE, at all levels. End of story.”

    Alright. So people who push Vim as ‘the one true solution’ are horrible inconsiderate jerks, but people who push IDEs as such are not. Got it.

  37. Dorin Lazăr

    @tucker Yeah, and people that say that cars are faster and better than carts are jerks. 🙂 Got it. 🙂

    Do you wonder why you’re trying so hard now? What are you trying to achieve? Why do you even bother? 🙂 Isn’t it too much of an effort? Can’t you see that your style of argumentation only brings discord but no result? 🙂

    That’s why people tend to say that all VIM users are jerks. They only see the ones that are.

  38. Tucker

    @Dorin
    “Yeah, and people that say that cars are faster and better than cars are jerks. Got it.”
    Well yeah, as long as you’re comparing something objectively measurable, like speed, then that’s a little different. In that case, Vim has a faster start time and I can edit faster in Vim than in an IDE. That must mean Vim is objectively better than IDEs, right? Because it’s ‘faster’? No, it doesn’t work that way. And come to think of it, cars don’t work that way either. Cars are as much about comfort and use cases as text editors or anything else. I’d rather have something slightly slower if the alternative doesn’t have shocks and a radio and comfortable seats. I wouldn’t buy a Ferrari if I were planning to do any offroading with it. Bugattis are expensive and fast as hell, but they look terrible and they handle like shit so I wouldn’t buy one even if I could afford it. I suppose it’s still objectively better than a Ford Taurus. I suppose Eclipse is objectively better than Notepad. But you have discussed the power of Vim quite a few times, so clearly that’s not the comparison we’re making here. You’re not matter-of-factly stating that a hunk of gold is better than a heap of trash, you’re comparing two cars that are in the same league. And then you’re saying that because one is fully electric that means it sucks ass.

    Oh, right, I got on a bit of a tangent … what were we talking about? Oh yeah, the difference. The difference is, if you talk shit about a beat up rusted old Jeep, nobody’s going to argue with you, everyone knows that you’re right. Everyone agrees with you. Nobody takes offense. Now, let’s say the owner of that Jeep inherited it from his dead father. This man grew up with this car, knows this car inside and out, loves this car, even though it’s old and beat up and he can’t afford to take care of it very well. And you’re still telling him about how shitty his car is. Suddenly you’re a jerk again. Do you understand why? The only way you’re not a jerk is if there’s nobody to be a jerk to.

    “Do you wonder why you’re trying so hard now? What are you trying to achieve? Why do you even bother? Isn’t it too much of an effort? Can’t you see that your style of argumentation only brings discord but no result?”
    What the fuck are you even talking about? I’m just having a conversation, no trying or achieving or effort involved. I like to talk about Vim, so I come on your blog and talk about Vim, it’s as simple as that. I don’t see any discord, and I’m not expecting any result. If you want to make this into an argument then as far as I can tell I won ages ago, but the only result I’m expecting is for you to keep repeating yourself and saying the same shit over and over and over. After all, you’re a terrible listener.

    “That’s why people tend to say that all VIM users are jerks. They only see the ones that are.”
    Well then, those people are idiots for continuing to hang out with people they clearly don’t like. I’ve met hundreds of Vim users, and they’re all really cool people who don’t mind at all whether the people they meet use Emacs or Notepad++ or Eclipse or anything else. I’ve never in my life met the kind of Vim user you describe in your article. On the other hand, I know they exist because I know that every type of person exists somewhere, and I know that generalizing and saying that all Vim users are wonderful people would be just as stupid and ignorant as generalizing and saying that all Vim users are elitist smug jerks.

  39. Tucker

    @Dorin
    “Do you have a tl;dr version? Because seriously, nobody cares about your wall of text.”
    Clearly that’s not the case, as this is one of my shorter ones and you’ve responded to the majority of my others. But if you insist, here’s the short version:

    You’re only not being a jerk if there’s nobody to be a jerk to. As long as someone is being offended, you’re being a jerk.

    It’s not about trying or bothering or achieving, I just like talking on the internet.

    Every Vim user I’ve met is a wonderful person, but it’s just as stupid of someone to assume that all Vim users are horrible as it would be for me to assume they were all wonderful. Every rule you ever make about people has an exception.

  40. Dorin Lazăr

    @Tucker: “as long as someone is being offended, you’re being a jerk”

    bwhahaahhahahahahahahahha :))) Never laughed as hard as this. :)))))))))

    Please, say it again :))))))))))))))))))))))))

  41. dprandle

    It’s not about Vim or Emacs, its about what you are fastest with to develop. I am about 5 to 10 times faster with Emacs than VS 2015, and about 20 times faster than I am with Qt creator unless I am making a Qt GUI project.

  42. ImNotArobot

    I use vim every day at work. Really have tried to trade it for some IDE but I sort of hate all of them if it comes to C/C++. I felt Atom was greatly suited for my needs but it’s still buggy as hell and started to get really bloated in newer versions.

    Speaking of which. If author thinks vim/emacs are “difficult” and “counter-intuitive” he should try new Visual Studio (or any for that matter). It really goes beyond my reasoning how something that cost so much can be so bad for productivity, or maybe they should just drop C/C++ and other non-microsoft languages support and just stick with C# and all .Net thingies. Since as far as they’re concerned IDE works just fine.

    Still, I wouldn’t recommend vim for doing Java for example.

  43. Danny

    I’m learning VIM because I’m fed up of buggy, bloated IDEs that don’t specifically target the languages I use (C/C++ and some Objective C).

    I use Visual Studio for my day job. I’ve gotten it to the point where it’s usable but it took years of tweaking and trial and error and a lot of these tweaks break when we upgrade. Some of the plugins I rely on (like Visual Assist) are expensive commercial products. It’s a patchwork of overlapping extensions. The IDE is clearly built for the .net languages. It also freezes/crashes on a regular basis.

    XCode on the Mac used to be OK but since version 4 it’s been a joke. Apple have tried to streamline it to appeal to the lowest common denominator and it’s so focused on iOS development and swift that’s impossible to understand what’s really going on.

    CLion is written in Java so that’s con right out of the box.

    Eclipse is just slow and horrible.

    QtCreator had promise and was refreshing for a while but it’s still bare boned in a lot of areas and suffers from frequent crashes and questionable design choices. It’s obviously targeted at Qt/QML development. It’s also written with Qt (obviously) which isn’t great on Mac.

    I’ve actually been really impressed with VIM so far and some of the plugins like YouCompleteMe are just amazing.

Comments are closed.

Sprijină dorinlazar.ro

GDPR

Uniunea Europeană vrea să vă informez că nu vă folosesc datele personale pentru nimic. Și o fac aici.