Colapso e comentários de todas as funções no vim/gvim
Pergunta
Eu sou um usuário iniciante vim e eu não tenho sido capaz de encontrar na internet, como o colapso de funções e eu descobri como para recolher a lista de argumentos em C com zfa} e zfa).mas eu não consigo descobrir como para recolher as seções de comentários.Como faço isso?
Segunda pergunta, mas relacionados, há um modo de colapso de todas as funções/listas de argumentos/comentários em um arquivo ao mesmo tempo?
Solução
A funcionalidade que você está se referindo é chamado de "dobrar" (ver :help usr_28
).O zf o comando é usado para criar manualmente uma dobra e é usado somente se o foldmethod
a opção é definida para "marcador" ou "manual".Nos exemplos que você deu, você está criando dobras sobre as regiões especificado pelo a}
e a)
objetos de texto (ver :help usr_4.8
).
Para C, você pode setlocal foldmethod=syntax
e o dobramento regiões será automaticamente determinado pelas regras de sintaxe.Isso deve ser feito apenas para ficheiros C por colocar a definição de ~/.vim/ftplugin/c.vim
ou colocar a seguinte autocmd em seu ~/.vimrc
.
autocmd FileType c setlocal foldmethod=syntax
N. B.ambos exigem que tipo de detecção é ativado (filetype on
), e o ftplugin solução requer que tipo de arquivo plugins estão habilitados (filetype plugin on
).O último é um superconjunto do primeiro, assim você não precisa ambos os comandos em seu ~/.vimrc
.
Como para abrir/fechar todas as dobras no buffer atual, esses são os zR e zM comandos respectivamente.
Outras dicas
Adicione as seguintes definições para ~/.gvimrc:
"folding settings
set foldmethod=indent "fold based on indent
set foldnestmax=10 "deepest fold is 10 levels
set nofoldenable "dont fold by default
set foldlevel=1 "this is just what i use
Em seguida, você pode alternar dobrável com za.Você pode desistir de tudo com zM e desdobrar-se tudo com a zR.zm e zr pode ser usado para obter essas dobras apenas para a direita.Lembre-se sempre que o todo-poderoso arquivo de ajuda (help :dobrar" se você ficar preso.
Supondo que você tenha configurado suas regiões dobradas como você deseja, defina foldlevel
para o nível desejado.