เป็นกลุ่ม: ฟังก์ชั่นพับแบบกำหนดเองเสร็จแล้วจำเป็นต้องมีการเน้นสีที่กำหนดเอง


0

ฉันได้กำหนดฟังก์ชั่นเป็นกลุ่มเพื่อเยื้องอย่างถูกต้อง นั่นคือพวกเขามีลักษณะเช่นนี้:

กางออก

this is text 
also text
    indented text
    indented text
not indented text

พับด้วยฟังก์ชั่นเริ่มต้น

this is text 
also text
+-- 2 lines: indented text ----------------------------
not indented text

พับด้วยฟังก์ชั่นใหม่ของฉัน

this is text 
also text
    ++- 2 lines: indented text ----------------------------
not indented text

ปัญหาเดียวคือการเน้นยังคงเป็นเช่นนี้:

พับด้วยฟังก์ชั่นใหม่ของฉัน (ไฮไลต์แสดงด้วยแท็ก)

this is text 
also text
<hi>    ++- 2 lines: indented text ----------------------------</hi>
not indented text

ฉันต้องการไฮไลต์ให้เริ่มต้นที่ ++ ไม่ใช่จุดเริ่มต้นของบรรทัด ฉันได้ดูในคู่มือ vim แล้ว แต่ไม่พบอะไรแบบนั้น วิธีแก้ปัญหาพอดูได้ที่ฉันพบคือการทำให้พื้นหลังเป็นสีดำ

highlight Folded ctermbg=black ctermfg=white cterm=bold

แต่สิ่งนี้ทำให้พับได้น้อยลง

ฉันได้ลอง:

syn keyword Folded lines
syn region Folded ...

แต่ฉันไม่คิดว่านี่เป็นวิธีที่จะเลือกพับ ใครสามารถเสนอคำแนะนำได้บ้าง

ด้วยวิธีนี้เป็นฟังก์ชั่นของฉันเพื่อเยื้องเท่า:

set foldmethod=indent

function! MyFoldText()
        let lines = 1 + v:foldend - v:foldstart
        let ind = indent(v:foldstart)

        let spaces = ''
        let i = 0
        while i < ind
                let i = i+1
                let spaces = spaces . ' '
        endwhile

        let linestxt = 'lines'
        if lines == 1
                linestxt = 'line'
        endif

        return spaces . '+' . v:folddashes . ' '. lines . ' ' . linestxt . ': ' . getline(v:foldstaendfunction
endfunction


au BufWinEnter,BufRead,BufNewFile * set foldtext=MyFoldText()

โดยวิธีการขอบคุณ njd ที่ช่วยฉันในการตั้งค่าฟังก์ชั่นนี้


นี่อาจเป็นคำตอบที่รวดเร็วกว่า stackoverflow.com
nathan

ขอบคุณฉันข้ามโพสต์ไว้ที่นี่: stackoverflow.com/questions/2425522/... .. ฉันควรปิด / ลบกระทู้นี้ทันทีหรือปล่อยไว้ไหม
sixtyfootersdude

คำตอบ:


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.