Como posso automaticamente dobrar um código de longa C no vim?
Pergunta
Eu regularmente correr em C-códigos sem dobrar. É irritante para lê-los, se não houver dobrar, especialmente com arquivos longos. Como posso dobrá-los?
Solução
Para dobrar de acordo com a sintaxe
:set foldmethod=syntax
Se você quiser fazê-lo manualmente sobre os bits que você deseja dobrável
:set foldmethod=manual
, em seguida, criar novas dobras, selecionando / movendo e pressionando zf por exemplo.
shift-v j j zf
(ignorando os espaços)
Edit:. Veja também os comentários deste resposta para travessão e marcador foldmethods
Outras dicas
Eu acho que você pode ter misturado a terminologia. Você precisa de "embrulho" ou "dobrar". Embrulho é aquele onde as linhas que normalmente não cabem na tela devido ao seu comprimento, são envolvidos, ou seja, mostrado em várias linhas consecutivas na tela (na verdade, é uma linha, em várias linhas - difícil de explicar, melhor para ver em prática).
No embrulho vim é definido por
:set wrap
para ligá-lo, e
:set textwidth=80
para determinar onde vim deve quebrar o texto (80 caracteres é geralmente uma medida agradável).
Folding, por outro lado é uma questão completamente diferente. Ele é aquela em que o vim dobras várias linhas de código (por exemplo, uma função) em uma linha de código. É útil para aumentar a legibilidade do código. Vim tem vários métodos dobráveis, você pode ver todos eles se você
:help folding
O que você está procurando, eu acho que seria, sintaxe dobrar, mas posso estar errado. Eu recomendo a leitura da página de ajuda, não é muito tempo, e muito útil.
Eu enrolado um dobrar plugin para C e C ++ . Ele vai além do que é feito com a sintaxe de dobramento (pode ser que poderia ser melhorado, eu não sei), e deixa menos barulhento e não as coisas realmente úteis se desenrolava, em comparação com o recuo e marcador dobrar base.
A ressalva:., A fim de ter tempo de reação decentes, eu tive que fazer algumas simplificações, e às vezes o resultado é bastante confusa (que tem que digitar zx
para corrigi-lo)
Aqui está um pequeno screencast para ver como o plugin dobras um código corretamente equilibrada C ++ fonte, que não está sendo modificado: (
vi (em oposição a vim) a resposta foi:
:set wm=1
Isto define a margem de envoltório para um caractere antes do final da linha. Este não é o melhor especificação do mundo, com janelas de tamanho variável (que fazia sentido com telas verdes quando era difícil alterar o tamanho).
Isso significa que há também uma forma alternativa de fazê-lo no vim:
:set textwidth=30
O que você provavelmente vai querer a definição
:set foldmethod=syntax
Mas não colocar isso em manualmente! Isso é falta para fora em um dos VIMS maiores recursos que está a ter configurações personalizadas para centenas de tipos de arquivo já embutidos. Para conseguir isso, adicione isso ao seu ~ / .vimrc
filetype plugin on
filetype indent on
detecção filetype se baseia principalmente em extensão, neste caso * arquivos .c. Veja: Ajuda: filetype para mais informações. Você também pode personalizar essas configurações com base filetype.
Na verdade, não há outra maneira muito simples e eficaz, que está usando foldmethod = marker
e conjunto foldmarker
ser {,}
. Em seguida, o resultado dobra faria se parece com:
- todas as funções dobra-ed. Basicamente, parece que o contorno no IDE. (E você também pode
set foldlevel=1
or mais, se você não quer dobrar tudo no início)
- isto é o que uma função normal parece quando você abri-lo com o nível-1 via
zo
.
Além disso, para fazer dobrar pela sintaxe precisa de um pouco de trabalho extra, e aqui está uma boa tutorial sobre isso. Mas eu acho vezes por marker={,}
é o bastante, e mais importante, é simples e puro.