Hacker News new | ask | show | jobs
by kamaal 5057 days ago
When will be the day when this sort of a thing gets shipped with the default vim installation?

The reasons I say this is every time somebody brings up the apparent ancientness of vim/emacs people point to something like this. I agree that all this is doable, but you must realize tailoring a vanilla installation with plugins to do all this is really difficult for most programmers. Especially if you want newbies to start with using vim.

If people wanted to use an IDE, they would use an IDE- There are plenty available these days. All it takes is going to go to the eclipse website, and downloading one. Why in the world would any body spend hours(days?) hunting all these basic plugins which are must have for today's software development needs?

Somethings like auto complete in ST2 looks to just give what the user wants. In vim you would be doomed press ctrl-n as and when you need it, but it happens automatically with ST2.All these modern GUI based editors are basically these many tiny optimization on old concepts .There is also that file browser that gets opened by default on the left hand side. The minimap on the right hand side. The search functionality using ctrl-p. These are few tiny yet useful automations that should ship with vim/emacs by default. I see no reason why they shouldn't. Apart from trying to sell themselves as endlessly customizable editors, they must also do many of tiny day to day needs by default.

Things like package managers, a proper good looking GUI et al are must have things in any software tool these days. Arcane 80's style GUI, default tooling support for software development needs going two decades back is not going to fly.

5 comments

  Why in the world would any body spend hours(days?) hunting all these basic
  plugins which are must have for today's software development needs?
These plugins are "must haves" if you are used to using an IDE. But they are not prerequisities of creating good software. Proof: plenty of good software has been and is being created without such plugins.

You are used to the file browser on the left, the minimap on the right, the search function bound just so. So you want that. But not all vim users are used to that.

The simplicity of vim is what drew me. There aren't a hundred and one "project files" (whatever those are) added to any bit of code I want to work on. There aren't a hundred and one buttons everywhere. There is the code on the screen. Nothing else.

Adding lots of extra file-trees and variable-lists and computer-guessing-what-you-want-to-do in the default vim install seems like it would scare away more users from vim than it would draw. For the modern GUI kid (like me and I assume you), getting used to modes and the vim keybindings was hard enough. Let the user add windows and features at her own pace, as she gets comfortable.

One other thing before you write off the "arcane 80's style" editors:

The second fact that drew me to vim is that it was esteemed by men who I respected.

Look at the powerful minds that have built such beautiful things with vim and emacs. There are two explanations for their devotion to their editors:

1) They are used to vim/emacs. They like them because they are used to them.

2) They are technologists. They have an innate fascination with the novel, the bold, the capacity for an innovative idea to change everything. Yet even with this prejudice, they love truth enough not to sacrifice the old superior tool for the new, fashionable one.

After the first few frustrated sessions with vim, where I cursed at it for not behaving like a text editor "should" behave, I believed very strongly that explanation 1 must be true.

But the power (sorry, that's the right word) I feel when I fire up vim grows everyday. It grew today after reading this excellent blog post and discovering some new, wonderful plugins. And everyday I grow more convinced that explanation 2 drives the loyalty to vim.

You can live your life without phones, internet, buses, cars or any kind of modern technology.

And yes you will need them only if you have used them. Because people around a century back didn't need them.

You can still live in a jungle. But the question is, should you?

You can give yourself up to the Google ecosystem and live happily inside GMail, GCal, GDocs etc. You can do the same thing with Apple or Microsoft, but you can't easily mix and match between them.

You can pledge yourself to a single programming language. You can live and breathe Java all day and become a master of it and its tools and world views.

But the question is, should you? Should you give up the richness and flexibility of all that is out there and hedge your bets in ONE technology stack and ONE IDE?

Vim and Emacs and ST2 are language agnostic. The Unix command line is language agnostic. In fact, it is text editor agnostic, too. You can mix and match the tools and languages you like.

IDEs with all their richness are fairly confined to a very narrow set of languages and methodologies and ways of thinking about problems.

Both choices offer different benefits and different downsides. Make your choice wisely.

I got your point. I explained the same thing on my summary portion of my blog. I left eclipse for Vim was after seeing its advantage of basic mode based editing. All others are just additions, you can add them when ever required. Check this out also about my detailed explanation of how did that happen to me - http://haridas.in/how-i-came-in-to-vim.html
If you're coming from Eclipse, did you check out IntelliJ's VIM plugin?

I'm a decades-old Vim user, but I still fire up IntelliJ for Java Android development. Java is less painful in an IDE that was designed for it, and with the IntelliJ plugin it's like having one's cake and eating it too.

Cool. Right now I'm not in the java world, but it will be helpful to my friends.
Hah. Very nice :) But yeah, it's hard to talk about vim without coming across as some kind of religious fanatic joining a new cult.

Your link maybe does the best job I've ever seen. This is day 1:

  *monday*
  “eclipse sure is neat.”
  “but that weird guy with the neckbeard at work looks really fast with vim,
  I should try it!”
  “alright! I got gvim. this doesn’t look bad. there are even menus!!!”
  “wait what? where’d my text go? wait. undo. no.”
  “:help”
  “:q!!!!!”
  .
  .
  revels in the opiatic relief of autocompleting boilerplate
  in eclipse for the rest of the day
