|
|
@ -0,0 +1,188 @@ |
|
|
|
# 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! |
|
|
|
|
|
|
|
|
|
|
|
# Spell Check |
|
|
|
|
|
|
|
```vim |
|
|
|
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. |
|
|
|
|
|
|
|
|
|
|
|
# Appearance |
|
|
|
|
|
|
|
Adding colors to Vim is fun. |
|
|
|
The "syntax enable" command tells vim to highlight keywords in programming |
|
|
|
files and other structured files. |
|
|
|
|
|
|
|
```vim |
|
|
|
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](http://vimcolors.com/) Vim color schemes. |
|
|
|
|
|
|
|
```vim |
|
|
|
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 |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
# Searching and Auto Complete |
|
|
|
|
|
|
|
This these configurations make searching in Vim less painful. |
|
|
|
|
|
|
|
```vim |
|
|
|
" 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. |
|
|
|
|
|
|
|
```vim |
|
|
|
" Shows a auto complete menu when you are typing a command " |
|
|
|
set wildmenu |
|
|
|
set wildignorecase " ignore case for auto complete |
|
|
|
``` |
|
|
|
|
|
|
|
![Vim auto complete](media/vim/commandCompletion.png) |
|
|
|
|
|
|
|
|
|
|
|
# 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. |
|
|
|
|
|
|
|
```vim |
|
|
|
" 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. |
|
|
|
|
|
|
|
```vim |
|
|
|
" 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 |
|
|
|
``` |
|
|
|
|
|
|
|
# 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](https://github.com/jrtechs/RandomScripts/tree/master/config). |