Como habilitar e usar o código dobrável no Vim?

35

Como posso ativar e fazer dobrar código no Vim?

Eu tenho que mudar alguma coisa em ~/.vimrc ?

Eu digito z + a e z + c e z + o e nada acontece.

Aqui está um artigo sobre o dobramento: Código dobrável no Vim .

    
por Mohammad Reza Rezwani 07.07.2014 / 10:39

4 respostas

31

Não, você não precisa colocar o comando na página com a qual você se vinculou em ~/.vimrc , basta digitá-los depois de emitir : in vim para obter o prompt de comando.

No entanto, se você colocar as linhas:

set foldmethod=indent   
set foldnestmax=10
set nofoldenable
set foldlevel=2

como indicado no link que você deu, no seu ~/.vimrc , você não precisa digitá-los toda vez que quiser usar o dobramento em um arquivo. O set nofoldenable garante que, ao abrir, os arquivos sejam "normais", ou seja, não dobrados.

    
por 07.07.2014 / 11:15
20

Dobre por padrão

O método de dobragem padrão do Vim é manual , o que significa que as dobras são criadas manualmente; caso contrário, não haverá dobra a ser fechada ou aberta usando z a , z o ou z c como você descreveu. Mas, você pode criar uma dobra por z f {motion} no modo Normal ou z f no modo Visual ; por exemplo. z f j cria uma dobra para a linha atual e a seguinte no modo Normal .

Dobre por indent

A resposta aceita, por @Anthon, descreve como definir o método de dobra para indent ; ou seja, dobrar são definidos pelo nível de indentações.

Dobre por syntax

De uma maneira mais conveniente, as dobras podem ser criadas automaticamente com base na sintaxe do idioma do buffer atual. Se você está usando uma linguagem de programação, vamos chamá-la L , e você tem uma definição dobrável de L (por exemplo, você instalou um plugin Vim no qual as informações de dobramento de > L é definido, como c.vim para C / C ++, ou python-mode para Python), você só precisa definir método de dobra para syntax :

set foldmethod=syntax

É isso. Os comandos mais úteis para trabalhar com dobras são:

  • z o abre uma dobra no cursor.
  • z Deslocamento + o abre todas as dobras no cursor.
  • z c fecha uma dobra no cursor.
  • z m aumenta o foldlevel em um.
  • z Deslocamento + m fecha todas as dobras abertas.
  • z r diminui o foldlevel em um.
  • z Deslocamento + r diminui o foldlevel para zero - todas as dobras serão abertas.
por 11.01.2017 / 10:24
11

Você não precisa usá-lo sistematicamente: eu costumo selecionar manualmente as dobras pelo movimento ou seção. Por exemplo, dobrar um parágrafo é zfip e dobrar as próximas 20 linhas é zf20j . Use za para alternar e zd para remover.

Isso requer um pouco mais de trabalho, mas permite que o seu dobramento reflita a tarefa em questão.

    
por 07.07.2014 / 11:25
3

Você pode ativar folding na sessão atual, como a resposta do @ Anthon. Mas se você quiser torná-lo permanente, você deve definir pelo menos esta linha em .vimrc para dobrar o trabalho:

set foldmethod=indent

indent é meio que dobrável, você pode ver mais de :help foldmethod

'foldmethod' 'fdm'      string (default: "manual")
                        local to window
                        {not in Vi}
                        {not available when compiled without the +folding
                        feature}
        The kind of folding used for the current window.  Possible values:
        fold-manual     manual      Folds are created manually.
        fold-indent     indent      Lines with equal indent form a fold.
        fold-expr       expr        'foldexpr' gives the fold level of a line.
        fold-marker     marker      Markers are used to specify folds.
        fold-syntax     syntax      Syntax highlighting items specify folds.
        fold-diff       diff        Fold text that is not changed.

Agora, toda vez que você abrir um arquivo com vim , verá que o código é dobrado pelo método que você definiu. Então você pode usar za , zc , zo .

    
por 07.07.2014 / 11:15

Tags