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

时间:2008-12-10 22:10:46

标签: python vim folding

我有兴趣在Vim for Python代码中启用代码折叠。我注意到了多种方法。

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

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

9 个答案:

答案 0 :(得分:102)

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

  

nnoremap <space> za

     

vnoremap <space> zf

答案 1 :(得分:23)

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

答案 2 :(得分:6)

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>

答案 3 :(得分:5)

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

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

答案 4 :(得分:5)

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

SimpylFold

享受!

答案 5 :(得分:5)

我非常喜欢python_ifold plugin

答案 6 :(得分:4)

答案 7 :(得分:2)

Python源代码附带了一个vim语法插件以及一个自定义vimrc文件。查看python FAQ on vim

答案 8 :(得分:2)

对我来说,理想的折叠是折叠classdef块,缩进折叠对我来说太多了。我认为一个优雅的解决方案是使用像Tomas提到的one这样的语法系统。但是,这个意味着要替换原始语法文件,它可能比原始文件更旧(即该脚本没有提到Python 3语法)。

我的解决方案是在~/.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激活折叠。

免费获取贴纸的机会↓↓↓
豫ICP备18024241号-1