سؤال

أحاول تحرير الملفات مع 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top