VIM과 함께 Perl의 포드를 어떻게 자동으로 보낼 수 있습니까?

StackOverflow https://stackoverflow.com/questions/565486

  •  05-09-2019
  •  | 
  •  

문제

VIM으로 파일을 편집하고 포드를 자동으로 접 히려고합니다 (PERL이 아닌 포드 만). 나는 그것을 작동시킬 수 없다. 선과 유형을 수동으로 강조 할 수 있기 때문에 직접 접을 수 있습니다. zF 그리고 제대로 접습니다.

누구든지 이것에 빛을 발할 수 있습니까?

도움이 되었습니까?

해결책

당신은 잊었

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

다른 팁

다음을 붙여 넣으십시오 귀하의 ~/.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

이것은 대부분의 경우 작동해야합니다. 빠르고 더러운 예일 뿐이지 만 더 많은 기능이 필요한 경우 더 많이 추가 할 수 있습니다. 또한 이것이 활성화되어 있는지 확인하려면 Modeline을 추가 할 수 있습니다.

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

이 시점에서 접힌 텍스트가 표시되지 않으면 'foldopen = hor'및 'foldclose = all'을 설정하여 접힘을 더 쉽게 내리거나 내립니다. 또한 다른 파일 또는 파일 파일에 적용 해야하는 경우 AU (AutoCommand)를 설정할 수 있습니다. 건배.

이것을 .vimrc에 넣을 수 있습니다.

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

perl_fold_* 변수를 정의하면 시스템 Perl Syntax Highlighter가 나머지를 처리합니다.

.VIMRC에서 추가하십시오

let perl_fold=1
let perl_fold_blocks=1 

이것이 제가 사용하는 것입니다.

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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top