Vim Markdown ปฏิบัติต่อ codeblock ที่ไม่พอใจเป็นความคิดเห็น

Sep 09 2020

ฉันใช้การจัดรูปแบบข้อความอัตโนมัติที่ค่อนข้างดีสำหรับ Markdown:

(เห็น https://asciidoc.org/userguide.html#X61)

augroup TXT | au!
  autocmd FileType asciidoc,markdown
    \ setlocal autoindent expandtab tabstop=8 softtabstop=2 shiftwidth=2
    \ textwidth=70 wrap formatoptions=atqn
    \ formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\\|^\\s*<\\d\\+>\\s\\+\\\\|^\\s*[a-zA-Z.]\\.\\s\\+\\\\|^\\s*[ivxIVX]\\+\\.\\s\\+
    \ comments=s1:/*,ex:*/,://,b:#,:%,:XCOMM,fb:-,fb:*,fb:+,fb:.,fb:>
    \ listchars=tab:»·,trail:·
    \ list |
  autocmd FileType asciidoc,markdown silent! %foldopen!
augroup END

การเยื้องอัตโนมัตินี้จะแสดงรายการและทำให้บล็อกข้อความของฉันสั้นลงโดยการแทรกฮาร์ดเบรกโดยอัตโนมัติหรือลบออกตามความเหมาะสม

อย่างไรก็ตามพฤติกรรมนี้เข้ามาในทางของฉันเมื่อป้อนรหัสรั้วเนื่องจาก Vim พยายามผสานบรรทัดที่ไม่ได้คั่นด้วยย่อหน้าเข้าด้วยกันจนกว่าจะถึงความกว้างของข้อความ

ฉันสามารถปิดใช้งานการจัดรูปแบบอัตโนมัติในรหัสรั้วทั้งหมดได้หรือไม่? จะcomments=มีลักษณะอย่างไรในการปฏิบัติต่อทุกสิ่งระหว่าง

```
fenced code
```

เป็นความคิดเห็นเป็นกลุ่มไม่ควรจัดรูปแบบอัตโนมัติ? ดูส่วนที่ไม่มีformatoptions=-cด้านบนซึ่งฉันคิดว่า Vim จะใช้เวลาในการแสดงความคิดเห็นของฉันคนเดียว

คำตอบ

2 MaximKim Sep 14 2020 at 20:19

ผมเกรงว่ามันคือ "เป็นไปไม่ได้" commentsจะทำอย่างไรกับ สิ่งนี้คือมันไม่ได้วิเคราะห์ว่ามันอยู่ในความคิดเห็นจริงหรือไม่ - ถือว่าเป็นความคิดเห็นจริง มันถูกแย่งชิงสำหรับรายการเนื่องจากมีความคล้ายคลึงกันใน asciidoc และ markdown ความคิดเห็นที่เหมือน C คือ:

/*****************************
* comment line 1
* comment line 2
******************************/

ดังนั้นหากคุณกด Enter หลังความคิดเห็นบรรทัดที่ 2 มันจะดำเนินการต่อในบรรทัดถัดไปที่เติม "bullet"

แน่นอนคุณสามารถลองใช้โซลูชันของคุณเอง:

  1. แมป<CR>ในโหมดแทรกกับฟังก์ชันที่คุณต้องวิเคราะห์สภาพแวดล้อมเช่นค้นหาย้อนหลังสำหรับการเริ่มบล็อกที่มีรั้วกั้นและปิดcommentsหากพบ

  2. หรือทำเช่นเดียวกันโดยไม่commentsใช้การแทรกสัญลักษณ์แสดงหัวข้อย่อยของคุณเอง

แต่มันจะเปราะบางหรือช้าหรือทั้งสองอย่าง