1" vimrc file for following the coding standards specified in PEP 7 & 8. 2" 3" To use this file, source it in your own personal .vimrc file (``source 4" <filename>``) or, if you don't have a .vimrc file, you can just symlink to it 5" (``ln -s <this file> ~/.vimrc``). All options are protected by autocmds 6" (read below for an explanation of the command) so blind sourcing of this file 7" is safe and will not affect your settings for non-Python or non-C files. 8" 9" 10" All setting are protected by 'au' ('autocmd') statements. Only files ending 11" in .py or .pyw will trigger the Python settings while files ending in *.c or 12" *.h will trigger the C settings. This makes the file "safe" in terms of only 13" adjusting settings for Python and C files. 14" 15" Only basic settings needed to enforce the style guidelines are set. 16" Some suggested options are listed but commented out at the end of this file. 17 18" Number of spaces that a pre-existing tab is equal to. 19" For the amount of space used for a new tab use shiftwidth. 20au BufRead,BufNewFile *py,*pyw,*.c,*.h set tabstop=8 21 22" What to use for an indent. 23" This will affect Ctrl-T and 'autoindent'. 24" Python: 4 spaces 25" C: tabs (pre-existing files) or 4 spaces (new files) 26au BufRead,BufNewFile *.py,*pyw set shiftwidth=4 27au BufRead,BufNewFile *.py,*.pyw set expandtab 28fu Select_c_style() 29 if search('^\t', 'n', 150) 30 set shiftwidth=8 31 set noexpandtab 32 el 33 set shiftwidth=4 34 set expandtab 35 en 36endf 37au BufRead,BufNewFile *.c,*.h call Select_c_style() 38au BufRead,BufNewFile Makefile* set noexpandtab 39 40" Use the below highlight group when displaying bad whitespace is desired. 41highlight BadWhitespace ctermbg=red guibg=red 42 43" Display tabs at the beginning of a line in Python mode as bad. 44au BufRead,BufNewFile *.py,*.pyw match BadWhitespace /^\t\+/ 45" Make trailing whitespace be flagged as bad. 46au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/ 47 48" Wrap text after a certain number of characters 49" Python: 79 50" C: 79 51au BufRead,BufNewFile *.py,*.pyw,*.c,*.h set textwidth=79 52 53" Turn off settings in 'formatoptions' relating to comment formatting. 54" - c : do not automatically insert the comment leader when wrapping based on 55" 'textwidth' 56" - o : do not insert the comment leader when using 'o' or 'O' from command mode 57" - r : do not insert the comment leader when hitting <Enter> in insert mode 58" Python: not needed 59" C: prevents insertion of '*' at the beginning of every line in a comment 60au BufRead,BufNewFile *.c,*.h set formatoptions-=c formatoptions-=o formatoptions-=r 61 62" Use UNIX (\n) line endings. 63" Only used for new files so as to not force existing files to change their 64" line endings. 65" Python: yes 66" C: yes 67au BufNewFile *.py,*.pyw,*.c,*.h set fileformat=unix 68 69 70" ---------------------------------------------------------------------------- 71" The following section contains suggested settings. While in no way required 72" to meet coding standards, they are helpful. 73 74" Set the default file encoding to UTF-8: ``set encoding=utf-8`` 75 76" Puts a marker at the beginning of the file to differentiate between UTF and 77" UCS encoding (WARNING: can trick shells into thinking a text file is actually 78" a binary file when executing the text file): ``set bomb`` 79 80" For full syntax highlighting: 81"``let python_highlight_all=1`` 82"``syntax on`` 83 84" Automatically indent based on file type: ``filetype indent on`` 85" Keep indentation level from previous line: ``set autoindent`` 86 87" Folding based on indentation: ``set foldmethod=indent`` 88