การเปิดใช้งานการไฮไลต์ markdown ใน Vim


138

ฉันใช้ Vim ใน terminal บน MacBook Air ของฉันกับ OS X Lion และฉันไม่สามารถหาปลั๊กอินที่ดีสำหรับการเน้นไวยากรณ์ของ Markdown ได้

จนถึงตอนนี้ฉันได้ลองใช้plasticboy plugin และปลั๊กอินของTim Popeแล้ว ปลั๊กอินพลาสติกบอยทำงานได้ดี แต่ทำให้เกิดพื้นที่สีขาวในตอนท้ายของบรรทัดเพื่อเน้นและฉันไม่ได้คิดวิธีปิด (มันน่ารำคาญจริงๆเพราะทุกครั้งที่ฉันกดspaceเมื่อฉันเขียนมันจะเน้นตัวละคร)

ปลั๊กอินทิมไม่ได้ดูเหมือนจะทำมากในทางของไฮไลท์อื่น ๆ ###กว่าบางทีหัวว่าการใช้งาน บล็อคโค้ดและหัวข้อย่อยจะถูกละเว้น ฉันอาจจะพลาดบางสิ่งที่นั่น ฉันใช้.mdส่วนขยายในไฟล์ Markdown ของฉันดังนั้นจึงควรเลือกประเภทไฟล์

ฉันเคยเห็นการอ้างอิงถึง Vim 7.3 ที่มีการสนับสนุน Markdown อยู่แล้ว แต่ไม่มีปลั๊กอินตัวใดตัวหนึ่งจากสองตัวนี้เลยฉันไม่ได้เน้นเลย

ทำอย่างใดอย่างหนึ่งเหล่านี้ต้องใช้โทนสีที่เฉพาะเจาะจงในการทำงาน?


24
*.mdไม่ใช่ส่วนขยายที่ถูกต้องสำหรับ markdown อันนั้นสำหรับไฟล์ modula ปลั๊กอิน Tpope ทำงานได้ดี (ปลั๊กอินนี้ใช้งานได้ดี) คุณควรใช้*.markdownส่วนขยาย
lucapette

7
@lucapette ftdetect สำหรับปลั๊กอินทิมสมเด็จพระสันตะปาปาไม่ได้แก่พร้อมกับ:*.md *.markdown,*.mdown,*.mkd,*.mkdnปลั๊กอินพลาสติกบอยตรวจพบอัตโนมัติเท่านั้น*.mkd,*.markdown,*.mdwn
pb2q

1
จากแหล่งปลั๊กอินพลาสติกบอยดูเหมือนว่ามันจะตรวจจับ.mdเช่นกัน ตอนนี้ฉันถูกล็อคเข้ากับส่วนขยายนี้เพราะฉันใช้Scriptogr.amสำหรับบล็อกของฉันและเป็นส่วนขยายเดียวที่พวกเขารู้จักได้ในขณะนี้
Josh Earl

1
เพิ่งพบสิ่งนี้และเป็นร็อคกิ้งสวย ๆ สำหรับ github ปรุงรสมาร์กดาวน์: github.com/jtratner/vim-flavored-markdown
Matthew Turner

สำหรับปัญหาเกี่ยวกับplasticboy / vim-markdownโปรดเปิดปัญหาในโครงการเพื่อให้ผู้พัฒนาสามารถแก้ไขได้ ฉันพบว่าช่องว่างที่ต่อเนื่องสูงเป็นพฤติกรรมที่ดีเนื่องจากการเว้นวรรคสองครั้งสร้าง<br>แท็กดังนั้นผู้เขียนจึงควรตระหนักถึงสิ่งนั้น
Ciro Santilli 法轮功冠状病六四事件法轮功

คำตอบ:


22

การดำเนินการนี้ควรปิดการใช้งานการไฮไลต์พื้นที่สิ้นสุดบรรทัดเมื่อใช้ปลั๊กอิน plasticboy mkd:

:syn clear mkdLineBreak

