Comment puis-je en Perl POD pliage automatique avec vim?
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?
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