กฎไฮไลต์ที่กำหนดเองอยู่ที่ไหน


11

บางครั้งฉันต้องการแทนที่ไวยากรณ์เริ่มต้นที่เน้นสีและสไตล์ด้วยการตั้งค่าของฉันเอง

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

  1. ถ้าผมต้องการตั้งไฮไลท์สำหรับกลุ่มไวยากรณ์ที่เฉพาะเจาะจงในภาษาเฉพาะไม่นี้เป็นของในสกีมสีของฉันหรือมันจะดีกว่าที่จะวางไว้ในafter/syntax/[filetype].vim?

    highlight jsAssignExpIdent cterm=bold gui=bold
    

    ดูเหมือนแปลกเล็กน้อยที่จะวางกฎเฉพาะภาษาที่ไม่ชัดเจนใน colorcheme เนื่องจากจะมีการโหลดภาษาใดก็ตามที่ฉันกำลังทำอยู่

  2. after/syntax/[filetype].vimบางครั้งฉันสร้างกฎไวยากรณ์ใหม่สำหรับภาษาเฉพาะใน ในกรณีที่ผู้ใช้รายอื่นต้องการใช้ส่วนขยายเหล่านี้มันจะเหมาะสมกับฉันหรือไม่ที่จะต้องจัดทำกฎการไฮไลต์เริ่มต้นที่นั่นซึ่งลิงก์ไปยังกลุ่มไฮไลต์เริ่มต้นทั่วไป หากผู้ใช้รายอื่นต้องการแทนที่สีเน้นสีนั้นพวกเขาควรทำเช่นไร?

    ::::: after/syntax/asm.vim :::::
    
    syn match asmHexNumber /\(0x\|\$\)[0-9A-Fa-f]\+/
    highlight default link asmHexNumber Number
    

คำตอบ:


9

คำถามแรก

นิยามที่เน้นเป็นของสีของคุณ ความจริงที่ว่าพวกเขาจะโหลดสำหรับทุกบัฟเฟอร์ไม่ว่าภาษาของพวกเขาไม่ควรจะมีปัญหาเลย

หากคุณไม่ต้องการแก้ไข colorcheme ของคุณคุณสามารถใส่คำจำกัดความของการเน้นสีเหล่านั้นในplugin/myhighlights.vim:

function! MyHighlights()
    highlight ...
    highlight ...
endfunction

augroup MyHighlights
    autocmd!
    autocmd ColorScheme * call MyHighlights()
augroup END

คำถามที่สอง

ตัวอย่างของคุณเป็นวิธีที่คุณควรทำและสคริปต์ไวยากรณ์ทุกตัวทำอย่างไร วิธีนี้ช่วยให้นักพัฒนาปลั๊กอินกำหนดค่าเริ่มต้นที่มีเหตุผลโดยไม่บังคับสีที่เฉพาะเจาะจงลงไปในลำคอของผู้ใช้


ขอบคุณสำหรับการยืนยัน แต่ฉันกังวลว่าฉันใส่highlight link ...คำสั่งในไฟล์ไวยากรณ์ว่าสิ่งเหล่านี้จะเขียนทับการตั้งค่าจาก colorscheme ทุกครั้งที่โหลดไฟล์ที่มีไฟล์ประเภทนั้น บางทีฉันควรเพียงทำhighlight link ...หลังจากการตรวจสอบว่ากฎไฮไลท์ไม่มีชื่อที่?
joeytwiddle

อาฉันไม่ต้องกังวล Vim docs พูดว่า: หากมีการเน้นการตั้งค่าสำหรับ {จากกลุ่ม} ลิงก์จะไม่ถูกสร้างขึ้นยกเว้นว่า '!' ได้รับ สำหรับคำสั่ง ": ไฮไลต์ลิงก์" ในไฟล์ที่มาคุณจะไม่ได้รับข้อความแสดงข้อผิดพลาด สามารถใช้เพื่อข้ามลิงค์สำหรับกลุ่มที่มีการตั้งค่าอยู่แล้ว
joeytwiddle

แต่สำหรับคนที่ปรับแต่งชุดสีของพวกเขา a highlight linkใน colorcheme สามารถถูกเขียนทับในภายหลังโดย a highlight linkในไฟล์ไวยากรณ์ เพื่อหลีกเลี่ยงปัญหานี้คุณสามารถใช้อาร์กิวเมนต์ที่แท้จริง (ctermbg, guifg, ... ) แทนลิงก์ได้
joeytwiddle

ผู้ใช้ควรมีคำสุดท้ายเกี่ยวกับสีที่ใช้สำหรับกลุ่มไฮไลต์ที่กำหนด สำหรับเอฟเฟกต์ดังกล่าวไม่ใช่เรื่องแปลกที่จะเห็นคำจำกัดความการเน้นเฉพาะภาษาเป็นสี คุณควรใช้highlight link ...ในสคริปต์ไวยากรณ์ของคุณและให้ผู้ใช้ของคุณแทนที่หากพวกเขาต้องการ
romainl

ความกังวลของฉันคือว่าถ้าผู้ใช้ใช้ในสกีมสีของพวกเขาแล้วไฟล์ไวยากรณ์อาจตั้งค่าได้ในภายหลังด้วยตัวของมันเองhighlight link ... ผมเห็นว่าตอนนี้ไฟล์ไวยากรณ์ที่ดีหลีกเลี่ยงปัญหานี้โดยใช้highlight link ... highlight default link ...นั่นอาจเป็นการแก้ไขasmHexNumberกฎในคำถามของฉัน
joeytwiddle
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.