"I can almost guarantee that it would be easier to fix whatever it is you don't like about vim than to start from scratch."
That's just not true. I'm a huge vim fan, I've customized my vim a ton, I have maybe 30 installed plugins. But when I open Sublime Text and type "ctrl-p" to go to another file, it just works plain better than any vim plugin can achieve.
Vim is made to work on a terminal. Great for some people, lousy for people who want the vim model of text editing with a modern gui.
A few specific things that you simply can't fix in vim:
- Making pop-up boxes, a-la Sublime Text, that moves you to a new file. Simply cannot be implemented in a nice-looking way in vim.
- Making some fonts smaller or bigger, to display extra information that isn't code. Simply impossible to do, because vim is a one-size font. This alone is a huge limitation.
- Making a decent-looking code-folding system. The code folding in vim doesn't look good, and since you're limited to one font size and to only putting in characters, you're stuck with the very ugly way of doing things. I'm a huge fan of vim folding, and the way of controlling them is just amazing. Except for the way it looks, which is terrible.
Now, these aren't just "I want my editor to be pretty" issues. A lot of these things are functionally important to get working faster on your code.
> "But when I open Sublime Text and type "ctrl-p" to go to another file, it just works plain better than any vim plugin can achieve."
You are not talking about the same ST2 I've tried out. Mine was limited to files contained in "the project" (so none, if you just open a single file, not even nearby files) and the only way to open a a file outside of "the project" was to use the classic Ctrl+o. How "modern" that was!
> "Now, these aren't just "I want my editor to be pretty" issues. A lot of these things are functionally important to get working faster on your code."
But, somehow, all the issues in your list have something to do with looks and that's one of the most subjective subjects possible. RoundRects don't help anyone write better code faster: they help you feel better and more confident but nothing more. I'm actually a fan of minimalism and text-based interface and the "fixes" you want would be of no interest to me.
> "- Making pop-up boxes, a-la Sublime Text, that moves you to a new file. Simply cannot be implemented in a nice-looking way in vim."
I'd say that LustyExplorer looked quite good and now CtrlP both looks very good and does a lot more than ST2's Ctrl+P window.
> "- Making some fonts smaller or bigger, to display extra information that isn't code. Simply impossible to do, because vim is a one-size font. This alone is a huge limitation."
I fail to see how such a feature would make Vim or any editor better.
> "- Making a decent-looking code-folding system. The code folding in vim doesn't look good, and since you're limited to one font size and to only putting in characters, you're stuck with the very ugly way of doing things. I'm a huge fan of vim folding, and the way of controlling them is just amazing. Except for the way it looks, which is terrible."
Subjectivity again. How it looks is totally irrelevant: how it works is what matters. `za`, `zM`, `zR`, `zj` and friends are the important parts: add a nice gradient, a right-pointing shadowed arrow and rounded corners and you simply have the exact same feature… with a shiny look that suits your taste. Maybe not mine.
You wrote a large reply, so I feel I owe you a good response. Honestly, I feel it's kind of, let's say, interesting, that I have to defend things like "maybe we'd like more than one font size". Maybe it's worth the sacrifice for having vim retain the same look-and-feel in the terminal, but to outright think that variable font sizes are inherently useless in a software program? Whose primary purpose is to edit text, no less?
Still, here are some examples of more functional ways vim could be better. Most of these are related to visuals, yes, because that's the main thing that plugins can't change in vim.
Examples:
1. Code folding is there to make it easier to scan code. Vim's folds take up a lot of space, and aren't very easy to scan. Yes, this is subjective - it's possible that for you, it's the easiest to scan thing in the world. But for me, the way many modern editors work is better - have a simple, colored, "..." indicator at the end of the line that has a fold after it. Simple, easy to scan, doesn't take up any more lines on screen. Minimal, in the sense of UI.
2. Adding some kind of info in the margin. Most editors add some kind of way to see folds in the margin. This is usually kept very tight, since all you really need are some dashed-lines and a "+" sign, perhaps. Not possible with vim. The closest we have is "foldcolumn", which a) takes up a lot of space, and b) is less visually appearling, making it harder to understand or use. Other info is also sometimes added, not just folds.
3. The project opening. While I love ctrl-p, especially over the alternatives, it has several flaws. For example, it's very, noticeably, slow. And I'm on small projects, usually.
But here's the bigger issue: the way ctrl-p in Sublime works is more beautiful, but that's not the only advantage. It makes it easier to see what file you're going to open. It makes it easier by doing things like bold-ing the letters that it's matched. It makes it easier by making the filenames "REALLY BIG", but still giving you the details of the file's location in a smaller font.
There are really many more issues I can bring up, but these are the keys. In all honesty, vim is a bad choice for most people because, to get it to the level of what Sublime Text or other editors do out of the box, you have to spend months tweaking vim. This makes it irrelevant for the vast, vast majority of people, which is unfortunate, because it has text-editing capabilites that are simply unsurpassed by any other editor.
1. I've seen that "…". I think it's an horrible UI as it is always at different horizontal positions forcing me to move my eyes a lot more than necessary. That symbol is also almost completely devoid of information: the number of folded lines and a sample are often useful and I can't get that with "…". Except if I take my mouse and hover on that "…" to preview my 50 or 100 folded lines cramped in a huge ass popin. Contrast that with a regular fold in Vim: http://i.imgur.com/WXg1p.png
* it is easy to find
* it is easy to parse
* it shows the number of hidden lines
* it takes only one line
* its purpose is obvious
2. Vim as signs for errors and fold indicators, there are plugins that show marks, too. A "fold" sign in the gutter is mainly useful if it's hard to notice the fold in the editor space. Because it's hard to spot "…" folds you scan the gutter to locate folds. Because it's hard to miss a fold in vim, such an indicator is not needed. But Vim's foldcolumn not only shows the location of a fold: it provides an additional information that no right pointing triangle or boxed plus sign can show: the depth of the fold. Anyway, if you only care about seeing folds in the gutter, well… that's covered too by the simple fact that the whole line is highligted.
3. I also work on small projects (under 50/60 files without assets) and everything in CtrlP is instantaneous. We obviously have very different æsthetic preferences: I find everything in ST2 absolutely hideous. The font size tricks in ctrl+p you describe are both very arbitrary, simplistic and distracting. Vim's CtrlP shows the paths of the matched files, highlights the matched characters and systematically puts the default match at the bottom. There's nothing hard about it: simple, clear, fast… and, again, it has lots more features than its ST2 "counterpart". Not to forget Vim's native wildmenu which also shows the path and highlights your choice in a very readable manner.
I don't agree with your last paragraph as well.
I really really really don't care if or why people don't like Vim. I chose it over dozens of editors/IDE because it worked for me: not because it was fashionable, not because I mistook it for something else. I have no stake in this, I don't root for Vim, I don't want more users, I don't want less users, I just don't care if it's easier, harder or whatever. I'm perfectly fine with Vim in its current state and I'm persuaded it doesn't need any of those pseudo-refinements. Vim is the work of love of a bunch of talented programmers with an unbelievable ecosystem. It's free in every meaning of the world, it's old and a lot more powerful than any other editor, with the possible exception of Emacs. Its core developpers and, I believe, many users certainly prefer Vim as it is and don't care at all about making it easier for new users. More attention, more users… all of that is necessary for Panic, MacRabbit, Macromates or SublimeHQ because that's the only way they can survive. They desperately need differentiating "features" to attract new users or justify license upgrades and make more money: skeuomorphic UI, rounded rectangles, gradients, transitions, integration with this or that trendy language or framework and so on. None of that matters to Vim and its developers and lots of its users.
ST2's author is probably happier each time a Vim user switches to ST2 but Bram Moolenaar most certainly doesn't give a flying fuck. That's very important and that has to be considered when talking about cosmetic "enhancements" or "fixes" to Vim.
I wonder, do you agree with the statement: "If someone remade vim so that you can have variable fonts and some more gui goodness, that would be a good thing"? I'm not saying changing the core of vim. I'm saying, let plugins have more options in terms of how they draw things on-screen? Because, if it's optional, I can't see why that would bother anyone. Unless you think it is simply impossible for anything other than the plain-text, single-font way vim works to have any advantage.
We have stylistic differences, obviously. I've used both vim as my main editor, complete with a very customized .vimrc, as well as dozens of other editors (less heavily), including Sublime Text. I love vim, and it works wonders for me. But I think it's odd that you literally find nothing wrong with vim or nothing that can be improved.
As for "getting users", I understand that you personally don't care. I care only inasmuch as I think the basic way of editing text that vim gives users is so much better, that I wish more people used it. I also care because I'd love something like Sublime, with a proper vim mode that actually manages to do most of what vim does, and that doesn't exist.
> "do you agree with the statement: "If someone remade vim so that you can have variable fonts and some more gui goodness, that would be a good thing"?"
I don't think I would use it. But I'm curious by nature and I would probably try it out anyway, just like I did with all the ST2/Coda/Espresso/Vico/Chocolat/HappyEdit/Whatever that popped up in the last 2 to 3 years.
At some point in the past, I felt limited as a TextMate user and I "needed" a change which I happily found in Vim. The benefits, for me, were/are absolutely huge, but I would switch again if the benefits were comparable. Cosmetic changes are not enough for me obviously and, IMO, the things you propose would a) not provide any noticeable benefit and b) work only in GVim/MacVim which makes no sense at all considering Vim's philosophy.
But putting all of your ideas into a new project… I'd say "Go for it!". Keep in mind, though, that for a lot of Vim users the ability to run Vim in a terminal is absolutely mandatory. A shiny new GUI would be worse than useless.
The "optional" part of your comment is actually very important. Adding all those things as options would take a lot of time and effort and probably a lot of rewriting for… almost nothing.
> "But I think it's odd that you literally find nothing wrong with vim or nothing that can be improved."
I think that the problems you point out are not problems at all and thus, that they don't need fixing. Vim has a bunch of low-level limitations/problems that I would like to see fixed before making it prettier: archaic keypress handling, lack of multithreading, limited RTL support, dumb terminal in the GUI version, wonky and slow syntax engine, poor external interface…
These things are way more important, IMO, than changing the color of the bike shed.
I hated every second I spent in ST2, even more with vintage mode enabled and vintageEx installed. I really don't want Vim to go that direction and, I believe, its author doesn't want that either.
This is probably a hallmark of any sufficiently large, complex and popular software. There will be completely divergent (or at least different enough to believe themselves so) subsets of users with different use requirements. Without careful negotiation this can lead to deadlock.
Objecting to a feature enhancement that has no negative effect on your own preferred usage is probably not the best use of anyone's time. Exceptions can and should be made for changes which might accidentally affect your core usage though, such as changing the default rendering.
That said, I imagine any change in vim is going to get enough exercise that bugs will be found fairly quickly.
As for this specific feature, I imagine it would be some text hinting similar to coloring, but it would be ignored in console use, leaving gvim to do different font rendering based on hints.
I don't object out of spite. I'm certainly not the best or most experienced programmer here but I have an idea of the depth and spread of the changes that the proposed enhancements would require. The usefulness of these enhancements must be weighted against their impact on the code base and (and that's very important in Vim's case) the philosophy of the project.
Incorporating all these ideas into a new project, on the other hand…
That's just not true. I'm a huge vim fan, I've customized my vim a ton, I have maybe 30 installed plugins. But when I open Sublime Text and type "ctrl-p" to go to another file, it just works plain better than any vim plugin can achieve.
Vim is made to work on a terminal. Great for some people, lousy for people who want the vim model of text editing with a modern gui.
A few specific things that you simply can't fix in vim:
- Making pop-up boxes, a-la Sublime Text, that moves you to a new file. Simply cannot be implemented in a nice-looking way in vim.
- Making some fonts smaller or bigger, to display extra information that isn't code. Simply impossible to do, because vim is a one-size font. This alone is a huge limitation.
- Making a decent-looking code-folding system. The code folding in vim doesn't look good, and since you're limited to one font size and to only putting in characters, you're stuck with the very ugly way of doing things. I'm a huge fan of vim folding, and the way of controlling them is just amazing. Except for the way it looks, which is terrible.
Now, these aren't just "I want my editor to be pretty" issues. A lot of these things are functionally important to get working faster on your code.