>tailoring a vanilla installation

>newbies to start with using vim.

Sorry, but what? The very last thing a newbie programmer should be doing is configuring plugins. A newbie programmer doesn't need plugins. They only serve to confuse. Which is also why the very worst thing you can do to a newbie programmer is to give them an IDE.

vim is perfect for newbies. It just works, and the defaults are mostly sane[1]. Yes, there's a slight learning curve, but you can do basic text editing (enough for writing any Hello World program and then some) after taking 20 minutes to do vimtutor, and from then on it just gets more powerful.

You can add plugins when you actually need them. A newbie doesn't need plugins. They just need a good text editor - and vim (and Emacs) is the best you can get. No fancy editor or IDE of the week will ever change that. Not Eclipse, not Visual Studio, not ST2, nor whatever else.

Another thing: I refuse to take anyone serious who even brings up the "argument" of "arcance 80's style GUIs" and/or "modern GUIs". Why? Because in the overwhelming majority of cases, that means "vim doesn't have drop shadows, it sucks"[2] (or some variation of that).

Nobody even knows what a "modern" GUI is supposed to be. It's just a fuzzy way to say "I don't actually have any tangible arguments against $thing so I'm just going to accuse it of not fullfilling unwritten, non-existing standards that no one has ever agreed on.". Or in other words, bullshitting.

[1]: Really, the only things I did when I started with vim was to ":set number" and ":syntax on", then put that in the .vimrc. That's it. Everything else was added on demand.

[2]: Yes, I actually had someone trying to argue this to me. I closed the comment page and burst into laughter.

My god, you make it look as though using vim is a goal for a programmer. While the actual goal is to use something like vim to do a job.

The original argument is modern day editors aim to automate most recurring demands of a programmer out of the box.

The point in most pro-vim/emacs arguments it to make you take the most difficult route to achieving text manipulation tasks. Hoping that will make you good at text manipulation over time. While the point is you are trying to gain a expertise which you don't need.

Going by that argument you don't need any kind of an modern GUI ever. Why ATM's? Why graphically friendly email clients? And you could go like this for nearly everything.

You need modern editors because you always need to take steps forward in the usability game.

Oh please, stop these ridiculous appeals to novelty and hyperboles of things I haven't said.

You keep spouting "modern" without any sense whatsoever. The fact that vi(m) and Emacs are both veteran pieces of software does not somehow reduce their usability. They are still the most usable and powerful editors on this planet. Yes, they have a (steeper) learning curve. No, that isn't a bad thing. Please stop conflating usability with accessibility[1].

>The point in most pro-vim/emacs arguments it to make you take the most difficult route to achieving text manipulation tasks.

You don't make any sense at all. If anything, vi is the easiest route to achieving text manipulation tasks. The better you know it, the easier, the faster and the more efficient it becomes.

>Going by that argument you don't need any kind of an modern GUI ever.

By what argument? Your own confused interpretation of what I haven't said?

I said that there isn't even such a thing as a "modern GUI". It's an idiotic term that has no defined or agreed-upon meaning, and is thrown around as a pseudo-argument in discussions like this. It has no merit and can be dismissed as such.

[1]: I've made this point countless times in the past, in all sorts of different discussions about software. People keep on blabbering about how $software (like git, vi or just GNU/Linux in general) is unusable when they really just mean it's a bit more challenging to learn than, say, nano or gedit, completely ignoring the long term benefits.

Well said.
I respectfully disagree. Choosing to use a graphical IDE or a terminal based editor is a matter of personal preference; it's foolish to proclaim one or the other as universally superior. There are pros and cons to each, and they are fundamentally different in many ways.

Yes, vim is old, but it's not a web browser - it's for manipulating text (or in our case, code), the process of which has changed little in the last 30 years.

Before writing vim off, pair program with someone who is masterful at it and you'll see some if its many pros first hand. Yes, this may take (quite literally) years of use and customization to achieve, but no, it's certainly not something you can write off as obsolete or inferior.

This is the issue, if you a need a vim master and a couple of pair programming session to learn what vim is, you are doing it the wrong way.

Why is it wrong to enable auto suggest by default? Or the file browser or minimap by default? Why not enable directory level grep/search by default? Why do you need to learn two decade old arcane 3 fold command sets for simple search-replace. Why aren't line numbers turned on by default? Why not provide tabbing by default?

None of what I have mentioned is something uncommon to developers. Every developer needs to this almost everyday with his code.

If you see modern day GUI based editors, they are basically designed to solve these daily little recurring annoyances and made available to you out of the box without you have to do to too much of tinkering. Like everything needs of developers change with time.

Software usability is a very important aspect of software engineering.

My primary concern is in assuming the usage of difficult tools as geeky and cool. By merely learning how to use a two decade difficult to use tool doesn't make a person a great programmer.

I guess I'd fall into the "Unix as an IDE" camp, so I'm glad that by default Vim is "just" an editor. I think it's great fun to see how people have tricked out their Vim installations, but I confess I view those custom Vim setups kind of like I do tricked out hot rods, or Burning Man art installations. I hope people never stop producing arbitrarily complex Vim installations, because software can be art.
I agree. I also prefer the approach of making an IDE "vim-like" by adding vim keybindings and such, rather than going the other way round.