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