vim を使用してファイルを編集し、POD を自動的に折りたたもうとしています (Perl ではなく POD のみ)。私はそれを働かせることができません。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」を設定してみてください。これにより、折り畳みへの移動が容易になります。また、これを他のファイルまたはファイルタイプに適用する必要がある場合は、それに応じて au (自動コマンド) を設定できます。乾杯。
perl_fold_* 変数を定義するだけで、あとはシステムの perl シンタックス ハイライターが処理します。
.vimrc で、追加するだけです
let perl_fold=1
let perl_fold_blocks=1