The Essential Vim Configuration

Sat Apr 20 2019

1 Vim Configuration

Stock Vim is pretty boring. The good news is that Vim has a very comprehensive configuration file which allows you to tweak it to your heart's content. To make changes to Vim you simply modify the ~/.vimrc file in your home directory. By adding simple commands this file you can easily change the way your text editor looks. Neat.

I attempted to create the smallest Vim configuration file which makes Vim usable enough for me to use as my daily text editor. I believe that it is important for everyone to know what their Vim configuration does. This knowledge will help ensure that you are only adding the things you want and that you can later customize it for your workflow. Although it may be tempting to download somebody else's massive Vim configuration, I argue that this can lead to problems down the road.

I want to mention that I don't use Vim as my primary IDE; I only use Vim as a text editor. I tend to use JetBrains tools on larger projects since they have amazing auto complete functionality, build tools, and comprehensive error detection. There are great Vim configurations out there on the internet; however, most tend to be a bit overkill for what most people want to do.

Alright, lets dive into my vim configuration!

2 Spell Check

autocmd BufRead,BufNewFile *.md setlocal spell spelllang=en_us
autocmd BufRead,BufNewFile *.txt setlocal spell spelllang=en_us

Since I am often an atrocious speller, having basic spell check abilities in Vim is a lifesaver. It does not make sense to have spell check enabled for most files since it would light up most programming files like a Christmas tree. I have my Vim configuration set to automatically enable spell check for markdown files and basic text files. If you need spell check in other files, you can enter the command ":set spell" to enable spell check for that file. To see the spelling recommendations, type "z=" when you are over a highlighted word.

3 Appearance

Adding colors to Vim is fun. The "syntax enable" command tells vim to highlight keywords in programming files and other structured files.

syntax enable

I would encourage everyone to look at the different color schemes available for Vim. I threw the color scheme command in a try-catch block to ensure that it does not crash Vim if you don't have the color scheme installed. By default the desert color scheme is installed; however, that is not always the case for community created Vim color schemes.

```vim try colorscheme desert catch endtry

set background=dark ```

4 Indentation and Tabs

Having your indentation settings squared away will save you a ton of time if you are doing any programming in Vim.

```vim "copy indentation from current line when making a new line set autoindent " Smart indentation when programming: indent after { set smartindent

set tabstop=4 " number of spaces per tab set expandtab " convert tabs to spaces set shiftwidth=4 " set a tab press equal to 4 spaces ```

5 Useful UI Tweaks

These are three UI tweaks that I find really useful to have, some people may have different opinions on these. Seeing line numbers is useful since programming errors typically just tells you what line your program went up in flames. The cursor line is useful since it allows you to easily to find your place in the file -- this may be a bit too much for some people.

I like to keep every line under 80 characters long for technical files, having a visual queue for this is helpful. Some people prefer to just use the auto word wrap and keep their lines as long as they like. I like to keep to the 80 character limit and explicitly choose where I cut each line. Some of my university classes mandate the 80 character limit and take points off if you don't follow it.

" Set Line Numbers to show "
set number

" Highlights the entire current line with a underscor "
set cursorline

" Displays a red bar at 80 characters "
set colorcolumn=80

6 Searching and Auto Complete

This these configurations make searching in Vim less painful.

" search as characters are entered "
set incsearch
" highlight matched characters "
set hlsearch

" Ignore case when searching "
set ignorecase

These configurations will make command completion easier by showing an auto-complete menu when you press tab.

" Shows a auto complete menu when you are typing a command "
set wildmenu
set wildignorecase " ignore case for auto complete
Vim auto complete
Vim auto complete

7 Useful Things to Have

There is nothing too earth shattering in this section, just things that might save you some time. Enabling mouse support is a really interesting configuration. When enabled, this allows you to select text and jump between different locations with your mouse.

" Enables mouse support "
set mouse=a

"Disable ding sound on error, flashes cursor instead "
set visualbell

" Display ruler on bottom right -- should be there by default "
set ruler

" Auto updates file if an external source edits the file "
set autoread

" Improves performance by only redrawing screen when needed "
set lazyredraw

Setting your file format is always a good idea for compatibility.

" Set utf8 as standard encoding and en_US as the standard language "
set encoding=utf8

" Use Unix as the standard file type "
set ffs=unix,dos,mac

8 Wrapping it up

I hope that this quick blog post inspired you to maintain your own Vim configuration file. You can find my current configuration files in my random scripts repository.