Why I Switched From VS Code to Only Using the Terminal

kevkevinpal
The Startup
Published in
6 min readJul 16, 2020

Disclaimer I am still a young 22 year old fresh out of school at the time I’m writing this. Many of these things may be personal preference. Lastly, making these changes is not a simple feat and will be very frustrating to say the least

taken from https://code.visualstudio.com/

Not too long ago I would do most of my programming in VS Code (Unless I had to use someone else’s system then I would just use Vi/Vim). This is because VS Code had all the things I needed and more. VS Code was simply a jack of all trades.

VS Code has a terminal embedded to let me execute the commands I needed, there was a text editor and a file explorer inside it as well, hell it even has git functionality built into it. But despite all that I decided to move away from it and there are a few reasons why.

1). Forces you to learn the building blocks

One of the things that I feel you lose by using a GUI (Graphical User Interface) text editor is that you stop interacting with the cli (Command Line Interface) tools which are the building block to any GUI that says has the same functionality thus forcing you to use a more restrictive version of a tool that may have so much power. I will use git as an example say we need to pull a file from another remote from what I know VS Code does not have an easy way of doing so but in git it would just be.

git checkout <remote branch> -- <path/to/file>

Now lets look at that last point where we still sometimes have to use the terminal for certain commands and this is because the GUI interface is just built on terminal commands (ie that git command in VS Code is just built off the git cli). By taking a look at the git functionality in VS Code we can see that it provides many useful commands but it is difficult to do complex git actions.

If a complex action it is necessary it would take a longer time to figure out how to use the cli rather than if you were already accustomed to using the cli already.

While this may be a one off situation you may be surprised how often these scenarios may occur. Having power over the cli is a powerful skill to have because you can then take full advantage of the tool provided to you.

Now not only do you understand the fundamentals of how these commands work it allows you to build your own shortcuts as you see fit to improve your own work flow. For example when you start your day you may want to update your branches to what is on the master repo so you may create a short cut like

git fetch -a 
git checkout <branch name>
git pull origin <branch name>

Or literally any string of commands you want and attach a key word or alias that you can call when you want to execute that command. This is super powerful because now the commands work for you and this is only achievable by knowing how the core cli works.

2). Simplicity

I Don’t know about you but I’m the type of person where if I see a new tool or see a button I’m going to play or touch it till either A). It does something or B). It breaks. Since tools like VS Code provide so much functionality out the box it makes me prone to breaking things. This causes issues down the line when I’m not sure why some expected behavior is not happening anymore or new behaviors occur just because I was playing around pressing buttons.

take a look at this terminal and tell me if you had no prior experience how would you go about breaking it. It’s kinda hard right? you cant just smack at the buttons till something happens you have to do some research first

When looking at the cli the opposite is true because in order to make changes one has to know exactly what command they want to input or where to make a change. While you can still break things it is easier to find and fix the mistake you’ve made because it requires you to input the direction you want to go rather than picking from a list of options. Breaking things this way seems much more deliberate.

This also enforces again point 1). because it makes you navigate through the system and making changes rather than allowing a GUI to automatically make those changes for you.

3). Speed

Let’s say we want to delete the first and last word of this sentence

ew look at the dolphins gross

Now you can imagine the action you would normally take

Drag - Click - backspace*2 - drag - click - backspace*5

Seems like a lot of work for a simple task right. In vim all we would need to do is.

dw - $ - b - dw 

confusing? not really once you have it in muscle memory also they make sense

dw - delete word
$ - regex symbol for end of line
b - back

We can now see that just knowing these three commands makes preforming simple text edits a breeze compared to dragging a cursor across the screen.

There are also many more commands like this and you can make your own as well.

In short using the cursor is slower than keeping your hands on the keyboard so minimizing that motion as much as possible will lead you to having more time to focus on the actual problem at hand rather than where you need to place your cursor.

Disclaimer: VS Code does have the ability for short cuts but for me being able to click on the screen meant that I would not learn the short cuts as fast as I would if I were forced to use it

4). Customization

The ability to tailor your work flow to how you like it is something that at first takes time to get right but once is done feels like home.

Whether its by creating custom alias’s in myzsh or remapping keys in your vim config there are so many ways to tailor the experience to how you like to work. There is also limitless amounts of possible ways you can set up your system to work for you.

This is because this is not a closed box system if you don’t like how something functions just jump into the code and change it yourself. Most things can be changed from config files like .vimrc, .zshrc to name a few. But even if there’s no possible change from the config file nothing is stopping you from changing code around since you have the power to do so.

Like we mentioned in the first section we can map anything to any set of actions which makes our system work how we want it to.

Closing Thoughts

Now personally I don’t really care if someone uses one tool or the other, just use whatever helps you get the job done the best and quickest. But for me I found that by forcing myself out of my comfort zone and using tools that may have a higher learning curve to start ultimately made me a more productive person. Also there’s the plus side of cli tools making you feel more like a cyber hacker like in the movies :).

Also I only mentioned a few tools in this article but my core drivers are nvim with the tmux multiplexer, also using grep for searching through files.

If you want to reach out to me feel free to checkout www.kevinpallikunnel.com and send me an email I’d love to chat.

--

--