Django-Vim code autocomplete

by Marín

Recently I came back on Django development and after a year my own set of coding tools had changed a lot, mainly because Vim became my main text editor. On this came back many of my friends suggested PyCharm as the right tool to use (I’m working as Django developer) but I just can’t work with an IDE, it just doesn’t feel smooth and fast as Vim.

So, if you are like me and love Vim a simple wrapper will transform Vim into a more powerful tool to work with Django and Python, but before we set up the wrapper we have to configure some things inside or .vimrc:

"--ENABLE PYTHON/DJANGO OMNICOMPLETE

filetype plugin on
set omnifunc=syntaxcomplete#Complete
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS

"--SuperTab Integration
set completeopt-=previewtj
let g:SuperTabDefaultCompletionType = ""
let g:SuperTabDefaultCompletionType = "context"

First lines are activating the Omni Completion feature of Vim for those type of files and the last lines are very helpful and comfortable to work with Super Tab which must be inside of our .vim folder.

Now we will be able to define or little wrapper which I built based on a few examples that I found over the internet, those examples were not working for me but once I understood the idea it was very easy to code.

paste this lines inside a file called djvim (DON’T FORGET TO MODIFY YOUR PROJECT PATH):

PROJECT_PATH="/home/marin/Code"
if [ $# -eq 2 ]
then
        export PYTHONPATH="$PROJECT_PATH/$1"
        export DJANGO_SETTINGS_MODULE=$1.settings
        vim $2
else
        echo "Usage: djvim [Project] [File]"
fi

then make the file executable and move it to your /bin folder, that will do the trick. Test djvim with:

user@machine:$ djvim myproject models.py

and inside Vim type:

:python from django import db

Then test the autocomplete with some functions, launch it with the Tab key.

if it doesn’t work you can check out my dotfiles repo and use them as personal files or guide. Happy Coding, improvements are always welcome