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

Pau*_*den 106 python vim folding

我有兴趣在Vim for Python代码中启用代码折叠.我注意到有多种方法可以做到这一点.

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

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

Wal*_*ter 111

就个人而言,我无法说服自己用标记来丢弃我的代码.我已经习惯于(和高效)使用缩进折叠.连同我的空格键映射(见下文)打开/关闭折叠以及zR和zM命令,我就在家里.完美的Python!

nnoremap <space> za

vnoremap <space> zf

  • :首先设置foldmethod = indent.我正在谷歌搜索这个并偶然发现你的答案,非常好!:) (75认同)
  • 我的朋友也喜欢`set foldnestmax = 2`,这样就可以折叠类的方法,但内部语句不是. (42认同)
  • 我不确定为什么第二个映射在这个zf的答案中.如果使用缩进折叠,则不使用它.但是,如果您正在进行手动折叠,则映射非常有意义.然而,za似乎是快速打开/关闭折叠的最佳方式.我还建议使用折叠导航(zk,zj). (8认同)

小智 24

将此语法文件用于Python.它将折叠方法设置为语法并折叠所有类和函数,但没有别的.


iag*_*ito 8

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

SimpylFold

请享用!


小智 7

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#<c-r>0 {{{2<esc>
nnoremap ,f3 ^wywO#<c-r>0 {{{3<esc> 
nnoremap ,f4 ^wywO#<c-r>0 {{{4<esc>
nnoremap ,f1 ^wywO#<c-r>0 {{{1<esc>
Run Code Online (Sandbox Code Playgroud)


Nic*_*sta 5

我真的很喜欢这个python_ifold插件.

  • 这个答案真的需要一个描述. (11认同)

Sky*_*and 5

我认为缩进折叠适用于python.我正在为vim-config python/django IDE创建一个多分支的git repo.叉开!

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