どのように私はvimのでPerlでPODをautofoldことができますか?

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

  •  05-09-2019
  •  | 
  •  

質問

私はVIMでファイルを編集し、POD自動的に折りたたまれた(ちょうどPODではなく、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

これは、ほとんどのケースで動作するはずです - それはちょうど迅速かつ汚い例だが、あなたはより多くの機能が必要な場合は、より多くの、あまりにもそれを追加することができます。

:また、これはあなたがモードラインを追加したい場合があります有効になっていることを確認してくださいします
# vim:fen:fdo=hor:fcl=all:fdm=expr:fde=MyFoldLevel(v:lnum):fml=1
あなたはこの時点で折り畳まれたテキストを参照してくださいいけない場合は、

、/簡単に折り目のうちにナビゲーションを行います「foldopen = HOR」と「foldcloseを= all」を設定してみてください。あなたは、これが他のファイルやfiletypsに適用する必要がある場合にも、それに応じて、AU(自動コマンド)を設定することができます。乾杯ます。

あなたはあなたの.vimrcでこれを置くことができます:

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

ただ、システムのPerlのシンタックスハイライトは、残りの世話をする、perl_fold_ *変数を定義します。

の.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