หลายวิธีในกลุ่ม


9

ฉันใช้ตัวเลือกการพับของเสียงเรียกเข้าค่อนข้างมากและมักจะตั้งค่าfoldmethodเป็นไวยากรณ์ เมื่อเร็ว ๆ นี้ฉันค้นพบว่ามันเป็นไปได้ที่จะเพิ่มการพับแบบกำหนดเองเช่นฉันสามารถใส่บล็อกทั้งหมด/*{{{*/และ/*}}}*/ซึ่งมีประโยชน์มากสำหรับการจัดกลุ่มส่วนใหญ่ของไฟล์ต้นฉบับเข้าด้วยกัน อย่างไรก็ตามในการใช้คุณสมบัตินั้นฉันจำเป็นต้องตั้งค่า foldmethod เป็น marker และฉันปล่อยการพับไวยากรณ์

เป็นไปได้หรือไม่ที่จะมีสองเท่าของ active active ในเวลาเดียวกันเป็นกลุ่ม? set foldmethod=syntax,markerไม่ทำงาน, ไม่เป็นผล.

คำตอบ:


4

ไม่พูดอย่างเคร่งครัดเป็นไปไม่ได้ที่จะมีหลายวิธีในการใช้งาน Vim ในเวลาเดียวกัน

คุณสามารถเลียนแบบการพับแบบมาร์กเกอร์ได้หากคุณยินดีที่จะเรียนรู้วิธีเขียนกฎการเน้นไวยากรณ์และแฮ็กไฟล์ไฮไลต์สำหรับภาษาที่คุณต้องการเพิ่มการจำลองการพับเครื่องหมาย การทำเช่นนั้นมีข้อบกพร่องสองประการ:

  1. คำสั่งในการสร้าง / ลบการพับ ("zf", "zd" และอื่น ๆ ) ซึ่งทำงานกับตัวทำเครื่องหมายและวิธีการพับแบบแมนนวลจะไม่ทำงานเมื่อการตั้งค่า foldmethod เป็น "ไวยากรณ์"

  2. การเลียนแบบเครื่องหมายที่ "บังคับ" ระดับการพับ (เช่น " {{{1" / " }}}1") เมื่อเทียบกับการเพิ่ม / ลดระดับการพับโดยหนึ่ง (เช่น " {{{" / " }}}") เป็นปัญหา; ไม่ว่าคุณจะต้องเพิกเฉยกับหมายเลขระดับการพับทั้งหมดหรือใช้โอกาสที่คุณจะเข้าไปยุ่ง - และอาจจะแตก - ส่วนที่เหลือของกฎการพับแบบอิงไวยากรณ์

ฉันขอแนะนำว่าเมื่อคุณพบว่าคุณต้องการการพับตามเครื่องหมายคุณใช้วิธีการนั้นโดยสิ้นเชิง อาจใช้เวลาและความพยายามเพิ่มขึ้นเล็กน้อย แต่ถ้าคุณต้องการความยืดหยุ่นอย่างแท้จริงอาจคุ้มค่าโดยเฉพาะอย่างยิ่งเมื่อพิจารณาถึงความยากลำบากในการรวมทั้งสองอย่างเข้าด้วยกัน


2

ฉันกำลังมองหาสิ่งเดียวกัน เนื่องจากฉันไม่ต้องการแฮ็กไฟล์ไวยากรณ์ แต่ฉันมีการแมปเพื่อสลับระหว่าง foldmethods ตอนนี้ฉันสลับระหว่างไวยากรณ์และเครื่องหมายเท่านั้น:

nmap <Leader>ff :call <SID>ToggleFold()<CR>
function! s:ToggleFold()
    if &foldmethod == 'marker'
        let &l:foldmethod = 'syntax'
    else
        let &l:foldmethod = 'marker'
    endif
    echo 'foldmethod is now ' . &l:foldmethod
endfunction
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.