A sintaxe foldmethod
é ótima, mas às vezes eu só quero dobrar os comentários em um arquivo de origem.
Também a dobragem de sintaxe dos comentários funciona apenas para comentários no estilo C, como:
/*
...
*/
Mas não para comentários como:
//
//
// ...
//
Ou mesmo para blocos de comentários em idiomas que não sejam do tipo C, como:
#
#
# ...
#
Como posso configurar isso com o vim?
Respostas:
Dobrar apenas os comentários é bastante fácil usando
foldmethod=expr
:Isso simplesmente verificará se a linha começa com qualquer quantidade de espaço em branco + um caractere de comentário. Observe que isso é bastante ingênuo e pode não funcionar para todos os idiomas. Portanto, você pode usar um autocmd para ser mais específico:
Para mais informações sobre fold-expr, consulte:
:help fold-expr
:help folding-functions
O uso de dobras de sintaxe e de comentários está mais envolvido; isso exigiria a modificação do arquivo de sintaxe
/usr/share/vim/vim74/syntax/*.vim
e será específico para o idioma que você está usando.Observe que alguns tipos de arquivos já fazem isso! Por exemplo, de
ruby.vim
:fonte
Gosto de dobrar com recuo, mas incluir os comentários na dobra (quero dizer que cada comentário tem o mesmo nível de dobra da linha anterior).
Infelizmente, a palavra-chave foldignore funciona apenas para comentários de uma linha. Então eu dobrei com expr no vimrc:
O último bloco:
Retorna uma base de nível de dobra no recuo.
E o outro :
Verifica se o primeiro caractere da linha é considerado como um comentário com a sintaxe. Portanto, é uma boa maneira de mesclar o recuo e a dobra de sintaxe com a expressão, a dobra mais avançada.
Observe que você também pode "definir o texto da dobra", dependendo de como deseja que o resultado seja.
fonte
Você pode selecionar visualmente o bloco comentado
vac
e criar uma dobra manualzf
.O objeto de texto do comentário pode ser uma extensão do idioma para o conjunto de objetos de texto padrão do vim. Testei com a sintaxe Go.
fonte
ac
não é um builtin. Mas com o comentário do tpopegc
é um objeto de texto. Assim, as melhores soluções sãozfac
,zfgc
ouzfip
na pior das hipóteses