Bram Moolenaar Discusses Developing Vim, How He Uses It, and Version 8
hostingadvice.com
hostingadvice.com
The article also heavily implies that Bram is the sole and only developer, and mentions that vim has had four updates since 2006. Both of these are true only up to extremely narrow interpretation, and not what I would expect from an article purporting to interview and describe a project maintainer and the project.
Threads here imply that NeoVim has a lot more traction and capabilities than Vim, yet it might as well not exist for all that we don't hear about it.
> that'll be the end of old Vim
To be frank, no, it won't. Not so long as Vim is installed by default, and holds the name Vim. NeoVim can't even simply replace Vim as the default, since it works differently (the changed configuration path, for one), and no longer works on all of the platforms that operating systems are installed upon (even if intentionally).
Vim just works. Until that is no longer the case, NeoVim will have a hard time gaining traction outside of those who are already waving its flag.
That said, I appreciate NeoVim - if for nothing else - for prompting Bram to realize there are more usecases. But I would argue that its time has passed, as bright as that time was.
It should be said that people who use Neovim often use the word Vim to keep it understandable and not seem annoying.
Something about this comment (perhaps the above quote) makes me think that perhaps neovim will be to vim, what vim is to vi...
Not suggesting one way is better or worse, but I think it's interesting.
The main advantage on the other hand is that my friend stopped bothering me about having to switch to neovim, which I guess is a non-issue for most. Now he's trying to get me on to zsh.
$ git clone <<repository_url>> $HOME/config
$ ln -sf $HOME/config/vim/vimrc $HOME/.vimrcI would guess neovim isn't even on the radar of most vim users. I don't see neovim surpassing vim any time soon, personally.
I love neovim, but the idea that "most people use nvim" or "vim is dying" is just wrong. Though I really do think nvim's development philosophy will lead to better results than Moolenaar's.
EDIT: For the sake of being equal-opportunity, you can do the same thing in emacs with make-comint, even down to having it as an operator if you're using evil-mode. Y'know, whatever you're into.
[0]: https://gist.github.com/Wibjarm/5ae4c4da57bd034d15123cd8edad...
I think Neovim also has a pluggable engine, so IDE vim emulators can simply include that portion rather than implementing the functionality per platform.
Edit: Forgot to mention, many of the improvements in vim 8 were clearly in reaction to Neovim's innovations. Both projects benefit from the other, this isn't a fight to the death.
Neovim's embedded terminal also works great and is something vim doesn't have.
Neovim is simple to try out because it's a drop-in replacement--all your old plugins will likely work out of the box, along with your .vimrc.
There are numerous improvements and features but I'll not talk about them. It has the momentum. Hundreds of developers are contributing to it. That should be the biggest reason to switch as it directly means Neovim will be much healthier than Vim which lacks the momentum.
If you want to know more about what exactly Neovim is doing on the technical side, I suggest you read up the 7 newsletters [0] since the inception of Neovim.
I'm not arguing that there are no good reasons to try Neovim. I just don't see any logic in your argument. You speak about loosely defined "health" and "momentum" as if there was a clear link between software quality and amount of buzz around the project.
It's not like Neovim (or any open source project) is an open house where anyone can come, throw some code over the wall and get it merged. Like any big project (Vim included), it is being maintained by a set of core responsible developers who know better. Neovim has a huge focus on automated tests and CI also. I don't see any reason why a big contributor base should make the end product worse.
> I just don't see any logic in your argument. You speak about loosely defined "health" and "momentum" as if there was a clear link between software quality and amount of buzz around the project.
Of course there is. Look at Linux, ReactJS, Docker, Kubernetes, Ubuntu, Firefox. The more momentum a project has, the more contributions it gets. Open source projects succeed because of the community around them.
GNU Hurd was not able to gather momentum and look where it is today. Contributors flocked to Linux so it flourished.
that's not disputed. the question is, what specific impacts do these contributions have on me, the user? why should i, a user of vim, switch to neovim?
It feels faster to me, but I haven't compared to vim 8. I don't use any plugins doing work in the background, so that's not the difference here.
Would vim 8 have async if neovim did not exist? No, because it was fine without it.
Point is I use all three all the time, and I fully expect to continue doing that until world hunger or me ends.
"I am super surprised that everybody talks about Vim 8 but almost nobody mentions that...
- Bram Moolenaar did the last major version ten years ago
- The recent years of Vim's development were almost stalling
- Bram publicly questioned the Neovim team's efforts creating a fork and bringing new essential stuff like async to Vim—he even made kind of fun of them
After Neovim came out and has been developed at fast pace, Bram surprisingly presents Vim 8 with the stuff we wanted which before he decided against—all the stuff Neovim did and of course incompatible to the fork.
Bram's decision on being incompatible should be challenged and discussed, would love to hear his thoughts. Since no money is involved, his decision feels even more awkward, why not welcome competition or potential contributors, being a team player, work together or merge? Or is it Bram's injured pride, the fear of getting irrelevant with some piece of ancient software?
Whatever 'meaningful reasons' Bram chose not to support a fork, now we are left with incompatible Vim variants which damage the entire Vim ecosystem. I guess that most distributions will package Vim 8 with their distributions, just because not everybody has followed all the happenings, and Vim 8 sounds like a solid choice, like going with the mainstream. So, Vim 8 might get the next standard and an awesome fork could die which I find sad. The Neovim team has been disrupting, they went ahead and it's a community developed software which is a huge differentiator to Bram's work and codebase of controversial quality.
What are your thoughts? Should we support both versions and should we write plugins for both or focus on one? Or is competition good and the Neovim team will deliver more and prove that still a community developed Neovim will outperform Vim in the long run?
Don't get me wrong, this isn't a rant, Bram created with Vim an fantastic piece of software—this is about the question how we should keep competition which helps the entire ecosystem so we don't end up with a dying fork and original Vim's development slowing down again for the next ten years. One idea is that all distributions should either still package old Vim 7.x only to let people decide themselves or always package both Vim 8 and Neovim together. But how should we get there?"
[1] https://www.reddit.com/r/vim/comments/52q4ul/about_vim_8_and...
Doing so might make Bram the 'better person', but I wouldn't blame him if it makes him a bit resentful.
No, the core contributors have not been outright in their criticisms, but IMO the fork itself shows a lack of respect for Bran's work and a lack of willingness to work with him to make Vim better. And now tarruda has stepped back from NeoVim, perhaps recognizing himself the cost that Bram bears.
By simply contributing to the tests - one of the outright critiques of Vim itself - they could have brought a lot more confidence to accepting such patches to Vim, but they chose to take their ball and play elsewhere instead.
What frustrates me the most is that instead of two branches of Vim that are moderately better (with the future of one of the branches being left behind), we could have had one which was much better.
vim's source code is really hard to test. Refactoring is needed to make code testable. That's true for every project that doesn't have tests yet. Another thing that makes it really hard to contribute to vim is that it supports operating systems that don't even exist anymore. I really don't feel like spinning a VM to make sure my changes don't break it on MS-DOS. I would rather send a PR that removes MS-DOS support than support that.
vim7 was a great improvement, and when I show people the time travel capabilities it blows their minds. But that was a long time ago. With the number of people to whom vim is very important, I'm surprised there isn't more results coming out of it.
Though maybe it is mostly that the core doesn't need to change and innovation can happen in the plugins? That is certainly true to some extent, but the async stuff was way overdue.
Regarding cost. Most developers need to be paid. I read [here](https://groups.yahoo.com/neo/groups/vimannounce/conversation...) that Google provided (some) funding to Bram. With neovim initially there were lots of new things (clean-up, async, terminal), I don't see a problem if there should be a bit of slowdown now. It's a team. I think it's robust. I prefer Neovim and occasionally use MacVim too, thus grateful to Bram also. No need for frustration imho (but I'm glad there is neovim:)
http://www.guidebookgallery.org/screenshots/amigaos204
Suffice to say, I have been a very happy emacs user since then ;)
I've used both Neovim.app and neovim-qt, but for reasons I've forgot, always end up back with MacVim.
Spacemacs is a huge complex mass of software on top of another. I could not digest it.
But, if you're already happy and productive with Spacemacs, it's unlikely you'll gain too much with Neovim.
You make it sound like vim is a new thing. It's 25 years old. And vi is 40 years old. If you've been writing code for longer than that, then damn. I'm impressed.
> prefer a software, where you do things intuitively without needing to first learn a shortcut for everything.
Like what? ctrl + c or ctrl + v? I doubt anyone has every figured those out by themselves. They either read the documentation, or someone showed them. Or do you mean intuitive as in right click on selected text, and then click the copy option? to each their own, but I couldn't stand wasting that much time every time I want to copy or paste something.
> accepting that I must use mouse and the editing process might take slightly longer.
Kind of answers my previous question. But for me, it's not that using the mouse wastes an extra second here and there. But it breaks the constant flow of typing on the keyboard. I don't like that constant start/stop of switching between the keyboard and mouse. But you don't mind it, and that's fine. (I'm just explaining from my perspective, why people would prefer something like vim)
> visually vim looks a bit ugly to me
Everyone's tastes are different, but I don't understand this. It's just a cursor, the text you are working with, and a small bar at the bottom with some info. How is that ugly? I mean you can change the font to whatever you like.
> Like what?
Like mouse-select, copy, paste. Once learned (however that happened, however long ago), it works across virtually all OS/gui combos (except gvim without knowing vim :), and you can immediately get something done. If you're dropped down into an environment, and have to get something done, using your slow but working general methods is pretty attractive, compared to having to learn a whole new way of merely copy/pasting before you've done a single thing.
Having used vi, and later vim, since the mid eighties, it can be painful for me to sit with someone as they mouse around cutting, copying and pasting. Watching someone reversing the order of two lines, or two characters, with a mouse is really frustrating. But they're getting something done, focusing on the task instead of the how, and beyond an offer to help them with vim if they like (they usually don't), I just sit there and accept.
I like my mouse, I'm just glad it's not all I have. But keep in mind, it's really frustrating for someone to have to listen to someone else telling them "you can do this a better way!". It's just meta distraction.
If that's all that vim could do better than traditional editors, then sure, stick with the traditional editors. Learning the complexity of vim is not worth it.
But those are incredibly trivial examples. vim can do so much more than that, in a really efficient and powerful way.
It's like demanding why one should use a battleship when a tricycle can also turn left and right, and can go forward and backwards. Yes, both can do that, but the battleship does far, far more, and there are reasons for its complexity.
If all you need is a tricycle, stick with the tricycle by all means. It's much more intuitive than a battleship. But some of us need far, far more power than that.
set mouse=a
set ttymouse=xterm2
You may have to enable your terminal's mouse support, if you're running Vim in a terminal.As the quote goes, "The only "intuitive" interface is the nipple. After that it's all learned."
The word you're looking for is "different". Vim (and Emacs) have different shortcuts than what you're used to from Windows. That's because they're much older. Vi and Emacs actually predate those "intuitive" shortcuts of yours.
And like with many things our industry standardized on these days, just because it's popular, doesn't mean it's not utter shit.
I did not know this saying, thanks. This explains why I cannot work on a GUI without a track point!
I used to scorn trackpoints until my friend told me he's very fond of them - that convinced me to give it a try. They're not bad. Play with one for 5 minutes (to the clock), and you'll be liking them more than touchpads :).
But many babies have trouble latching and the mother and baby need some assistance with the first few feeds - i.e. even nipples aren't totally intuitive.
Yes, but that is different, since in "normal" IDE, I dont need to use shortcuts for everything. In vim, you must learn how to select something, then how to copy it and how to paste it. In an IDE, I just select it with mouse, since in all other software I also select the exact same way, and shortcuts are only ctrl-c ctrl-v. Of course I also use other shortcuts, like F2 and ctrl-F2 for bookmarks, but normally I don't need them for everything.
The one thing I see people cite the most when they talk about not learning vim is "shortcuts". Vim's main editing interface is not "shortcuts". It's an editing language. There's a huge difference:
https://www.youtube.com/watch?v=ZdC2ysrP-XA
(not trying to flame or boast or anything, just trying to honestly communicate my feelings here, but) Anytime I use an editor that doesn't have a similar model, it feels like trying to carve wood with a coffee mug. If that simile sounds weird and doesn't make sense, that's how it feels.
The second argument I hear is plugin/ide functionality. You can get syntax highlighting, linting, VCS integration, anything from the shell, C-Tags, plugins, in vim but a lot of the refactor type IDE stuff isn't up to snuff. I have a theory about this. In a regular IDE, refactoring manually is a pain point. This means the auto-refactor tools are more polished in IDEs. I do as many refactors that could be automated as any other programmer, but its not a pain point because manually refactoring in vim takes only marginally more thought/input than automatically refactoring in an IDE.
Not saying that IDE refactoring isn't better (it is), but it isn't a big enough productivity improvement for me to fix that versus, say, refining my vim mappings, or practicing using the git plugin vs always using CLI git, or finally integrating the tmux plugin, etc.
Now... THAT said. The onboarding process for vim is pretty awful. You either start with an austere text editor and piece by piece build it into an amazing IDE/text editor, or you start with a premade blackbox config that you are unequiped to tweak.
People can use IDEs of their choice but use real Vim for all text operations or just stick to vim like me :)
That doesn't even apply for an IDE. As a vim user I always feel lost in those at first.
Any tool with a bit of power will require familiarization. You won't get the most out of that IDE unless you learn it.
Once you have the muscle memory, you use little thought on how to mechanically accomplish editing tasks, so the intent-to-accomplishment pathway is quite direct. In the end though this may not be the case for you, even if you earnestly dove into it.
I think the main difficulty with learning Vim is that its commands are like minimal "combinators" attached to arbitrary keys, and they take exploration/use to experientially bubble up these combinators to reach "comfort parity" with standard editors. In this way Vim is like the Lisp of editors.
About the ugliness, I agree. That's why I usually use a GUI version if I can. Plus it must be reiterated that Vim is more just a text editor, not an IDE like Visual Studio. If I could use VS+VsVim for everything, I would.
I understand how pleasant it is to use a tool that you spend a lot of time in day in and day out that is beautifully designed and just looks and feels nice. I remember slightly drooling at how some fonts in a competing editor seemed to have a subtle glow. I would have liked to have that in vim, and maybe it is possible. There are some other GUI improvements that could make it look/feel nicer.
However, as a power user give me function over form any day. It's like the choice between taking a long, beautiful path vs a short, ugly one. Or maybe the long beautiful path can't even go where the short ugly path goes.
Most of the time, I'm using my editor to get things done, and done as quickly and efficiently as possible. I'm not using it to admire how beautiful my editor looks or show its looks off to friends.
If I have a choice between getting my work done in 2 seconds vs 5 minutes, I'll choose the 2 seconds. There must have been hundreds of times in my life where I've done a really complex set of editing tasks in vim (or emacs) in a couple of minutes that I know would have taken me hours and driven me insane in a traditional editor.
After learning vim (and emacs) being forced to use a traditional editor is like cutting off my arms. It's like being forced to drive a car that can go only 5 miles an hour and only make 90 degree turns. Super painful and it may not even be capable of doing what you want, and certainly not quickly, efficiently, or pleasantly. Though certainly the more sophisticated traditional editors are far better than primitive traditional editors like notepad or nano (though some people still swear by those and will not even think of leaving them!).
It's really hard to get across to people only used to traditional editors the sheer power that vim and emacs have. It's something that you really have to be a veteran of these editors to fully appreciate -- and that usually takes years.
But people are different, some prefer it this way and some not. Even on the keyboard-driven side there is a clear divide between those who like single-mode interface of Emacs and those who love Vim and hate the pianist training of Emacs multi-finger actions.
I was never an IDE guy but PHPStorm is just too good, so much time saved.
Some people will love Java and accept its verbosity, I cannot.
Now I found out about lisps, ml, or even ruby and suddenly verbosity decreased.. you need less text edition.
And even more than that, focusing on algorithms and conceptual structures makes you forget about editing, formatting, or even live check etc. You often think deep beforehand. Then type a few things, because the design is more balanced.
What's less intuitive? caw stands for change a word. This selects the word and deletes it leaving you in insert mode to type something new.
Or: ctrl left arrow, shift, ctrl right arrow, delete key.
cit stands for change inside tag (html tag) or ci" for change inside the double quotes. dit and di" work just the same and vim can be thought of as a language to work on text.
If you have a few min to spare to see why it's so powerful and not that hard to learn you can google "you don't grok vim" to get a good stackoverflow response on it.
you can learn that intuition easily by learning 'vim language' , there are no shortcuts.
ViEmu though, is fantastic.
> “Just a simple ‘change this text into that text’ can be very laborious without a repeat command,” he said. “I haven’t seen another editor that provides this feature.”
Note that emacs has had the repeat command since version 20.3, released 19 August 1998[2]. I suppose that means he's not used it since then …
[1] https://www.gnu.org/software/emacs/manual/html_mono/efaq.htm...
C-x z is lame by comparison. Like, suppose you just typed in M-d h e l l o, and you press C-x z. It repeats the last command: self-insert-command. So you get an additional o. Thanks, Emacs!
More comedy: after you move the cursor, perhaps planning to use C-x z to insert another o elsewhere in the document, C-x z now replays the last cursor movement command.
(None of this is illogical, it's simply that C-x z is not, probably, very useful for editing text.)
With vim, on the other hand, pressing . would replay the word deletion, followed by the insertion of "hello". And you can use other motion commands to move about the file before repeating it again, allowing you to perform this operation in multiple places.
> Nice article about Vim on hostingadvice.com
> Releasing version 8.0 and getting close to the 25th birthday inspired the writing of this article. It contains links to relevant info and can be used to convince a friend to start using Vim. (Bram Moolenaar)
Personally, I'll rather use Vim as it focuses on stability and long-term compatibility. I have a huge respect for Braam for maintaining the project for so long. On the other hand, some of the Neovim's promises are just that, big dreams. Development on Neovim has slowed down and if you look at their git history, you'll see most of their commits are actually upstream patches taken from Vim.
I also see a lot of hate towards Vim source code and code styling, which is not that bad and I actually prefer it to Neovim's two spaces per indentation style.
Neovim: https://github.com/neovim/neovim/pulse/monthly
Vim: https://github.com/vim/vim/pulse/monthly
I don't know why people feel emotional about Vim. Neovim is just Vim with a breath of fresh air.