When my dev universe would have a center, it would be vim.
When I started developing software, I used Visual Studio for writing C# code, and Eclipse for Java. I thought, no one is writing code with a simple editor.
Visual Studio is a mighty tool, with a lot of features,
which helps you getting speed up your development skills.
It was completely ok at this time.
When you are working with languages, using a kind of project files like a *.csproj
or *.sln
, IDEs are very helpfull.
Goto definition, find references, refactor files and many other features I've used for years.
But you also get thinks like vendor lock in and black magic.
Moving away from .net and the JVM make things easier. Other langages/frameworks like elixir, erlang, python, haskell, typescript, react or angular are less IDE agnostic.
So the question is: How does a editor based dev environment look like?
You can find vim or at least vi on almost every unix like systems. It may be not installed by default, but can usually be installed very quickly.
Many system tools like less have a kind of vim navigation implemented. Other tools like the file manager ranger have vi key bindings.
Before we extend vim, let's take a look at some functionalities that are valid for all vim installations.
Vim is out there for decades now, but some years a go neovim has started to rise. Neovim or not depends highly on your expectation, what you want to do with your editor.
Even for a small configuration, it makes sense to split up your configuration in multiple files. There are configuration settings for vim itself, configs for plugins and so on. You can setup vim almost everything what you like.
At the end we'll take a look at the changes. It is important, that you can understand your config, and that you can live with your config. Many thinks in vim work out of the box.
Like gardening, you have to take care from time to time.
You can find my current NeoVim configuration here
When you get used to the vim key bindings you might want to use it in other places.