คุณสามารถทำเช่นautocmdนั้นสำหรับส่วนขยายไฟล์ที่จำเป็นเพื่อให้คุณไม่จำเป็นต้องทำทุกครั้งที่คุณโหลดไฟล์ markdown

โปรดทราบว่าไฮไลต์เฉพาะนี้มีอยู่เพราะ Markdown ปฏิบัติต่อบรรทัดที่ลงท้ายด้วยอักขระช่องว่าง 2 ตัวหรือมากกว่าโดยการใส่ a <br>ดังนั้นมันจึงมีประโยชน์

plasticboy ปลั๊กอินการใช้TODOไฮไลต์สำหรับกฎนี้ซึ่งเป็นบิตมากเกินไปที่จะออกแบบมาเพื่อตามค่าเริ่มต้นจะฉูดฉาดจริงๆ - พื้นหลังสีเหลือง - เพื่อที่จะยืนออก คุณสามารถทำให้สิ่งนี้โดดเด่นน้อยลงด้วยการเปลี่ยนhighlightกฎนั้น วิธีหนึ่งที่รวดเร็วในการทำเช่นนี้จะเป็นอย่างไร:

:hi link mkdLineBreak Underlined

ตอนนี้ช่องว่างท้ายบรรทัดจะแสดงเป็นขีดเส้นใต้ ลองเชื่อมโยงไปยังhighlightกลุ่มอื่นเพื่อหาสิ่งที่อาจดึงดูดคุณมากขึ้น แทนที่จะใช้linkคุณจะได้เฉพาะเจาะจงมากขึ้นเกี่ยวกับช่องว่างท้ายบรรทัด: ตัวอย่างเช่นคุณสามารถระบุว่าพื้นที่ดังกล่าวปรากฏขึ้นเบากว่าหรือมืดกว่าพื้นหลังปกติเล็กน้อยโดยใช้highlightคำสั่งของคุณเองระบุctermfg ที่กำหนดเอง, ctermbg , guifg , การตั้งค่าguibg

ดังที่กล่าวมาข้างต้นคุณสามารถautocmdใช้การตั้งค่าเฉพาะของคุณได้

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับhighlightกลุ่มลิงค์ให้พิมพ์: :help group-nameและคุณจะเห็นรายการกลุ่มที่สามารถเชื่อมโยงได้ว่าควรแสดงตัวเองอย่างเป็นประโยชน์โดยใช้highlightกฎปัจจุบัน นอกจากนี้: :help highlight.


2
นั่นทำให้รู้สึกมาก ไม่ทราบว่าช่องว่างสองช่องมีความสำคัญใน Markdown ฉันคิดว่าฉันจะปล่อยให้มันเปิดใช้งานเว้นแต่จะทำให้ฉันไม่พอใจ ขอบคุณ!
Josh Earl

ใช่นั่นเป็นเหตุผลที่ไฮไลท์ไม่ได้เตะจนกว่าจะมีการเว้นวรรค 2 ครั้ง
pb2q

@ josh-earl ดูการแก้ไขของฉันสำหรับทางเลือกเพิ่มเติมเมื่อใช้งานปลั๊กอินพลาสติกบอย
pb2q

308

เกี่ยวกับไฮไลต์ไวยากรณ์ดั้งเดิมสำหรับ markdown ฉันคิดว่ามันใช้ได้กับไฟล์ที่มีนามสกุลเป็น.markdownค่าเริ่มต้นเท่านั้น
ฉันมีปัญหากับการเน้นไวยากรณ์ของมาร์คดาวน์สำหรับ.mdไฟล์ของฉัน
ฉันเหนื่อย:

:set syntax=markdown

และมันก็ใช้งานได้ ดังนั้นฉันรวมบรรทัดต่อไปนี้ในของฉัน.vimrc:

au BufNewFile,BufFilePre,BufRead *.md set filetype=markdown

ตอนนี้กลุ่มของฉันมีการเน้นไวยากรณ์สำหรับ.mdไฟล์ของฉัน

