Python folding in Vim
There are several ftplugins at www.vim.org that fold python code. I could have used one of them and be happy but the burden of my ex-prog-life leads me to my own wheel to be reinvented.
Brief description
- Folds are created for:
let g:python_fold_block = "all"— all python code blocks;let g:python_fold_block = "def"— defs and classes. [DEFAULT]- The way empty lines are folded controlled by
g:python_fold_keep_empty_linesvariable: let g:python_fold_keep_empty_lines = "all"— keep empty lines between code blocks; [DEFAULT]let g:python_fold_keep_empty_lines = "top"— keep empty lines between top level code blocks;let g:python_fold_keep_empty_lines = "top-one"— keep one empty line between top level code blocks;let g:python_fold_keep_empty_lines = "one"— keep one empty line between code blocks.- Comment’s folding:
let g:python_fold_comments = 1— fold comments; [DEFAULT]let g:python_fold_comments = 0— do not fold comments.- Import’s folding:
let g:python_fold_imports = 1— fold imports; [DEFAULT]let g:python_fold_imports = 0— do not fold imports.- Docstring’s folding:
let g:python_fold_docstrings = 1— fold docstrings; [DEFAULT]let g:python_fold_docstrings = 0— do not fold docstrings.
Screenshots
![]() let g:python_fold_keep_empty_lines = "all" |
![]() let g:python_fold_keep_empty_lines = "top" |
![]() let g:python_fold_keep_empty_lines = "top-one" |
![]() let g:python_fold_keep_empty_lines = "one" |
Install
- Download
python.vim - Place
python.vimto - Windows:
~/vimfiles/ftplugin/ - Linux:
~/.vim/ftplugin/
Note: Folding is shiftwidth dependent. If a code indented with 2 spaces make sure shiftwidth is 2 spaces too.
PS: It works for me and it may work for you too despite evil bugs that could live in it.





Thanks for this great plugin! I’ve been using some of the other Python folding plugins over at http://www.vim.org, but none of them have ever really fit the bill. The one that I had settled on worked pretty well, except things went crazy as soon as docstrings came up in the code.
Thanks again!
You are welcome.