كيف يمكنني AutoFold Pod في بيرل مع VIM؟
سؤال
أحاول تحرير الملفات مع VIM والحصول على جراب تلقائيا مطوية (مجرد جراب، وليس بيرل). لا أستطيع الحصول عليها للعمل. يمكنني الحصول على قابلة للطي في العمل لأنني أستطيع تسليط الضوء على الأسطر ونوعها يدويا 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 = الكل" الذي سيجعل التنقل في / خارج طيات أسهل. أيضا، إذا كنت بحاجة إلى تطبيق هذا الملفات أو الملفات الأخرى، فيمكنك إعداد AU (AutoCommand) وفقا لذلك. هتافات.
يمكنك وضع هذا في .vimrc الخاص بك:
au FileType perl
\ setlocal foldexpr=getline(v:lnum)=~'^=cut'?'<1':getline(v:lnum)=~'^='?'1':'=' |
\ setlocal foldmethod=expr
فقط حدد Perl_fold_ * المتغيرات، فإن نظام Highlighter Perl Perl Syntax سيعتني بالباقي.
في .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