Confusão sobre o dobramento do vim - como desativar?


116
  1. Quando abro o arquivo fica assim: insira a descrição da imagem aqui ou mesmo assim insira a descrição da imagem aqui
  2. Quando eu abro todas as dobras, elas são fechadas novamente quando eu naveguei para outro buffer e voltei.
  3. Para poder trabalhar com isso, tenho que aplicar zRcada vez que abrir um buffer.

Eu tenho isso configurado em .vimrc:

set foldlevelstart=99
set foldlevel=99

Indique-me como desabilitar o dobramento, ou pelo menos fazer a navegação para outro buffer para não fechar os abertos.


2
Ao iniciar o vim pela primeira vez, execute :set foldlevele :set foldlevelstartpara ver o que eles estão configurados. Meu palpite inicial é que esses valores estão sendo redefinidos em algum lugar. Quando adiciono esses valores ao meu vimrc, tudo funciona conforme o esperado.
cledoux

Respostas:


209

Você não está sozinho.

set nofoldenable    " disable folding

7
Observe que isso não afeta o vimdiff. Quando o vim cria uma janela de diferenças, parece substituir a foldenableopção. A única solução alternativa que encontrei é definir a contextsubopção de diffoptcomo algo realmente enorme. por exemplo:set diffopt+=context:99999
Laurence Gonsalves

14
era vim-markdown . Para desativar o dobramento por vim-markdown, uselet g:vim_markdown_folding_disabled=1
BenjaminGolder


2
Eu gosto mais da solução glts abaixo: use 'zi' para alternar para dobrável. Um dos poucos GRANDES problemas com o vim é o grande número de coisas para lembrar. Coisas pequenas como 'zi' em vez de 'dobrável' são enviadas por Deus!
Thierry

1
não parece funcionar para mim :( o código python ainda está dobrado.
weima

55

A maneira mais fácil de desabilitar (e habilitar) o dobramento em tempo real é zi.

zié o comando do modo normal que alterna 'foldenable', assim como :set foldenable!.

Mnemônico: "fold i nvert". Veja :h zi.


44

Adicione set nofoldenableao seu ~ / .vimrc para desativar o dobramento.


@Magnus: Isso é feito deliberadamente vimdiffpara evitar mostrar muitas linhas idênticas. O caso de uso é diferente, portanto, não é afetado pelo nofoldenable. zRabre todas as dobras; Eu não sei sobre uma configuração que desativa o fold vimdiff. (Como é o único lugar onde o fold não me incomoda.)
DevSolar

16

Aqui está um artigo que resume de forma breve e concisa por que dobrar é legal. O motivo de uma linha é que a dobradura torna a navegação em arquivos muito grandes uma brisa.

Se você deseja deixar a dobradura ativada e simplesmente sempre comece com todas as dobras abertas, o wiki do vim explica como. O método de seu interesse provavelmente seria o método de comando automático.

" Tweak the event and filetypes matched to your liking. 
" Note, perl automatically sets foldmethod in the syntax file
autocmd Syntax c,cpp,vim,xml,html,xhtml setlocal foldmethod=syntax
autocmd Syntax c,cpp,vim,xml,html,xhtml,perl normal zR

Eu também recomendaria pesquisar métodos de dobra personalizados para a linguagem que você usa. Basta pesquisar "vim <inserir idioma aqui> dobrar" para exibir uma série de opções. Brinque com as diferentes opções até encontrar um método de dobra de sua preferência.


4

Eu adicionei esta linha ao meu .vimrcarquivo porque tive o mesmo problema:

autocmd FileType * exe "normal zR"

Este comando será executado sempre que você abrir um arquivo automaticamente. Assim, você não verá o bug e o recurso de dobramento também não será perdido)


3

Basta adicionar mais um para torná-lo completo ao ponto de discussão.

Para habilitar o dobramento de código:

:set foldenable ou em suma, :set fen

Para desativar o dobramento de código:

:set nofoldenable ou em suma, :set nofen

Depois de habilitar o codefolding, você terá todos os comandos como zf,zo etcdesejar de acordo com a configuração de :set fdm=xxxxonde os valores típicos estãoexpr,syntax,manual etc.


1

Desculpe, se estou respondendo a uma pergunta relacionada, mas achei útil exibir dois arquivos junto com a dobradura desativada com algo assim:

vim "+set nofen" -O file1 file2

1

O Vim torna incrivelmente difícil desativar o dobramento, especialmente ao usar o vimdiff.
Nenhuma das soluções postadas acima funcionou para mim, mas funcionou (adicionar a ~ / .vimrc):

au WinEnter * set nofen
au WinLeave * set nofen

1

Eu definir foldlevel=20, foldlevelstart=20e eu uso foldmethod=syntax. Isso me ajuda a trabalhar com o dobramento correto no vim.

set nofoldenable desabilite o fold, mas às vezes eu preciso disso

vim.wikia

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.