BufFilePre เป็นสิ่งจำเป็นสำหรับ: sav


13
สำหรับคนอื่นที่อ่านข้อความนี้: ใช่มันใช้งานได้และเป็นวิธีแก้ปัญหาที่ง่ายกว่าการติดตั้งปลั๊กอิน วิธีที่รวดเร็วในการทำสิ่งนี้จากบรรทัดคำสั่ง: echo "au BufRead, BufNewFile * .md set filetype = markdown" >>
.vimrc

11
ฉันคิดว่านี่ควรเป็นคำตอบที่ยอมรับได้
Enrico Campidoglio

4
@SamStoelinga ไม่ใช่ข้อผิดพลาดและ.mdยังถูกใช้โดย Modula การตรวจสอบว่าจะใช้อันใดต้องมีการวิเคราะห์พฤติกรรมขั้นสูง
nyuszika7h

8
ในฐานะของ Vim 7.4.480 *.mdไฟล์จะถูกจดจำเป็น Markdown ตามค่าเริ่มต้น
fwalch

1
ถูกต้อง แต่ไม่สมบูรณ์ สำหรับสิ่งนี้ในการทำงานร่วมกับSave As… :savคำสั่งอย่างเท่าเทียมกันเราจำเป็นต้องเพิ่ม autocommand ให้กับBufFilePre:autocmd BufNewFile,BufFilePre,BufRead *.md set filetype=markdown
Serge Stroobandt

19

การเน้นไวยากรณ์ดั้งเดิม

การเน้นไวยากรณ์ดั้งเดิมสำหรับ Markdown จะทำงานตามค่าเริ่มต้นสำหรับ.markdownนามสกุลไฟล์เท่านั้น

บรรทัดต่อไปนี้.vimrcให้ผลลัพธ์ที่ดีที่สุดสำหรับทั้งสองvimและgvim:

autocmd BufNewFile,BufFilePre,BufRead *.md set filetype=markdown.pandoc

คำอธิบาย:

1. ระบุรสชาติ Markdown ของคุณ!

หากคุณทำงานกับ Markdown หนึ่งรสชาติ (เช่นPandoc ) ส่วนใหญ่โปรดพูดถึงสิ่งนี้ด้วย! การทำเช่นนั้นอนุญาตให้ผสมและจับคู่ปลั๊กอิน Vim ทั้งแบบ Markdown และ Pandoc เฉพาะ ตัวอย่างเช่น: ฉันได้พบปลั๊กอินvim-pandoc-syntaxที่เหมาะสมกับความต้องการในการเน้นของฉันเป็นพิเศษ อย่างไรก็ตามฉันใช้vim-markdown-foldทั่วไปสำหรับ Markdown fold

โดยวิธีการอนุญาตให้ใช้เพียงรสชาติเดียวเท่านั้นโดยคั่นด้วยจุดเช่น: filetype=markdown.pandoc

2. gvimต้องการBufFilePre

gvimต้องการเพิ่มเติมBufFilePreในบรรทัด autocommand สำหรับการจดจำชนิดไฟล์ Markdown ด้วยSave As… :savคำสั่ง


15

ในทิมปลั๊กอิน.mdนามสกุลทำงานเฉพาะสำหรับREADME.md เพราะfiletype.vimระบุดังนั้น

" Markdown
au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,README.md  setf markdown

1
false; คุณต้องคำนึงถึงการติดตั้ง Vim เริ่มต้นซึ่งจะทำงานในลักษณะนี้ ปลั๊กอินของทิมจะแทนที่ไฟล์. md ทั้งหมด ดูgithub.com/tpope/vim-markdown/blob/master/ftdetect/markdown.vim
corvec

7

หากคุณไม่ต้องการให้การกำหนดค่าทั้งหมดของคุณเข้า~/.vimrcคุณสามารถสร้าง~/.vim/ftdetect/markdown.md(หรือเทียบเท่าใน Windows) ด้วยเนื้อหาดังต่อไปนี้

au BufNewFile,BufRead *.md setf markdown

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