ป้องกัน Vim ไม่ให้แบ่งลิงก์กลางแท็กใน markdown


16

สมมติว่าฉันมีไฟล์ Markdown นี้:

[Lorem ipsum dolor sit ](http://vi.stackexchange.com/many-links-are-often-very)

ดูดี แต่การเชื่อมโยงยังไม่เสร็จสิ้นดังนั้นฉันจึงพิมพ์-longและตอนนี้กลุ่มจะแบ่งบรรทัด:

[Lorem ipsum dolor sit
](http://vi.stackexchange.com/many-links-are-often-very-long)

เนื่องจากtextwidth=80การตั้งค่าของฉัน... ในขณะที่การแบ่งลิงก์กลางแท็กเป็นเครื่องหมายที่ถูกต้องในทางเทคนิคมันดูเหมือน IMHO ที่ไม่น่าดูมาก การมีไฟล์ต้นฉบับที่ดูดีเป็นจุดเรียง

ด้วยgqปัญหามักจะเลวร้ายยิ่ง:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus.
Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec
[Lorem ipsum dolor sit](http://vi.stackexchange.com/many-links-are-often-very-very-long)

กลายเป็นสิ่งนี้:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus.
Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec [Lorem
ipsum dolor
sit](http://vi.stackexchange.com/many-links-are-often-very-very-long)

มีวิธีใดบ้างที่ฉันจะบอก Vim หรือไวยากรณ์ของ markdown ว่าจะไม่ทำลายลิงก์ในลักษณะนี้?

  • อาจจะโดยการรักษาลิงก์ทั้งหมด (จาก [)ทำได้ถึง) เป็นคำเดียว
  • ฉันมีปัญหาเดียวกันกับ[this][type]ลิงค์มาร์กอัป

คำตอบ:


9

ในอดีตฉันมีปัญหาคล้ายกับลายเซ็นของฟังก์ชั่น นี่คือวิธีแก้ไขปัญหาของคุณ เพิ่มไปที่.vimrc:

au CursorMovedI *.md call ModifyTextWidth() " Use only within *.md files

function! ModifyTextWidth()
    if getline(".")=~'^.*\[.*\](.*)$' " If the line ends with Markdown link - set big value for textwidth
        setlocal textwidth=500
    else
        setlocal textwidth=80 " Otherwise use normal textwidth
    endif
endfunction

หมายเหตุคุณอาจต้องการเปลี่ยน'^.*\[.*\](.*)$'regex ขณะนี้หากมีข้อความใด ๆ หลังจากลิงก์บรรทัดอาจใช้งานไม่ได้ตามตัวอย่างของคุณ อย่างไรก็ตามหาก regex จะจับคู่บรรทัดที่มีลิงก์ภายในใด ๆ ปัญหาอื่นอาจปรากฏขึ้น:

Some info [here](https://www.google.com). Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris

ในตัวอย่างตัวแบ่งบรรทัดนี้ไม่ได้แทรกหลังจากamet,และควรเพิ่มด้วยตนเอง

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