Question

Je suis en train d'éditer des fichiers avec vim et obtenir le POD automatiquement plié (juste le POD, pas le Perl). Je n'arrive pas à le faire marcher. Je peux obtenir se plier à travailler parce que je peux mettre en évidence manuellement les lignes et le type zF et il se plie correctement.

Quelqu'un peut-il faire la lumière sur ce sujet?

Était-ce utile?

La solution

Vous avez oublié

:set foldmethod=syntax
:setf perl
:syntax on
:set foldenable
:syn region POD start=/^=head[123]/ end=/^=cut/ fold

Autres conseils

Coller ce qui suit à la end de votre fichier ~ / .vimrc:

fu! MyFoldSettings()
  set foldmethod=expr
  set foldexpression=MyFoldLevel(v:lnum)
  set foldenable
  set foldminlines=1
endf      

fu! MyFoldLevel(lev)
    let mytext = getline(a:lev)
    let result="="
    if mytext =~ '^=item'
        let result=">3"
    elsei mytext =~ '^=back'
        let result="<2"
    elsei mytext =~ '^=over'
        let result=">2"
    elsei mytext =~ '^=cut'
        let result="<1"
    elsei mytext =~ '^=\w\+'
        let result='>1'
    en    
    return result
endf

augroup MyFoldSettings_AutoCommands
   au!
   au BufReadPost {*.pl,*.pod,*.pm} MyFoldSettings()
augroup END

Cela devrait fonctionner dans la plupart des cas - Il est juste un exemple rapide et sale, mais vous pouvez ajouter plus trop si vous avez besoin de plus de fonctionnalités. En outre, pour assurer que cette option est activée, vous pouvez ajouter le modeline:

# vim:fen:fdo=hor:fcl=all:fdm=expr:fde=MyFoldLevel(v:lnum):fml=1

Si vous ne voyez pas le texte plié à ce point, essayez de régler le « foldopen = hor » et « foldclose = all » qui fera la navigation dans / déplie de plus facile. En outre, si vous avez besoin que cela soit appliqué à d'autres fichiers ou filetyps, vous pouvez configurer en conséquence l'au (autocommande). Vive.

Vous pouvez mettre dans votre .vimrc:

au FileType perl
    \ setlocal foldexpr=getline(v:lnum)=~'^=cut'?'<1':getline(v:lnum)=~'^='?'1':'=' |
    \ setlocal foldmethod=expr

Il suffit de définir les variables perl_fold_ *, la syntaxe perl système surligneur prendra soin du reste.

Dans Vimrc, il suffit d'ajouter

let perl_fold=1
let perl_fold_blocks=1 

est ce que j'utilise,

set syntax                                                                                                                                                               

augroup perl_folding                                                                                                                                                     
    au!                                                                                                                                                                  
    autocmd FileType perl setlocal foldmethod=syntax                                                                                                                     
    autocmd FileType perl setlocal foldlevel=1                                                                                                                           
    autocmd FileType perl let perl_fold = 1                                                                                                                              
    autocmd FileType perl let perl_fold_blocks = 1                                                                                                                       
    autocmd FileType perl setlocal foldenable                                                                                                                            
    au BufRead,BufNewFile *.pm set filetype=perl                                                                                                                         
augroup END
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top