Version 17 (modified by 18 years ago) ( diff ) | ,
---|
Using Vim with Django ¶
This page is intended to be used as a collection of hints for using the Vim editor with Django.
- Tips:
- Vim Modeline
- Plugins:
- snippetsEmu
- xml.vim
- Project
- Vim/IDE:
- PIDA
Tips ¶
Vim Modeline ¶
To insure that all developers are using a standard tab format (as long as they are using Vim), you can add a Vim modeline (special comment) to your files, to set people in the same mode for that file. Example:
# vim: ai ts=4 sts=4 et sw=4
Tab Setting Reference for Python and Vim
Plugins ¶
snippetsEmu ¶
Development takes place on Google Code, where the subversion repository includes predefined snippets for django/python/etc.
SnippetsEmu allows one to define abbreviations which can be expanded into larger blocks of text. The abbreviations can also contain place markers which can be 'jumped to' in a similar manner to the macros defined in TextMate on OS X.
One can add specific abbreviations for models or templates based on file contents. Adding the following line to your ~/.vim/ftplugin/python.vim file (create it if you don't have it) will allow you to define abbreviations just for models:
if getline(1) =~ 'from django.db import models' "Your abbreviations here endif
The following is a collection of Django specific abbreviations for use with the plugin (using the default start and end tags: '<{' and '}>'): Models:
Snip addmodel class <{}>(models.Model):<CR><><CR><CR>def __str__(self):<CR>return "%s" % (<{}>,)<CR><CR>class Admin:<CR>pass<CR><CR> Snip mcf models.CharField(maxlength=<{}>)<CR><{}> Snip mff models.FileField(upload_to=<{}>)<CR><{}> Snip mfpf models.FilePathField(path=<{}>, match="<{}>", recursive=<False>)<CR><{}> Snip mfloat models.FloatField(max_digits=<{}>, decimal_places=<{}>)<CR><{}> Snip mfk models.ForeignKey(<{}>, edit_inline=<False>)<CR><{}> Snip m2m models.ManyToManyField(<{}>)<CR><{}> Snip o2o models.OneToOneField(<{}>)<CR><{}>
Templates: Templates should be used with different tag delimiters as they will no doubt contain (X)HTML which will confuse the plugin. Assuming start and end tags are '@':
Iabbr fore {% for @entry@ in @list@ %}<CR>{{ @entry@.@@ }}<CR>@@{% endfor %}<CR>@@
XML.vim ¶
The xml.vim plugin is really useful for editing XML and HTML files. It makes tag completion easy and allows you to bounce between start and end tags.
Syntax for templates ¶
Dave Hodder has contributed standard Vim syntax files.
If you are interested in rolling your own, this is a simple addition to let Vim deal with Django template syntax:
Create the file:
$VIM/vimfiles/after/syntax/html.vim
with the following content:
syn region djangotagmarkers start="{{" end="}}" syn region djangovariablemarkers start="{%" end="%}" command! -nargs=+ HiLink hi def link <args> HiLink djangotagmarkers PreProc HiLink djangovariablemarkers PreProc delcommand HiLink
Project.vim ¶
The Project plugin adds IDE file organisation functionality to Vim.
Something like the following could be used to view a project's files.
Django Project=/path/to/project CD=. filter="*.py" { __init__.py settings.py urls.py apps=apps { __init__.py app1=app1Dir { __init__.py views.py models=app1ModelsDir { __init__.py app1models.py } } app2=app2Dir { __init__.py views.py models=app2modelsDir { __init__.py app2Dir.py } } media=mediaDir { images=imagesDir { } } }
Such a structure can also be created by using the build in '\C' command which will recurse through the whole directory tree.
Vim/IDE ¶
PIDA ¶
Although this is not Django-specific (I don't think some of the other stuff in here is very Django-specific either), PIDA looks like a pretty nice IDE environment for VIM+Python, which would therefore help you out in Django :).
Attachments (5)
-
python.vim
(572 bytes
) - added by 19 years ago.
Sample ftplugin file containing SnippetsEmu abbreviations for Django models
-
django.tar.gz
(4.6 KB
) - added by 19 years ago.
Unzip this file in your ~/.vim/ directory to install snippetsEmu.vim and Django specific abbreviations
-
django-vim-taglist.png
(56.7 KB
) - added by 18 years ago.
screenshot of vim with the taglist plugin
-
django_url_snippets.vim
(544 bytes
) - added by 16 years ago.
SnippetsEmu for urls.py
-
django_view_snippets.vim
(310 bytes
) - added by 16 years ago.
SnippetsEmu for views.py
Download all attachments as: .zip