If you are a programmer you are probably using an IDE to do your work. This usually comes at no surprise since it provides super helpful features like.
- Code assist
- Easy navigation
- API support for your language
Yet I am here to make a case that you should also master a text editor. When I say text editor I mean the likes of VIM, Emacs, Sublime, NOT Notepad, gedit, nano etc
Personally I am a VIM user as such all my examples will be in VIM.
The reasons are as many as there are developers so I will just give you my top reasons.
Some up points
Text editors have shortcuts for practically everything you need to do. An example would be ViM which provides not one but three modes: Visual, Command Mode, Normal Mode. Each of them with their own set of shortcuts. You literally never have to use the mouse if you can master its many features.
Avoid Repetitive Strain Injury
In general developers spend thousands of hours every year typing away at their keyboards. Savings of even 10% on time spend means hundreds of hours saved. This hours can mean the difference between healthy wrists and Carpal Tunnel Syndrome
Most text editors have a serious weight problems. But mostly of the good kind. That is they are tend to use modest amounts of the system resources. This makes them quite ideal to use on remote machines. Actually vi a predecessor of VIM is installed on practically all UNIX machines as default package. This means that you can edit files even on machines with small capacity like Raspberry.
Now I know you probably would argue with this point since most IDEs are also cross platform. But there is always that 10% difference in funcionality. For text editors this is usually not the case.
Almost all IDEs are custom made for a specific programming language with other languages, if any, added as an after thought. ie PHPStorm for PHP Netbeans for JAVA etc. Text editors are not. Now this may not seem like an advantage, however you are more likely than not working with different language sets and if you are now, you never know if you will be in your next project. Also at times you may need to write plain text. mvc. In such cases a text editor really shines.
No doubt most IDEs provide some form of macro functionality, but they are limited at best. Editors tend to have their own scripting languange vimscript and for editors that run in the terminal, they provide you with full access to the underlying shell. This means you could write a custom bash script to say sort out your csv files
1,$!sort -t',' -k2
This VIM Ex command would sort a CSV document based on the second column.
Look up `
I know this sounds superficial. However anyone who has taken the time to master a text editor is probably a good developer.
It would not be fair to say that text editors are perfect, infact they do have quite a number of downsides.
Steep Learning Curve
There literally are 400 page books on some of the most commonly used editors. If you are embarking on learning one, expect to use as much energy as you would use to learn a new programming language.
Now I know I mentioned this in the advantages but it is also a disadvantage. Typically from PHPStorm application I can start a debugger inspect classes, profile them and so much more that would be a pain in the behind to do on VIM.
Little Syntax Help
This is usually not a problem once you are used to the platform but before then it may make more sense to invest in a good IDE. For pure OOP language like JAVA this may be the only option.
Typically IDEs come bundled with all manner of templates for your language. This can help you speed up development and minimize errors. For text editors you are pretty much on your own.
I know some hardcore VIM/Emacs users are already critical of the downsides I have provided. So yes to make things clear you can setup quite a comfy environment with syntax highlighting, autocompleting and all other goodies usually reserved for IDEs but it would not be easy at all. Vanilla installation of VIM is practically useless as a primary development platform you need to tinker with your *.vimrc” file before you even write your first line of code!.
Choose a text editor and master it. If nothing else, you will have another tool in your toolbox.