¿Cómo puedo autoplegado POD en Perl con vim?
Pregunta
Estoy tratando de editar archivos con vim y obtener el POD plegada de forma automática (sólo el POD, no el Perl). No puedo conseguir que funcione. Puedo conseguir plegarse a trabajar porque puedo resaltar manualmente las líneas y el tipo zF
y se pliega correctamente.
¿Alguien puede arrojar luz sobre esto?
Solución
Se le olvidó
:set foldmethod=syntax
:setf perl
:syntax on
:set foldenable
:syn region POD start=/^=head[123]/ end=/^=cut/ fold
Otros consejos
Pegar lo siguiente en el final de su archivo ~ / .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
Esto debería funcionar en la mayoría de los casos - Es sólo un ejemplo rápido y sucio, pero se puede añadir más también que si necesita más funcionalidad. Además, para asegurarse de que está habilitado es posible que desee añadir el modeline:
# vim:fen:fdo=hor:fcl=all:fdm=expr:fde=MyFoldLevel(v:lnum):fml=1
Si usted no ve el texto plegado en este punto, intente configurar el 'foldopen = hor' y '= foldclose todo' lo que hará que la navegación a / fuera de pliegues más fácil. Además, si necesita que esto se aplica en otros archivos o filetyps, se puede configurar el au (AutoCommand) en consecuencia. Saludos.
Usted puede poner esto en su .vimrc:
au FileType perl
\ setlocal foldexpr=getline(v:lnum)=~'^=cut'?'<1':getline(v:lnum)=~'^='?'1':'=' |
\ setlocal foldmethod=expr
Sólo definir variables perl_fold_ *, el resaltador de sintaxis Perl sistema se encargará del resto.
En .vimrc, sólo tiene que añadir
let perl_fold=1
let perl_fold_blocks=1
Esto es lo que estoy usando,
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