รายการสัญลักษณ์แสดงหัวข้อย่อยสำหรับเอกสารข้อความธรรมดาในกลุ่ม


8

ในขณะที่ Vim รองรับการเยื้องรายการโดยอัตโนมัติการตั้งค่าเริ่มต้นจะครอบคลุมเฉพาะรายการที่เรียงลำดับเริ่มต้นด้วยตัวเลขเช่น:

1. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
   tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
2. veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
   commodo consequat.

ฉันไม่สามารถหาวิธีขยายรายการนี้ไปยังรายการที่ไม่มีการเรียงลำดับสัญลักษณ์แสดงหัวข้อย่อยเช่น:

* Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
* veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
  commodo consequat.

การเปลี่ยนformatlistpatRegEx ไม่ได้นำไปสู่ผลลัพธ์ที่ต้องการ

คำตอบ:


10

การรู้ว่าคุณพยายามตั้งค่าเป็นอะไรจะช่วยได้ แต่ฉันเดาว่าคุณไม่ได้ใช้แบ็กสแลชอย่างถูกต้อง

ค่าเริ่มต้นคือ

formatlistpat=^\s*\d\+[\]:.)}\t ]\s*

แต่เพื่อตั้งค่านั้น (ใน vimrc ของคุณหรือที่ cmdline) คุณต้องใช้

set formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*

:help option-backslashนี่คือคำอธิบายใน การปรับเปลี่ยนอย่างง่ายเพื่ออนุญาตให้formatlistpatทำงานกับรายการที่มีการ*คั่นและไม่มีการเรียงลำดับจะเป็น

set formatlistpat=^\\s*[0-9*]\\+[\\]:.)}\\t\ ]\\s*

แน่นอนว่าใช้ได้ดีขอบคุณมาก! ฉันคิดว่าฉันได้หลบหนีทุกอย่างอย่างถูกต้อง (ลดความซับซ้อนของรูปแบบ) แต่ดูเหมือนว่าฉันผิด ฉันอาจจะหนีออกจากดอกจันซึ่งจะอธิบายปัญหาของฉัน ...
AnC

2
ตามที่อธิบายไว้ในความช่วยเหลือสำหรับ[]การใช้งานนั้นเร็วกว่า[[:digits:]*]หรือ[\d*]มากกว่า[0-9*]
Aditya

หนึ่งสามารถก้าวเท้าเลี่ยงปัญหาข้อความโดยใช้letมากกว่าsetเช่นlet &formatlistpat='^\s*\(\d\+[\]:.)}\t ]\|[*-][\t ]\)\s*'. (นี่เป็นการเพิ่มการสนับสนุน*และ-เป็นสัญลักษณ์แสดงหัวข้อย่อยนอกเหนือจากตัวเลข)
wjv

@wjv ฉันลองใช้วิธีแก้ปัญหาแล้วมันใช้งานได้กับ - รายการ แต่ไม่ใช่ด้วยเครื่องหมายดอกจัน ความคิดใดที่ทำให้เกิดสิ่งนี้
languitar

@wjv ดูเหมือนว่า * ภายในcommentsตัวแปรแม้จะเป็นส่วนตรงกลางของความคิดเห็นสามส่วนให้ vim สร้างความสับสนให้ดอกจันกับความคิดเห็นของบรรทัด
languitar

3

นอกเหนือจากสิ่งที่ jamessan เขียน (โดยเฉพาะformatlistpatคำแนะนำของเขาสำหรับการทำงานกับรายการ *) สิ่งสำคัญคือต้องมีตัวเลือก 'c' (การจัดรูปแบบความคิดเห็น) ที่ไม่มีการตั้งค่าในformatoptions:

set formatoptions-=c

มิฉะนั้นจะทำให้สับสนระหว่างการจัดรูปแบบของรายการสัญลักษณ์แสดงหัวข้อย่อย * * * * และการจัดรูปแบบของความคิดเห็น คุณจบด้วย * พิเศษในบรรทัดที่ 2 และต่อไปนี้


ที่ไม่เพียง แต่q(ช่วยให้การจัดรูปแบบของการแสดงความคิดเห็นด้วยgq) ธงอาจทำให้เกิดปัญหาเมื่อจัดรูปแบบด้วยformatoptions gq+1
Kazark

1

ฉันมีปัญหาในการรับรายการที่เป็นที่a)รู้จักดังนั้นฉันจะโพสต์โซลูชันของฉันที่นี่:

" Recognise lists like 1), 1., a), a., and so on
" Note that | need to be escaped AND preceeded by a literal backslash
set formatlistpat=^\\s*\\([0-9]\\+\\\|[a-z]\\)[\\].:)}]\\s\\+

1

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

set formatlistpat=^\\s*[0-9*]\\+[\\]:.)}\\t\ ]\\s*
set formatoptions-=c
set comments-=mb:*
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.