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. 20 au 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) 26 au BufRead,BufNewFile *.py,*pyw set shiftwidth=4 27 au BufRead,BufNewFile *.py,*.pyw set expandtab 28 fu 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 36 endf 37 au BufRead,BufNewFile *.c,*.h call Select_c_style() 38 au BufRead,BufNewFile Makefile* set noexpandtab 39 40 " Use the below highlight group when displaying bad whitespace is desired. 41 highlight BadWhitespace ctermbg=red guibg=red 42 43 " Display tabs at the beginning of a line in Python mode as bad. 44 au BufRead,BufNewFile *.py,*.pyw match BadWhitespace /^\t\+/ 45 " Make trailing whitespace be flagged as bad. 46 au 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 51 au 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 60 au 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 67 au 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