blob: 2013bf30e69b27cb36c9dd0657575357c7bf2acb [file] [log] [blame]
Brett Cannonb12efd32004-11-06 19:56:45 +00001" vimrc file for following the coding standards specified in PEP 7 & 8.
Brett Cannon8b4e8862004-09-19 05:43:13 +00002"
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 Cannonb12efd32004-11-06 19:56:45 +00005" (``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 Cannon8b4e8862004-09-19 05:43:13 +00009"
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 Cannon07eca3a2005-03-05 05:52:21 +000012" *.h will trigger the C settings. This makes the file "safe" in terms of only
Brett Cannon8b4e8862004-09-19 05:43:13 +000013" 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 Cannon8b4e8862004-09-19 05:43:13 +000017
18
Brett Cannon8b4e8862004-09-19 05:43:13 +000019" Number of spaces to use for an indent.
20" This will affect Ctrl-T and 'autoindent'.
21" Python: 4 spaces
Brett Cannon4e472e02006-08-31 21:45:56 +000022" C: 4 spaces
Thomas Wouters477c8d52006-05-27 19:21:47 +000023au BufRead,BufNewFile *.py,*pyw set shiftwidth=4
Thomas Wouters89f507f2006-12-13 04:49:30 +000024au BufRead *.c,*.h set shiftwidth=8
25au BufNewFile *.c,*.h set shiftwidth=4
Brett Cannon8b4e8862004-09-19 05:43:13 +000026
27" Number of spaces that a pre-existing tab is equal to.
Brett Cannonb12efd32004-11-06 19:56:45 +000028" For the amount of space used for a new tab use shiftwidth.
Brett Cannon8b4e8862004-09-19 05:43:13 +000029" Python: 8
30" C: 8
31au 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 Cannon1b283c52006-04-24 20:01:24 +000036" C: yes
Brett Cannonb12efd32004-11-06 19:56:45 +000037" Makefile: no
Brett Cannon1b283c52006-04-24 20:01:24 +000038au BufRead,BufNewFile *.py,*.pyw,*.c,*.h set expandtab
Brett Cannon8b4e8862004-09-19 05:43:13 +000039au BufRead,BufNewFile Makefile* set noexpandtab
40
Brett Cannon07eca3a2005-03-05 05:52:21 +000041" Use the below highlight group when displaying bad whitespace is desired
42highlight BadWhitespace ctermbg=red guibg=red
43
Christian Heimes9a371592007-12-28 14:08:13 +000044" Display tabs at the beginning of a line in Python mode as bad.
Brett Cannon1b283c52006-04-24 20:01:24 +000045" Should be done for C code, but not until all code has been moved to 4-space
46" indents.
Brett Cannon07eca3a2005-03-05 05:52:21 +000047au BufRead,BufNewFile *.py,*.pyw match BadWhitespace /^\t\+/
Christian Heimes9a371592007-12-28 14:08:13 +000048" Make trailing whitespace be flagged as bad.
49au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/
Brett Cannon07eca3a2005-03-05 05:52:21 +000050
Brett Cannon8b4e8862004-09-19 05:43:13 +000051" Wrap text after a certain number of characters
52" Python: 79
53" C: 79
54au 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
63au 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
70au BufNewFile *.py,*.pyw,*.c,*.h set fileformat=unix
71
72
Brett Cannonb12efd32004-11-06 19:56:45 +000073" ----------------------------------------------------------------------------
Brett Cannon8b4e8862004-09-19 05:43:13 +000074" 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 Cannon07eca3a2005-03-05 05:52:21 +000079" Puts a marker at the beginning of the file to differentiate between UTF and
Brett Cannonb12efd32004-11-06 19:56:45 +000080" 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 Cannon8b4e8862004-09-19 05:43:13 +000082
83" For full syntax highlighting:
84"``let python_highlight_all=1``
85"``syntax on``
86
Brett Cannone6c430d2005-03-21 20:41:51 +000087" Automatically indent based on file type: ``filetype indent on``
88" Keep indentation level from previous line: ``set autoindent``
Brett Cannon8b4e8862004-09-19 05:43:13 +000089
Brett Cannonb12efd32004-11-06 19:56:45 +000090" Folding based on indentation: ``set foldmethod=indent``