Brett Cannon | b12efd3 | 2004-11-06 19:56:45 +0000 | [diff] [blame] | 1 | " vimrc file for following the coding standards specified in PEP 7 & 8. |
Brett Cannon | 8b4e886 | 2004-09-19 05:43:13 +0000 | [diff] [blame] | 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 |
Brett Cannon | b12efd3 | 2004-11-06 19:56:45 +0000 | [diff] [blame] | 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 | " |
Brett Cannon | 8b4e886 | 2004-09-19 05:43:13 +0000 | [diff] [blame] | 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 |
Brett Cannon | 07eca3a | 2005-03-05 05:52:21 +0000 | [diff] [blame] | 12 | " *.h will trigger the C settings. This makes the file "safe" in terms of only |
Brett Cannon | 8b4e886 | 2004-09-19 05:43:13 +0000 | [diff] [blame] | 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. |
Brett Cannon | 8b4e886 | 2004-09-19 05:43:13 +0000 | [diff] [blame] | 17 | |
| 18 | |
Brett Cannon | 8b4e886 | 2004-09-19 05:43:13 +0000 | [diff] [blame] | 19 | " Number of spaces to use for an indent. |
| 20 | " This will affect Ctrl-T and 'autoindent'. |
| 21 | " Python: 4 spaces |
Brett Cannon | 4e472e0 | 2006-08-31 21:45:56 +0000 | [diff] [blame] | 22 | " C: 4 spaces |
Thomas Wouters | 477c8d5 | 2006-05-27 19:21:47 +0000 | [diff] [blame] | 23 | au BufRead,BufNewFile *.py,*pyw set shiftwidth=4 |
Thomas Wouters | 89f507f | 2006-12-13 04:49:30 +0000 | [diff] [blame] | 24 | au BufRead *.c,*.h set shiftwidth=8 |
| 25 | au BufNewFile *.c,*.h set shiftwidth=4 |
Brett Cannon | 8b4e886 | 2004-09-19 05:43:13 +0000 | [diff] [blame] | 26 | |
| 27 | " Number of spaces that a pre-existing tab is equal to. |
Brett Cannon | b12efd3 | 2004-11-06 19:56:45 +0000 | [diff] [blame] | 28 | " For the amount of space used for a new tab use shiftwidth. |
Brett Cannon | 8b4e886 | 2004-09-19 05:43:13 +0000 | [diff] [blame] | 29 | " Python: 8 |
| 30 | " C: 8 |
| 31 | au BufRead,BufNewFile *py,*pyw,*.c,*.h set tabstop=8 |
| 32 | |
| 33 | " Replace tabs with the equivalent number of spaces. |
| 34 | " Also have an autocmd for Makefiles since they require hard tabs. |
| 35 | " Python: yes |
Brett Cannon | 1b283c5 | 2006-04-24 20:01:24 +0000 | [diff] [blame] | 36 | " C: yes |
Brett Cannon | b12efd3 | 2004-11-06 19:56:45 +0000 | [diff] [blame] | 37 | " Makefile: no |
Brett Cannon | 1b283c5 | 2006-04-24 20:01:24 +0000 | [diff] [blame] | 38 | au BufRead,BufNewFile *.py,*.pyw,*.c,*.h set expandtab |
Brett Cannon | 8b4e886 | 2004-09-19 05:43:13 +0000 | [diff] [blame] | 39 | au BufRead,BufNewFile Makefile* set noexpandtab |
| 40 | |
Brett Cannon | 07eca3a | 2005-03-05 05:52:21 +0000 | [diff] [blame] | 41 | " Use the below highlight group when displaying bad whitespace is desired |
| 42 | highlight BadWhitespace ctermbg=red guibg=red |
| 43 | |
Christian Heimes | 9a37159 | 2007-12-28 14:08:13 +0000 | [diff] [blame^] | 44 | " Display tabs at the beginning of a line in Python mode as bad. |
Brett Cannon | 1b283c5 | 2006-04-24 20:01:24 +0000 | [diff] [blame] | 45 | " Should be done for C code, but not until all code has been moved to 4-space |
| 46 | " indents. |
Brett Cannon | 07eca3a | 2005-03-05 05:52:21 +0000 | [diff] [blame] | 47 | au BufRead,BufNewFile *.py,*.pyw match BadWhitespace /^\t\+/ |
Christian Heimes | 9a37159 | 2007-12-28 14:08:13 +0000 | [diff] [blame^] | 48 | " Make trailing whitespace be flagged as bad. |
| 49 | au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/ |
Brett Cannon | 07eca3a | 2005-03-05 05:52:21 +0000 | [diff] [blame] | 50 | |
Brett Cannon | 8b4e886 | 2004-09-19 05:43:13 +0000 | [diff] [blame] | 51 | " Wrap text after a certain number of characters |
| 52 | " Python: 79 |
| 53 | " C: 79 |
| 54 | au BufRead,BufNewFile *.py,*.pyw,*.c,*.h set textwidth=79 |
| 55 | |
| 56 | " Turn off settings in 'formatoptions' relating to comment formatting. |
| 57 | " - c : do not automatically insert the comment leader when wrapping based on |
| 58 | " 'textwidth' |
| 59 | " - o : do not insert the comment leader when using 'o' or 'O' from command mode |
| 60 | " - r : do not insert the comment leader when hitting <Enter> in insert mode |
| 61 | " Python: not needed |
| 62 | " C: prevents insertion of '*' at the beginning of every line in a comment |
| 63 | au BufRead,BufNewFile *.c,*.h set formatoptions-=c formatoptions-=o formatoptions-=r |
| 64 | |
| 65 | " Use UNIX (\n) line endings. |
| 66 | " Only used for new files so as to not force existing files to change their |
| 67 | " line endings. |
| 68 | " Python: yes |
| 69 | " C: yes |
| 70 | au BufNewFile *.py,*.pyw,*.c,*.h set fileformat=unix |
| 71 | |
| 72 | |
Brett Cannon | b12efd3 | 2004-11-06 19:56:45 +0000 | [diff] [blame] | 73 | " ---------------------------------------------------------------------------- |
Brett Cannon | 8b4e886 | 2004-09-19 05:43:13 +0000 | [diff] [blame] | 74 | " The following section contains suggested settings. While in no way required |
| 75 | " to meet coding standards, they are helpful. |
| 76 | |
| 77 | " Set the default file encoding to UTF-8: ``set encoding=utf-8`` |
| 78 | |
Brett Cannon | 07eca3a | 2005-03-05 05:52:21 +0000 | [diff] [blame] | 79 | " Puts a marker at the beginning of the file to differentiate between UTF and |
Brett Cannon | b12efd3 | 2004-11-06 19:56:45 +0000 | [diff] [blame] | 80 | " UCS encoding (WARNING: can trick shells into thinking a text file is actually |
| 81 | " a binary file when executing the text file): ``set bomb`` |
Brett Cannon | 8b4e886 | 2004-09-19 05:43:13 +0000 | [diff] [blame] | 82 | |
| 83 | " For full syntax highlighting: |
| 84 | "``let python_highlight_all=1`` |
| 85 | "``syntax on`` |
| 86 | |
Brett Cannon | e6c430d | 2005-03-21 20:41:51 +0000 | [diff] [blame] | 87 | " Automatically indent based on file type: ``filetype indent on`` |
| 88 | " Keep indentation level from previous line: ``set autoindent`` |
Brett Cannon | 8b4e886 | 2004-09-19 05:43:13 +0000 | [diff] [blame] | 89 | |
Brett Cannon | b12efd3 | 2004-11-06 19:56:45 +0000 | [diff] [blame] | 90 | " Folding based on indentation: ``set foldmethod=indent`` |