why vim?

vim is vi(improved)

vim is a powerful way that allows you to transform your thoughts into action in as little keystrokes as possible. In fact, the subtitle of the book Practical Vim is this:

“Edit Text at the Speed of Thought”

With that said, vim has a steep learning curve that often does not feel worth it if you are used to Command+c to copy, Command+v to paste and you like thinking while moving your mouse.

Its mostly mindful awareness

If vim has done one thing, its made me very cognizant of what I am trying to achieve. The emphasis on achieving as much in as little time, and the freeing of mental overhead from reaching all over the place, allows me to approach programming much more mindfully.

But as of today, “How to exit the Vim editor?” has 2644 votes on Stack Overflow!!!

 

Heres a tiny walkthrough.

vim intro walkthrough

Step 1: change var to const

To change var to const you simply need to type: ceconst<Esc>

where: c means change, e means until end of word, <Esc> takes you out of insert mode

 

Step 2: delete the word function

To get to the word “function” type: ff

where: f means find, the second f is the letter to find

To delete a word: de

 

Step 3: add an arrow behind the opening curly brace

To get to the char “{” type: f{

To insert “=>” type: i=><Esc>

where: i means insert, => is your input

 

Notice that we never touch the mouse! We never reach for the arrow keys.

In fact with the right shortcuts, you never take your fingers off the home keys. It’s really hard to state how much this frees your mind.

Until Elon Musk’s Neurolink allows as to change modes AND input text by brain implants, vim will be how to change text.

 

Setting up .vim directory

vim settings are important for every vim user and you shouldn’t have to use a vanilla vim setup just because you ssh into a VM or set up a new computer. Since most vim settings have zero personal data, the  most convenient thing to do is to upload your vim directory+settings onto the internet for the world to bask in your glory and for you to pull down to any computer.

Creating a .vim directory

In your root directory, create a ~/.vim directory with an initial ~/.vim/.vimrc file

$ mkdir ~/.vim && touch ~/.vimrc

Feel free to add any vim settings you like, heres a couple to start

" This turns on syntax highlighting
syntax on
" This maps jj to the <Ecs> key in insert mode
:imap jj <Ecs>

Your directory should look like this

| .vim

|– .vimrc

Symlinks

vim will source the file ~/.vimrc and since our real config is located in our .vim directory, we will need to create a symlink that links our ~/.vim/.vimrc to ~/.vimrc.

$ ln -s ~/.vim/vimrc ~/.vimrc

Once you run the line above, you will have a symlink in your root directory that points to your ~/.vim/.vimrc and any file changes you make to either will “update” on both.

Github

Its incredible to have your .vim directory uploaded to Github so create a new repository called .vim

Initialize your .vim directory, add the remote branch and push your first commit.

Check out my ongoing .vim at https://github.com/theptrk/.vim

vim: how to turn on syntax highlighting

Normal mode

How to turn on syntax highlighting for your current session

:syntax on

.vimrc configuration

How to default syntax to “on” for all vim sessions

Remember to always  back up your config files, simply add this to your .vimrc

syntax on

Try different colors

How to cycle through available color schemes for your current session

:colorscheme <Tab>

:colo <Tab> for short

How to change your default color scheme

If you want to change the syntax highlighting colors of your vim setup, the simplest way is to select a preloaded color scheme.

On Mac, your vim files are likely in /usr/share/vim/vim<version_number>/, with your version number being unique to your setup.

How to list your available color schemes:

ls /usr/share/vim/vim<version_number

These are my available colors:

Try a bunch of these colors and find the one you like.

How to set your color scheme

Add this to your ~/.vimrc

colorscheme darkblue

 

Thats it! See more at the docs