sponsor Vim development Vim logo Vim Book Ad

vim-htmldjango_omnicomplete : htmldjango filetype omnicomplete - completes template tags/filters/variables

 script karma  Rating 13/4, Downloaded by 2289  Comments, bugs, improvements  Vim wiki

created by
Michael Brown
script type
Vim htmldjango autocomplete

An omnicomplete tailored to django templates "tags/variables/filters/templates" I mainly find it useful for completing template and static directory paths. It will also fall back to regular html omnicomplete

Repo: http://github.com/mjbrownie/vim-htmldjango_omnicomplete (star it for updates, feedback appreciated)


    block: https://github.com/mjbrownie/vim-htmldjango_omnicomplete/raw/master/examples/block_eample.png
    url: https://github.com/mjbrownie/vim-htmldjango_omnicomplete/raw/master/examples/url_example.png
    extends: https://github.com/mjbrownie/vim-htmldjango_omnicomplete/blob/master/examples/extends_example.png


    1. Filters

        {{ somevar|a<c-x><c-o>}} should complete 'add' , 'addslashes'

    2. Tags

        {% cy<c-x><x-o> %} should complete 'cycle'

    3. Load statements

        It also should grab any libs you have {% load tag_lib %} in the file.
        Although it needs them in INSTALLED_APPS.

        {% load <c-x><c-o> %} will complete libraries (eg. 'cache', 'humanize')

    4. template filenames

        {% extends '<c-x><c-o>' %} will list base.html ... etc

    5. url complete

        {% url <c-x><c-o> %} should complete views and named urls

    6. super block complete

        eg {% block c<c-x><c-o> %} to complete 'content' or something defined
        in an extended template.

    7. static files complete

        eg {% static "r<c-x><c-o>" %}

        <script src="{% static "<c-x><c-o>" %}" /> - completes js files in static
        <style src="{% static "<c-x><c-o>" %}" /> - completes css files in static
        <img src="{% static "<c-x><c-o>" %}" /> - completes img files in static
        {{ s<c-x><x-o> }}

    8. optional variable name completion (placeholder)

        will complete any maps defined in the python htmldjango_opts['variable']
        dict list. See below for info.

    Where possible info panels show the functions __doc__. Most of the
    internal ones are decent.



    I have this working on command line vim for linux and mac (I had to compile my own for osx with ./configure --enable-pythoninterp --with-features=huge).

    also I have DJANGO_SETTINGS_MODULE set in my vimrc. please look at my dotfiles if you are having trouble



    1. I like pathogen/Vundle clone into ~/.vim/bundle directory.

        Alternately just stick the vim file in your ~/.vim/autoload/ dir.

    2. in .vimrc set the omnifunc Eg.

        au FileType htmldjango set omnifunc=htmldjangocomplete#CompleteDjango

    3. Optional: At the moment you need to force a html flavour for htmlcompletion

        in .vimrc

        let g:htmldjangocomplete_html_flavour = 'html401s'

        :verbose function htmlcomplete#CheckDoctype for DocType details

            'html401t' 'xhtml10s' 'html32' 'html40t' 'html40f' 'html40s'
            'html401t' 'html401f' 'html401s' 'xhtml10t' 'xhtml10f' 'xhtml10s'

            'html5' if you have html5.vim


    django needs to be in sys.path along with DJANGO_SETTINGS_MODULE in your

    To test...

    :python import django

    should not result in an error

    :python from django.conf import settings; print settings.INSTALLED_APPS
    :python from django.conf import settings; print settings.TEMPLATE_DIRS

    should show the apps template dirs you need

    I've only tested this on a mac with vim 7.3 and django 1.4
install details
pathogen and github clone recommended as updates will be less frequent here.

cd ~/.vim/bundle && git clone git@github.com:mjbrownie/vim-htmldjango_omnicomplete.git

or extract and copy .vim file to ~/.vim/autoload

rate this script Life Changing Helpful Unfulfilling 
script versions (upload new version)

Click on the package to download.

package script version date Vim version user release notes
vim-htmldjango_omnicomplete-0.9.4.zip 0.9.4 2015-05-29 7.0 Michael Brown Django 1.8 compatibility
vim-htmldjango_omnicomplete-0.9.3.zip 0.9.3 2015-01-06 7.0 Michael Brown Added support for django 1.7+ - Thanks Daniel Hahler
vim-htmldjango_omnicomplete-master.tar.gz 0.9 2012-11-26 7.0 Michael Brown Added staticfiles {% static %} for js/css/img in all app/project directories
vim-htmldjango_omnicomplete-b54beb0e57.tar.gz 0.8.1 2012-11-24 7.0 Michael Brown Added warning suppression to stop depreciation messages in apps appearing on initial load.
mjbrownie-vim-htmldjango_omnicomplete-7c6d8c7.tar.gz 0.8 2012-05-21 7.2 Michael Brown added {% block | %} name autocomplete
mjbrownie-vim-htmldjango_omnicomplete-69a285f.zip 0.7 2012-04-28 7.0 Michael Brown added named url completion, improved support for inline include tag matching.
Fixed missing glob import
ip used for rating:

If you have questions or remarks about this site, visit the vimonline development pages. Please use this site responsibly.
Questions about Vim should go to the maillist. Help Bram help Uganda.
Vim at Github