Frage

Ich versuche, Dateien mit Vim zu bearbeiten und die POD automatisch gefaltet (nur das POD, nicht das Perl) zu erhalten. Ich kann es nicht bekommen zu arbeiten. Ich kann Falten selbst zu arbeiten, weil ich manuell die Linien und Typ zF markieren und es klappt einwandfrei.

Kann jemand beleuchten das?

War es hilfreich?

Lösung

Sie haben vergessen,

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

Andere Tipps

Fügen Sie folgende an dem Ende Ihre ~ / .vimrc-Datei:

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

Dies sollte in den meisten Fällen funktioniert - Es ist nur ein schnelles und schmutziges Beispiel, aber Sie können mehr zu es hinzufügen, wenn Sie mehr Funktionalität benötigen. Auch, um sicherzustellen, dass diese aktiviert ist Sie möglicherweise die Modeline hinzufügen möchten:

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

Wenn Sie an dieser Stelle sehen gefaltet Text nicht, versuchen Sie den ‚foldopen = hor‘ und Einstellung ‚foldclose = alle‘ die Navigation machen wird in / aus leichten Falten. Auch, wenn Sie benötigen diese auf andere Dateien oder filetyps angewendet werden, können Sie die au (automatische Befehl) entsprechend eingerichtet. Prost.

Sie können Ihre .vimrc setzen diese in:

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

Just perl_fold_ * Variablen definieren, wobei das System Perl Syntax-Highlighter Pflege des Restes.

In .vimrc, fügen Sie einfach

let perl_fold=1
let perl_fold_blocks=1 

Dies ist, was ich verwende,

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top