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!
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.
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.
try
colorscheme desert
catch
endtry
set background=dark ```
# 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 ```
# 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.
```vim
" 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
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
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
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.