Python代码使用Vim折叠的推荐方法是什么?

我有兴趣在Vim for Python代码中启用代码折叠。 我注意到有多种方式可以这样做。

有没有人有一个首选的方法来在Vim中进行Python代码折叠? 也就是说,

  • 你有一个特定的Vim插件,你使用和喜欢?
  • 你使用手动折叠还是在评论中放置标记?
  • 任何其他推荐的方法来在Vim中为Python做代码折叠?

就我个人而言,我无法说服自己用标记来抛弃我的代码。 我已经习惯于(和高效)使用缩进折叠。 再加上我的空格键映射(见下面)来打开/closures折叠以及zR和zM命令,我就在家。 完美的Python!

nnoremap <space> za

vnoremap <space> zf

我使用Python的这个语法文件。 它将折叠方法设置为语法,并折叠所有的类和函数,但没有别的。

Python非常适合折叠缩进,用于编写我自己的代码,我使用标记,因为它们可以按照自己想要的方式缩小文档,并且可以用作一种内容列表。 我有这个在我的vimrc翻译之间,当我查看别人的代码。

 #Toggle fold methods \fo let g:FoldMethod = 0 map <leader>fo :call ToggleFold()<cr> fun! ToggleFold() if g:FoldMethod == 0 exe 'set foldmethod=indent' let g:FoldMethod = 1 else exe 'set foldmethod=marker' let g:FoldMethod = 0 endif endfun #Add markers (trigger on class Foo line) nnoremap ,f2 ^wywO#<cr>0 {{{2<esc> nnoremap ,f3 ^wywO#<cr>0 {{{3<esc> nnoremap ,f4 ^wywO#<cr>0 {{{4<esc> nnoremap ,f1 ^wywO#<cr>0 {{{1<esc> 

我认为,缩进折叠是好的python。 我正在为vim-config python / django IDE想法制作一个多分支的git repo。 叉走!

http://github.com/skyl/vim-config-python-ide

我真的很喜欢python_ifold插件 。

另一个用于折叠Python代码的插件。 很简单,处理文档,并在GitHub上:

SimpylFold

请享用!

Python源代码附带了一个vim语法插件以及一个自定义的vim​​rc文件。 检查vim上的python FAQ

对于我来说,理想的折叠是折叠classdef块,缩进折叠太多,我的口味。 我认为一个优雅的解决scheme是使用Tomas提到的这种语法系统。 然而,这一个是为了取代原来的语法文件,它可能会比原来的文件更旧(即该脚本没有提到Python 3的语法)。

我的解决scheme是在~/.vim/syntax文件夹中放置一个名为python.vim的文件,其中包含重要的行(取自上面的脚本):

 syn match pythonDefStatement /^\s*\%(def\|class\)/ \ nextgroup=pythonFunction skipwhite syn region pythonFunctionFold start="^\z(\s*\)\%(def\|class\)\>" \ end="\ze\%(\s*\n\)\+\%(\z1\s\)\@!." fold transparent hi link pythonDefStatement Statement 

然后只需使用以下命令激活折叠:set foldmethod=syntax