Fold function in vim

前端 未结 5 1587
無奈伤痛
無奈伤痛 2021-01-29 18:21

Is there any way or tools to fold function in vim, like Visual Studio or Eclipse?

相关标签:
5条回答
  • 2021-01-29 18:24

    Yes. VIM has exceptional folding capabilities. I don't like learning too many controls, I prefer automation, so here is what I personally use:

    In my .vimrc:

    set foldmethod=indent
    set foldlevel=1
    set foldclose=all
    

    This automatically folds files that you open, based on indent, for everything indented for more than 1 level. The foldclose option makes the fold automatically re-close after I navigate out of the fold.

    In-file Controls:

    zo - opens folds
    zc - closes fold
    zm - increases auto fold depth
    zr - reduces auto fold depth
    

    And if you ever get annoyed with the folds, use

    : set foldmethod=syntax
    

    or press:

    zR
    

    to make them all go away.

    0 讨论(0)
  • 2021-01-29 18:35
    :set foldmethod=syntax
    

    should fold all functions and other blocks automatically, if you have syntax file for your language.

    0 讨论(0)
  • 2021-01-29 18:38

    yes, it is bound to the 'z' key, e.g. zO opens all folds. see ":help fold" in vim for more information. You can do folding according to very simple rules, like indentation, or according to the code syntax.

    0 讨论(0)
  • 2021-01-29 18:49

    Vim has excellent folding support. There is good documentation in the vim help system. Just open vim and do

    :help usr_28.txt 
    

    After reading that you can also read

    :help folding
    

    for some more information.

    0 讨论(0)
  • 2021-01-29 18:50
        Vim folding commands
    ---------------------------------
    zf#j creates a fold from the cursor down # lines.
    zf/ string creates a fold from the cursor to string .
    zj moves the cursor to the next fold.
    zk moves the cursor to the previous fold.
    za toggle a fold at the cursor.
    zo opens a fold at the cursor.
    zO opens all folds at the cursor.
    zc closes a fold under cursor. 
    zm increases the foldlevel by one.
    zM closes all open folds.
    zr decreases the foldlevel by one.
    zR decreases the foldlevel to zero -- all folds will be open.
    zd deletes the fold at the cursor.
    zE deletes all folds.
    [z move to start of open fold.
    ]z move to end of open fold.
    

    Source: vim docs.

    0 讨论(0)
提交回复
热议问题