vim-django run commands, create apps, and beyond
Vim script
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
doc Update doc variable for django_projects Aug 25, 2014
ftplugin Spacing Aug 2, 2012



Vim-Django is a ViM script that helps manage a django app(s). It has wrapping's for the, your projects and some helper commands. It also has some quick ways to find templates, edit related files in a app, create new apps, and help manage django while using ViM.


I recommend using pathogen or vundle to install this script. Else, you can put the django.vim in the plug-ins directory. This script does require python to be compiled in.

You can check by doing :version and looking for +python

Example .vimrc

let g:django_projects = '~/Projects' "Sets all projects under project
let g:django_activate_virtualenv = 1 "Try to activate the associated virtualenv
let g:django_activate_nerdtree = 1 "Try to open nerdtree at the project root.

Advanced search for projects

If you want more advanced searching for your projects or the default is to slow for you to use. You can add more advanced filtering.

For example I use a source directory in each of my projects. So I dont want it to look through each of my virtualenv directorys, assets, or other project files.

So what we can do is this

g:django_projects_search_exp = '*/source' this will let us look in the source folder for each project. You can tweak this to be what you want. This just uses the vim file path filters.


DjangoAdmin will run any command through the command.

DjangoManage will run the management command for the project

DjangoProjectActivate will activate the project. This will go through your g:django_projects and find all the django projects. It will also set up DJANGO_SETTINGS_MODULE in your environment and the directory where the settings file is stored in your PYTHONPATH.

DjangoCreateApp will create a new app under your projects base. It will autocomplete the path. It just needs is a python path such as, colinbits.apps.new_app this will be created in the folder colinbits, apps, then run the to create the app there.


There are mappings for easily editing related django files while working on a app. They all can be changed if you don't like how they are currently mapped. There are mappings for (v|views), (u|urls), (a|admin), and (t|tests). If you want to remap these you can call the function django#apps#edit('', 'split') and it will open up the file it fines in a split.


g:django_projects is where your django projects are located.

g:django_activate_virtualenv when true will activate a virtualenv that starts with the same name. An example being. colinbits, is the site, and the virtualenv being

Custom Activation of Projects

Since not everyone uses the default settings file vim-django will allow you to add a custom function to activate any project. In your vimrc you can define a function called ActivateProject it needs to accept one argument. From here you can have it activate the project.

Working with other Scripts

NERDTree: g:django_activate_nerdtree when set to 1 will launch nerdtree when activating the django project.

VirtualEnv: g:django_activate_virtualenv when set to 1 will activate the virtual env that starts with the same name.

Screen shots

Mangement Command


  • Working with virtualenv's