How I changed my Vim configuration using Vundle

Managing Vim plugins has been always difficult, so I decided to rewrite my Vim configuration from scratch and make use of Vundle, a plugin management system that make a well organized Vim directory.

TL;DR So, you have a mess with your Vim plugin configurations. Just have a look to my dd-vim repository on GitHub

Updated on September 3, 2014

I thinks it's now more than 10 years that I'm using Vim. I use it for everything that I need to write down, not only for scripts and programs like every Unix/Linux system admininistrator would do it, but also for things like this blog entry which I'm writing in reStructuredText format then I'll need just have to paste it in my Plone blog.

For long time I didn't need that much, a simple customized .vimrc file was enough for my system admininistration needs but few years ago I started doing some web development and learning more about Python, Plone, HTML, CSS, XML, etc.. so I started tweaking my Vim configuration, adding plugins, splitting my .vimrc in various files, adding more plugins, and so on... well after a while it became difficult to manage them all, because all plugins files are stored into common directories, which means that updating or disabling them can be a real mess, so I decided to rewrite my Vim configuration from scratch and make use of Vundle, a plugin management system that makes a well organized Vim directory. Also Vundle ensures that the latest versions of your plugins are installed and makes it easy to keep them up to date.

Now, I feel really confortable writing with Vim using the new configuration, and I find easier making changes and updates when I need to, so I published my dd-vim repository on GitHub as Open Source Software.

It's worth noting that customizing the Vim configuration it is really a personal thing and you should dig a little bit into it. There are so many settings that it's quite impossible that any configuration you can find out there fits all your needs, but dd-vim it can be a good starting point to make your own Vim configuration, so fork me on GitHub and send me your pull requests, if they fit my needs as well I'll be happy to merge them.

dd-vim Features

I divided the main vimrc configuration file in the following sections to group similar settings together, they are self explanatory so just have a look to the file at https://github.com/ddellaquila/dd-vim/blob/master/vimrc.

Tip: it will be easier for you to open it in Vim instead of reading in GitHub, as it automatically folds its sections

  • General Settings
  • Formatting
  • Programming Settings
  • Vim UI
  • GVim GUI
  • External Configurations

GVim use the usual gvimrc file, but there are also few basic setting in the "GVim GUI" section of virmrc that can be useful in case .gvimrc is not used or is missing.

Inside the "External Configuration" section, there are calls to separated vim files for specific needs.

  • plugins.vim, load Vim plugins using Vundle
  • mappings.vim, define key mappings
  • filetype.vim, settings for specific file types
  • abbreviations.vim, define abbreviations
  • custom.vim, define custom settings

Colors

I was never happy with Vim colors, and probably I'll never be, so few years ago I wrote a couple of colorscheme files, for a dark and light background, you can find them inside the directory colors.

Plugins

I used to have much more plugins but it became a nightmare managing them all, so now that I started from scratch again I decided to put the ones that I really use everyday and adding new plugins with Vundle when I need them.

Currently dd-vim will install the following Vim plugins.

Vundle

Vundle is short for Vim bundle and is a Vim plugin manager that makes a well organized Vim directory. Also Vundle ensures that the latest versions of your plugins are installed and makes it easy to keep them up to date.

Repository: https://github.com/gmarik/Vundle.vim

NERDTree

The NERD tree allows you to explore your filesystem and to open files and directories. It presents the filesystem to you in the form of a tree which you manipulate with the keyboard and/or mouse. It also allows you to perform simple filesystem operations.

Repository: https://github.com/scrooloose/nerdtree

vim-gnupg

This script implements transparent editing of gpg encrypted files. The filename must have a ".gpg", ".pgp" or ".asc" suffix. When opening such a file the content is decrypted, when opening a new file the script will ask for the recipients of the encrypted file. The file content will be encrypted to all recipients before it is written. The script turns off viminfo and swapfile to increase security.

Repository: https://github.com/jamessan/vim-gnupg

MatchTag

This plugin highlights the matching HTML tag when the cursor is positioned on a tag. It works in much the same way as the MatchParen plugin.

Repository: https://github.com/gregsexton/MatchTag

moin.vim

This provides syntax highlighting for MoinMoin wiki text.

Repository: http://www.vim.org/scripts/script.php?script_id=1459

wikipedia.vim

This provides syntax highlighting for MediaWiki articles.

Repository: http://www.vim.org/scripts/script.php?script_id=1787

SnipMate

SnipMate provides support for textual snippets, similar to TextMate. A snippet is a piece of often-typed text that you can insert into your document using a trigger word followed by a <Tab>.

Repository: https://github.com/garbas/vim-snipmate

vim-snippets

This plugin contains snippets files for various programming languages, including Python, Perl, PHP, Javascript, HTML, Markdown, and several others

Repository: https://github.com/honza/vim-snippets

2014-09-03 Update

Today I released the version 3.3 of my Vim configuration. This was necessary as Vundle changed few things since my last update so I updated the Vundle setup section, one was to replace "Bundle" namespace which is now deprecated for "Plugin". I also fixed few other things and added some settings for Windows users.

This version install few new plugins, wikipedia.vim which adds syntax highlighting for MediaWiki articles, SnipMate and vim-snippets.

About SnipMate it allows you to type a sequence of characters, and then automatically expand to a full block of code by pressing <Tab>. It works with vim-snippets which has snippets for several program languages and I found it very helpful, I suggest you to watch this video on YouTube and give it a try.

I hope you enjoy it,

Danilo