มีวิธีที่จะบอกเป็นกลุ่มไม่ให้ตรวจสอบการสะกดคำของเอกสารลาเท็กซ์หรือไม่? ตัวอย่างเช่นการบล็อกรหัสโดยใช้minted
สภาพแวดล้อมหรือ URL ใน\url{}
?
(ฉันไม่แน่ใจว่ามันเกี่ยวข้องกับการตรวจสอบการสะกด แต่ฉันใช้ปลั๊กอินvimtexเพื่อแก้ไขไฟล์ลาเท็กซ์)
มีวิธีที่จะบอกเป็นกลุ่มไม่ให้ตรวจสอบการสะกดคำของเอกสารลาเท็กซ์หรือไม่? ตัวอย่างเช่นการบล็อกรหัสโดยใช้minted
สภาพแวดล้อมหรือ URL ใน\url{}
?
(ฉันไม่แน่ใจว่ามันเกี่ยวข้องกับการตรวจสอบการสะกด แต่ฉันใช้ปลั๊กอินvimtexเพื่อแก้ไขไฟล์ลาเท็กซ์)
คำตอบ:
@NoSpell
คุณสามารถปิดการตรวจสอบการสะกดไวยากรณ์สำหรับรายการด้วยการเพิ่มกลุ่มร่วมกับ คุณสามารถอ่าน:help spell-syntax
ข้อมูลและดูไฟล์ไวยากรณ์ของ tex ซึ่งน่าจะมีตัวอย่างอยู่แล้ว หากคุณพิมพ์:tabe $VIMRUNTIME/syntax/tex.vim
คุณควรได้รับไฟล์ไวยากรณ์ tex ในแท็บใหม่ หากคุณค้นหา/\c@NoSpell
คุณอาจเห็นบรรทัดเหมือนกัน
syn cluster texMathZoneGroup add=@NoSpell
texMathZoneGroup
คลัสเตอร์ได้ถูกกำหนดไว้ก่อนหน้านี้ในสคริปต์เพื่อให้มีจำนวนของรายการไวยากรณ์และที่นี่@NoSpell
จะถูกเพิ่มในกลุ่มที่จะตรวจสอบการสะกดปิดการใช้งานสำหรับรายการเหล่านี้ ฉันเกรงว่าฉันไม่สามารถบอกได้ว่าจะเปลี่ยนแปลงรายการไวยากรณ์ของคุณได้ดีที่สุดเพราะฉันไม่รู้ไฟล์ไวยากรณ์ที่ดีมาก อาจมีคลัสเตอร์ที่ชัดเจนอยู่แล้วซึ่งคุณสามารถเพิ่มได้อย่างง่ายดาย@NoSpell
หรือคุณอาจต้องสร้างคลัสเตอร์ที่contains=
รายการที่เป็นปัญหา คุณควรสร้างสำเนาของไฟล์ไวยากรณ์ในไดเรกทอรีรันไทม์ของผู้ใช้และใช้การเปลี่ยนแปลงที่นั่นแทนที่จะเปลี่ยนไฟล์ไวยากรณ์แบบกระจายหรือเพื่อใช้การเปลี่ยนแปลงในafter/syntax/tex.vim
หรือสคริปต์อื่นที่รันหลังจากโหลดไฟล์ไวยากรณ์ .
เนื่องจากคุณใช้ปลั๊กอินอาจมีตัวเลือกที่เกี่ยวข้องกับรายการที่ตรวจสอบการสะกด ฉันไม่ได้ใช้vimtex
แต่ Karl Lervågค่อนข้างกระตือรือร้นที่นี่และหากคุณได้รับความสนใจเขาสามารถตอบคำถามนั้นให้คุณได้
vimtex
วันนี้ไม่มี แต่ดูเหมือนว่าเหมาะสมที่จะไม่ใช้การสะกดคำในสภาพแวดล้อมที่ไม่ได้ใช้งานดังนั้นฉันอาจอัปเดตปลั๊กอินตามลำดับ ขอบคุณสำหรับคำอธิบายที่ดี!
syn region mintedZone start="\\begin{minted}" end="\\end{minted}" contains=@NoSpell
แต่ดูเหมือนจะไม่ช่วย ข้อเสนอแนะใด ๆ
~/.vim/after/syntax/tex.vim
คุณสามารถเพิ่มกฎไวยากรณ์ของคุณเองเพื่อเช่น เพื่อป้องกันการตรวจสอบการสะกดคำภายในคำสั่งเช่น\url
คุณสามารถใช้รหัสต่อไปนี้:
syntax match texStatement '\\command' nextgroup=texMyCommand
syntax region texMyCommand matchgroup=Delimiter start='{' end='}' contained contains=@NoSpell
ที่นี่texStatement
และเป็นกลุ่มที่มีการกำหนดโดยปลั๊กอินไวยากรณ์ภายในให้ดูDelimiter
:e $VIMRUNTIME/syntax/tex.vim
หากคุณต้องการเข้าใจคำสั่งข้างต้นฉันสามารถแนะนำส่วนช่วยเหลือต่อไปนี้: