5

vim を使用してファイルを編集し、POD を自動的に折りたたもうとしています (Perl ではなく POD のみ)。私はそれを働かせることができません。zF手動で行を強調表示して入力すると、適切に折り畳まれるので、折り畳み自体を機能させることができます。

誰でもこれに光を当てることができますか?

4

5 に答える 5

10

あなたが忘れてしまった

:set foldmethod=syntax
:setf perl
:syntax on
:set foldenable
:syn region POD start=/^=head[123]/ end=/^=cut/ fold
于 2009-02-19T16:01:22.123 に答える
2

~/.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」を設定してみてください。これにより、折り畳みへの移動が容易になります。また、これを他のファイルまたはファイルタイプに適用する必要がある場合は、それに応じて au (自動コマンド) を設定できます。乾杯。

于 2014-10-27T22:20:55.077 に答える
0

perl_fold_* 変数を定義するだけで、あとはシステムの perl シンタックス ハイライターが処理します。

.vimrc で、追加するだけです

let perl_fold=1
let perl_fold_blocks=1 
于 2015-08-29T10:21:33.757 に答える