Why I love Vim
It was a bit awkward when I used Vim for first time. I was new joiner and I was doing pair programming with my senior teammate. I pulled my chair next to his desk and he started coding after quick discussion about what we should do, and boom!
Suddenly he opened up his terminal and started coding inside it. It was like text editor inside the terminal. I couldn't believe such thing exists and to be honest I was lost totally (As former .Net programmer and VS addict). His fascinating speed and comfort with the Vim, bashed me even harder.
It was shameful day for me but at same time I really wanted to code with Vim. So I started working with it like little toddler, and soon after it’s become my number one tool in my toolkit.
Vim is clone of vi an old Unix editor designed by Bram Moolenaar. you can read the whole history here but here I will try to explain why it became my favorite text editor.
Vim is light and portable
Vim is designed for command-line interface (there is GUI version as well), means that you can launch it with your terminal. Because of that it is very light, in fact there is no loading screen and buffer.
It is also easy to install Vim, most of terminal has Vi (father of Vim) by default and if you are Linux user you just can easily install it just do ‘sudo apt-get install Vim’.
So no more download and running through all ToC!
The ability of being part of command-line interface makes Vim a vital tool when you need to ssh to any server. Vim lets you edit any config or source file remotely and let’s face it since most of servers are headless (doesn’t have GUI), Vim is your best friend.
Customization and full of plugins
Vim is flexible and it can be extensively customized from small things such as showing line number to other things such as turning off annoying error sound! You can customize all and plus you can use all of Vim cool plugins out there.
Vim is heavily supported by community and in result there are tons of plugins that you can use. find the list here.
It changed the way I used to develop
I started coding using heavily featured IDEs like Visual Studio and NetBeans. These IDEs are great tools which for sure helps productivity and quality of any project but at same time they make you rely on them for your next move by depending on IntelliSense or code generation.
Because you don’t have such options in vim by default (you can have it by installing plugins), you can get yourself more familiar with your project files(It really helped me to think deeper about what I want code).
beside that automatically your brain tries to keep things small and simple and if you use git in lean way like me, it helps you to move your project forward by small steps and commit.
Sometimes, for running tasks such as test or getting dependencies you need to switch to your terminal from IDE and run the command from there.
With Vim you don’t need to switch, you just can run it with your Vim! lets say you need to run rake test task, you just can type `:! rake test` in command mode and it runs the task for you.
Vim really changed my perspective towards programming and I am thankful for that. Working with it still excites me and I am learning new things about it everyday. However I might need to use VS or atom when I need to deal with spaghetti enterprise code or a web app full of tags. Beside that I am really happy with my Vim.