Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Setting up ViM

From MoodleDocs

Setting up Vim for Moodle Development

There are many powerful features available in vim, here are a few tips to ensure you get powerful use out of vim with moodle development

Indentation

Moodle Coding Guidelines state that indentation should be spaces of 4 spaces (not Tabs). Some .vimrc options will help you adhere to these guidelines with ease:

" insert space characters whenever the tab key is presse
set expandtab

" insert 4 spaces characters when tab key is pressed
set tabstop=4

" insert 4 spaces wen autoindent indents
set shiftwidth=4

" automatically indent files
set autoindent

" Do smart indentation depending on code syntax (e.g. change after { }, keywords etc)
set smartindent

Syntax Highlighting

Recent versions of vim have robust syntax highlighting for php. In order to switch syntax highlighting on add the following to your .vimrc:

" set syntax highlighting on
syntax on

Other Useful vimrc settings

" show a ruler with line number, % through file on status line
set ruler
" show line number
set nu
" PHP syntax check
set makeprg=php\ -l\ %
set errorformat=%m\ in\ %f\ on\ line\ %l

During development, you will probably often find yourself typing print_object($foo) and die(). The following lines is vimrc create a keystroke to make this faster

" F5 put a Moodle debugging msg
map <F5> oprint_object(); die(); // DONOTCOMMIT<Esc>23hi

File encoding and decoding

set fileencodings=ucs-bom,utf-8,gbk,big5,latin1
set termencoding=utf-8,gbk
if has ('multi_byte') && v:version > 601
  if v:lang =~? '^\(zh\)\|\(ja\)\|\(ko\)'
    set ambiwidth=double
  endif
endif

Status Line

set statusline=%<%f\ %h%m%r%=%k[%{(&fenc==\"\")?&enc:&fenc}%{(&bomb?\",BOM\":\"\")}]\ %-14.(%l,%c%V%)\ %P

Ctags

See the Ctags Article for details on how to setup ctags usage with moodle and vim

Examples in the wild

Eloy Lafuente (stronk7)

https://gist.github.com/stronk7/b0624e66e150ff4ed28c0278f7e1d601