When customizing your .vimrc, I want to share some advice to you.
Only add lines that you understand.
A lot of people like to customize their .vimrc file. There are a lot of posts on the internet about this and most don’t really explain what each line does. I ran into an issue blindly following a blog post. I was having issues with my colors. I Googled for hours trying to find the lines to get my vim colors working, and nothing worked. I finally decided to reset everything and take it step-by-step. This is my only warning to you, even for this post. Be careful.
I’m breaking this down as if you are completely new to vim. If you know how to install a theme, skip to the second section. That’s where I start customizing the .vimrc file.
If you have any suggestions that I should add or change, let me know via social media located in the footer.
Here are the sections that I will be disussing:
Installing Color Themes
If this isn’t your first time installing a vim color theme, skip to the next section Color Theme.
I really like the Bad Wolf color theme, but if you want the light verison it’s called Good Wolf. If you don’t like Bad Wolf, find a theme you like and look for it’s <theme_name>.vim
file.
To install the Bad Wolf color theme, download the badwolf.vim
file from their GitHub:
# wget https://raw.githubusercontent.com/sjl/badwolf/master/colors/badwolf.vim
If this is your first time installing a color theme for vim, you need to make a color theme directory:
# mkdir ~/.vim
# mkdir ~/.vim/colors/
Move badwolf.vim
to the ~/.vim/colors/
folder:
# mv badwolf.vim ~/.vim/colors/
Now, onto the customizations!
Color Theme
I highly recommend adding comments to each line in your .vimrc file. There have been times where I went back to edit it a few months later and completely forgot what a line does.
syntax enable " enable syntax processing
colorscheme badwolf " sets the color scheme
syntax enable
is fairly straightforward. It enables syntax highlighting and processing. colorscheme <theme>
sets your color theme as any of the ones inside of your ~/.vim/colors/
folder. You can add multiple themes inside of this folder, but whatever is added to this line is what your current theme is.
Tabs and Spaces
set expandtab " tabs are spaces
set tabstop=4 " number of visual spaces per tab
retab " sets existing tabs to spaces
set expandtab
inserts space characters whenever the tab key is pressed. This is purely based on preference. I personally like having spaces instead of tabs. set tabstop=4
controls the number of space characters that is inserted when the tab key is pressed. I have it set to insert 4 space characters. retab
takes existing tab characters that are not spaces and converts them to space characters.
Visuals
set number " show line #'s
set showcmd " show command in bottom bar
set cursorline " highlight current line
set lazyredraw " redraw only when needed
set showmatch " highlight matching [{()}]
set ruler " display cursor position
set confirm " ask if you want to save
set visualbell " use visual bell when error
set number
adds line numbers on the left of your file contents, like a text editor. set showcmd
shows partial commands at the bottom of the screen. set cursorline
highlights the whole line where your cursor is currently on. set lazyredraw
tells vim to not redraw when it doesn’t need to, meaning it will save you computing power. set showmatch
highlights matching brackets, parenthesis, etc. set ruler
shows your current cursor position at the bottom of the screen. set confirm
makes vim more user friendly by not saying ‘oh you forgot to save, sucks’ to asking you if you would like to save the file if you forget to type :wq. set visualbell
tells vim to show you when an error happens, instead of bleeping it out of your speakers.
Search
set incsearch " search as characters are entered
set hlsearch " highlight matches
set incsearch
allows vim to search as characters are entered, instead of it’s default search when the enter key is pressed. set hlsearch
highlights the search results.
Conclusion
Vim can be a monster when first getting into it, but I hope I was able to shed some light on it. Again, if you want to send me your suggestions contact me @evan_eboy.