Cláudio Ribeiro

@claudio.santos.ribeiro

Modern Day Vim

When talking about Vim, most people see it as this old, obsolete piece of software from the last century.

And while Vim is indeed from last century, it has been able to keep reinventing itself throughout the years to keep itself relevant.

The last couple of iterations of Vim (Vim 8+ and Neovim) have finally adopted some very useful and needed functionalities. But before we start talking about functionalities, let’s take a quick dive into the story that brought us to this time.

History

In 2014, a couple of Vim community members, unhappy with how their efforts to refactor and modernize the codebase was not getting any support, decided to start the Neovim project.

The Neovim official logo.

They forked the Vim project (the beauty of Open Source!), refactored the codebase and added a couple of new, highly expected functionalities to it. On the flipside, they did drop support for some older, very niche platforms in order to accommodate the newer code.

Neovim had a huge success in the community and as a result, the original Vim project, maintained by Vims creator Bram Moolenar, had to implement some of these new functionalities in order to keep up with this new “competitor”.

This brings us to this day. Today we can choose between two different modern Vim distributions, Vim 8+ and Neovim.

New functionalities

Early in this piece, we talked about new, much-needed functionality that was implemented in these new Vim versions. But what are those? For the sake of time, yours and mine, let’s focus on two of the most important ones:

Asynchronous execution

In classic Vim distributions (7-) all plugin code runs synchronously. This means that if any plugin code is executing, Vim is essentially frozen.

With the advent of asynchronous execution, things like real-time syntax checking, spell checking or auto-completion became available. In the past, any of this tasks needed to be triggered by an extra action.

Nowadays, thanks to asynchrounous execution in Vim, plugins like deoplete and ale help programmers everywhere in the world be even more productive with Vim.

A.L.E Asynchronous Linting Engine plugin for Vim.

Terminal

Another big one. In the past, having to use a screen manager like screen or tmux was almost a given when using Vim in conjunction with terminal actions. It was either a screen manager or having to quit Vim anytime we wanted to use the terminal. Having two terminal windows was also a common solution to this problem.

Since the launch of Neovim, finally, we have terminal emulation inside Vim. This allows us to use the terminal inside a Vim buffer and proceed with our work in a different one. Also, workflows like having email, code, chat and other applications running inside the same Vim instance is now possible.

Conclusion

Both of these functionalities are key to unlocking a lot of new and cool possibilities with Vim. That’s why I think we may be just tipping the iceberg right now. Plugins will keep evolving and taking advantage of the new features. The future looks bright for Vim users!

It’s just the beginning for Vim!

How about you? what do you think of the new Modern Vim functionalities and usage? What is still missing and what can we finally build with it? Let me know in the comments below!

Want to learn more about Vim? Want to learn how to use it as an IDE? Checkout my new book An IDE Called Vim. It has everything from basic Vim usage to file finding, auto-completion, file manager and more.

More by Cláudio Ribeiro

Topics of interest

More Related Stories