Domanda

Sto cercando di modificare i file con vim e ottenere il POD ripiegato automaticamente (solo il POD, non il Perl). Non riesco a farlo funzionare. Posso ottenere stessa piegatura per lavorare perché posso evidenziare manualmente le linee e tipo zF e pieghe correttamente.

Qualcuno può far luce su questo?

È stato utile?

Soluzione

Si è dimenticato

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

Altri suggerimenti

Incolla quanto segue al end del file ~ / .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

Questo dovrebbe funzionare nella maggior parte dei casi - E 'solo un esempio veloce e sporco, ma è possibile aggiungere più anche se avete bisogno di più funzionalità. Inoltre, per rendere certo che questo sia abilitato si potrebbe desiderare di aggiungere il modeline:

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

Se non vedi il testo piegato a questo punto, provare a impostare il 'foldopen = Hor' e 'foldclose = all' che renderà la navigazione in / out di pieghe più facile. Inoltre, se avete bisogno di questo per essere applicato ad altri file o filetyps, è possibile impostare l'au (autocomando) di conseguenza. Cin cin.

Si può mettere questo nel vostro .vimrc:

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

Basta definire le variabili perl_fold_ *, l'evidenziatore di sintassi Perl sistema si prenderà cura di tutto il resto.

In Vimrc, basta aggiungere

let perl_fold=1
let perl_fold_blocks=1 

Questo è quello che sto 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top