เปลี่ยน / เพิ่มการเน้นไวยากรณ์สำหรับภาษาใน Sublime 2/3


94

ฉันต้องการเปลี่ยน / เพิ่มการเน้นไวยากรณ์สำหรับภาษาใน Sublime 2/3

ตัวอย่างเช่นฉันต้องการให้คำหลักเป็นthisสีใน JavaScript

ฉันจะทำเช่นนั้นได้อย่างไร?

ฉันรู้ว่ามีไฟล์ JavaScript ที่ต้องการC:\Program Files\Sublime Text 3\Packagesแต่ฉันไม่รู้ว่าต้องเปลี่ยนอะไรหรือต้องสร้างไฟล์ JavaScript Preference ใหม่ที่ไหนสักแห่งในโฟลเดอร์%APPDATA%\Sublime Text 3นี้

คำตอบ:


95

Preferences -> Color Schemeเน้นไวยากรณ์ที่ถูกควบคุมโดยรูปแบบที่คุณใช้ผ่านการเข้าถึง ธีมเน้นคีย์เวิร์ดฟังก์ชันตัวแปร ฯลฯ ที่แตกต่างกันผ่านการใช้ขอบเขตซึ่งกำหนดโดยชุดนิพจน์ทั่วไปที่มีอยู่ใน.tmLanguageไฟล์ในไดเร็กทอรี / แพ็กเกจของภาษา ตัวอย่างเช่นJavaScript.tmLanguageไฟล์กำหนดขอบเขตsource.jsและvariable.language.jsให้กับthisคีย์เวิร์ด เนื่องจาก Sublime Text 3 ใช้.sublime-packageรูปแบบไฟล์ zip เพื่อจัดเก็บการตั้งค่าเริ่มต้นทั้งหมดจึงไม่ง่ายที่จะแก้ไขไฟล์แต่ละไฟล์

น่าเสียดายที่ไม่ใช่ทุกธีมที่มีขอบเขตทั้งหมดดังนั้นคุณจะต้องเล่นกับธีมต่างๆเพื่อค้นหาธีมที่ดูดีและให้ไฮไลต์ที่คุณกำลังมองหา มีธีมมากมายที่รวมอยู่ใน Sublime Text และอีกมากมายที่มีอยู่ในPackage Controlซึ่งฉันขอแนะนำให้ติดตั้งหากคุณยังไม่ได้ทำ ให้แน่ใจว่าคุณทำตามทิศทาง ST3

ในขณะที่มันเกิดขึ้นฉันได้พัฒนาNeon Color Schemeซึ่งพร้อมใช้งานผ่านการควบคุมแพ็คเกจซึ่งคุณอาจต้องการดู เป้าหมายหลักของฉันนอกเหนือจากการพยายามทำให้ภาษาที่หลากหลายดูดีที่สุดเท่าที่จะเป็นไปได้คือการระบุขอบเขตต่างๆให้มากที่สุดเท่าที่จะทำได้ซึ่งมีมากกว่าที่รวมอยู่ในธีมมาตรฐาน ในขณะที่ความหมายภาษา JavaScript ไม่เป็นอย่างละเอียดเป็นงูใหญ่ตัวอย่างเช่นNeonยังคงมีความหลากหลายมากขึ้นกว่าบางส่วนของการเริ่มต้นเหมือนหรือMonokaiSolarized

jQuery เน้นด้วยธีมนีออน

ฉันควรทราบว่าฉันใช้Better JavaScriptคำจำกัดความภาษาของ @ int3h สำหรับภาพนี้แทนที่จะใช้คำจำกัดความที่มาพร้อมกับ Sublime สามารถติดตั้งผ่าน Package Control

อัปเดต

ของสายฉันได้ค้นพบความหมายภาษาทดแทนอีก JavaScript JavaScriptNext - ES6 Syntax- มีขอบเขตมากกว่า JavaScript พื้นฐานหรือแม้แต่ JavaScript ที่ดีกว่า ดูเหมือนสิ่งนี้ในรหัสเดียวกัน:

JavaScript ถัดไป

นอกจากนี้ตั้งแต่แรกที่ฉันเขียนคำตอบนี้ @skuroda ได้เผยแพร่PackageResourceViewerผ่าน Package Control ช่วยให้คุณสามารถดูแก้ไขและ / หรือแยกส่วนต่างๆของ.sublime-packageแพ็คเกจหรือทั้งหมดได้อย่างราบรื่น ดังนั้นหากคุณเลือกคุณสามารถแก้ไขโครงร่างสีที่มาพร้อมกับ Sublime ได้โดยตรง

อัปเดตอีกครั้ง

ด้วยการเปิดตัวแพ็คเกจเริ่มต้นเกือบทั้งหมดบน Githubการเปลี่ยนแปลงเกิดขึ้นอย่างรวดเร็วและรุนแรง ไวยากรณ์ JS เก่าได้รับการเขียนใหม่ทั้งหมดเพื่อรวมส่วนที่ดีที่สุดของ JavaScript Next ES6 Syntax และตอนนี้เข้ากันได้กับ ES6 อย่างสมบูรณ์เท่าที่จะทำได้ ตันของการเปลี่ยนแปลงอื่น ๆ ที่ได้รับการทำไปที่มุมปกและขอบกรณีปรับปรุงความสอดคล้องและเพียงแค่โดยรวมให้ดีขึ้น ไวยากรณ์ใหม่ได้รวมอยู่ในdev build 3111 ล่าสุด (ณ เวลานี้)

หากคุณต้องการที่จะใช้ใด ๆ ของไวยากรณ์ใหม่กับปัจจุบันเบต้าสร้าง 3103 เพียงแค่โคลน Github repo บางแห่งและเชื่อมโยงJavaScript(หรือภาษาใด (s) ที่คุณต้องการ) ลงในPackagesไดเรกทอรี - Preferences -> Browse Packages...ค้นหาได้ในระบบของคุณโดยการเลือก จากนั้นทำgit pullในไดเร็กทอรี repo ดั้งเดิมเป็นครั้งคราวเพื่อรีเฟรชการเปลี่ยนแปลงใด ๆ และคุณสามารถเพลิดเพลินกับสิ่งล่าสุดและยิ่งใหญ่ที่สุดได้! ฉันควรทราบว่า repo ใช้.sublime-syntaxรูปแบบใหม่แทนรูปแบบเก่า.tmLanguageดังนั้นจึงจะไม่ทำงานกับ ST3 บิลด์ก่อน 3084 หรือกับ ST2 (ในทั้งสองกรณีคุณควรอัปเกรดเป็นเบต้าหรือเวอร์ชัน dev ล่าสุดแล้ว)

ฉันกำลังปรับแต่ง Neon Color Scheme ของฉันเพื่อจัดการขอบเขตใหม่ทั้งหมดในไวยากรณ์ JS ใหม่ แต่ส่วนใหญ่ควรจะครอบคลุมอยู่แล้ว


ฉันติดตั้ง Package Control และ Better JavaScript ของคุณแล้ว ฉันจะกำหนดโครงการให้เป็นของคุณได้อย่างไร? ไม่มีการระบุไว้ใน Color Scheme
Niklas

คุณติดตั้ง "Neon Theme" ผ่าน Package Control ด้วยหรือไม่? เมื่อคุณมีไปและรับPreferences -> Color Scheme -> Neon Theme Neon
MattDMo

1
หากคุณติดตั้งแพ็กเกจผ่าน Package Control แพ็กเกจเหล่านี้จะถูกจัดเก็บโดยอัตโนมัติในจุดที่ถูกต้องในกรณี%APPDATA%\Sublime Text 3\Installed Packages\Neon Theme.sublime-packageนี้ การเลือกตัวเลือกเมนูด้านบนจะอัปเดตPackages\User\Preferences.sublime-settingsไฟล์ของคุณโดยอัตโนมัติเช่นกัน
MattDMo

@MattDMo - ว้าวมันละเอียดมาก ฉันแค่พยายามทำสีไวยากรณ์และแก้ไขการเสริมแรงสำหรับมาร์กอัปแบบ XML แต่มีปัญหาในการหาวิธีเริ่มต้นกับสิ่งที่ง่ายสุด ๆ ฉันจะเริ่มทำวิศวกรรมย้อนกลับได้จากที่ใดหรือขอคำแนะนำเกี่ยวกับการสร้างจาก
Timothy T.

1
@ nmz787 ถ้าสิ่งที่คุณต้องการเป็นไฟล์แล้วเพียงแค่ดาวน์โหลดและคัดลอกไป.sublime-syntax ~/.config/sublime-text-3/Packages/Userจากนั้นจะอยู่ในเมนูไวยากรณ์ที่ด้านล่างขวาสุดของหน้าต่าง Sublime ไม่ว่าจะเป็นของตัวเอง (จะมีข้อความว่า "SystemVerilog") หรือภายใต้Userเมนูย่อยขึ้นอยู่กับการตั้งค่าของคุณ หากคุณต้องการแพ็คเกจทั้งหมดตรวจสอบให้แน่ใจว่าได้ติดตั้ง Package Control อย่างถูกต้องแล้วเปิดจานคำสั่งพิมพ์pciกด Enter ค้นหาSystemVerilogและกด Enter คุณไม่จำเป็นต้องเปลี่ยนชื่อไฟล์หรืออะไรเลย - ทำไมคุณถึงทำเช่นนั้น?
MattDMo

31

ในที่สุดฉันก็พบวิธีปรับแต่งธีมที่กำหนด

ไปC:\Program Files\Sublime Text 3\Packagesและคัดลอกเปลี่ยนชื่อ + ที่จะColor Scheme - Default.sublime-package หลังจากนั้นเปิดเครื่องรูดมันและคัดลอกรูปแบบที่คุณต้องการที่จะเปลี่ยนแปลงColor Scheme - Default.zip %APPDATA%\Sublime Text 3\Packages\User(ในกรณีของฉันAll Hallow's Eve.tmTheme)

จากนั้นคุณสามารถเปิดด้วย Text Editor และเปลี่ยนแปลง / เพิ่มบางสิ่งตัวอย่างเช่นการเปลี่ยนthisใน JavaScript:

<dict>
    <key>name</key>
    <string>Lang Variable</string>
    <key>scope</key>
    <string>variable.language</string>
    <key>settings</key>
    <dict>
        <key>foreground</key>
        <string>#FF0000</string>
    </dict>
</dict>

สิ่งนี้จะทำเครื่องหมายthisในไฟล์ JavaScript เป็นสีแดง Preferences -> Color Scheme -> User -> <Your Name>คุณสามารถเลือกธีมของคุณภายใต้


1
ใช่นี่คือวิธีแก้ปัญหาที่ยุ่งเหยิงที่เราทุกคนต้องคุ้นเคยเมื่อเราเข้าใกล้โลกใหม่ของ Sublime Text 3 ที่กล้าหาญฉันแน่ใจว่าจะมีปลั๊กอินอีกไม่นานที่ช่วยให้.sublime-packageแก้ไขได้ง่ายขึ้นมาก...
MattDMo

9
ปลั๊กอินนั้นอยู่ที่นี่ - เรียกPackageResourceViewerและสามารถติดตั้งผ่าน Package Control มันทำให้การทำงานกับ.sublime-packageไฟล์Sublime Text 3 ง่ายขึ้นมากและฉันขอแนะนำเป็นอย่างยิ่งหากคุณกำลังวางแผนที่จะปรับแต่งใด ๆ กับ ST3
MattDMo

1
คุณพบข้อมูลอ้างอิงสำหรับกฎเหล่านี้จากที่ไหน
qodeninja

2
^ สิ่งที่พวกเขาพูด นอกจากนี้ฉันไม่เข้าใจว่าคุณ "เลือก" คีย์เวิร์ด "นี้" ในโค้ดเมื่อใด / ที่ใดเหตุใดจึงมีสีเฉพาะคำหลัก "นี้" คุณช่วยอธิบายได้ไหม?
Zelphir Kaltstahl


16

ใช้ปลั๊กอินPackageResourceViewer ที่ติดตั้งผ่าน Package Control (ดังที่MattDMoกล่าวถึง) สิ่งนี้ช่วยให้คุณสามารถแทนที่ทรัพยากรที่บีบอัดได้โดยเพียงแค่เปิดใน Sublime Text และบันทึกไฟล์ โดยจะบันทึกเฉพาะทรัพยากรที่แก้ไขเป็น% APPDATA% / Roaming / Sublime Text 3 / Packages / หรือ ~ / .config / sublime-text-3 / Packages / โดยอัตโนมัติ

เฉพาะสำหรับ op เมื่อติดตั้งปลั๊กอินแล้วให้รันPackageResourceViewer: Open Resourceคำสั่ง จากนั้นเลือกตามมาด้วยJavaScript JavaScript.tmLanguageเพื่อเปิดไฟล์ xml ในตัวแก้ไข คุณสามารถแก้ไขข้อกำหนดภาษาใดก็ได้และบันทึกไฟล์ สิ่งนี้จะเขียนสำเนาแทนที่ของไฟล์ JavaScript.tmLanguage ในไดเร็กทอรีผู้ใช้

สามารถใช้วิธีการเดียวกันนี้เพื่อแก้ไขนิยามภาษาของภาษาใดก็ได้ในระบบ


ฉันไม่เห็นสีอะไรเลยในนั้น อย่างไรก็ตามคำตอบของคุณใกล้เคียงที่สุดกับสิ่งที่ฉันต้องการ แต่ฉันแก้ไข Monokai.tmTheme ตามโพสต์ฟอรัม SublimeText นี้เพื่อให้การเน้นไวยากรณ์ JSON ทำงาน
jmort253

1
คำแนะนำเฉพาะในคำตอบนี้ใช้สำหรับแก้ไขนิยามภาษา แม้ว่าวิธีนี้จะไม่อนุญาตให้คุณแก้ไขสีของชุดรูปแบบสีโดยตรง แต่จะช่วยให้คุณเปลี่ยนวิธีการค้นหาขอบเขตบางประเภทและวิธีที่โครงร่างสีตีความ (และสี) ภาษาได้ ปลั๊กอินจะเปิดทรัพยากรประเภทใดก็ได้ใน Sublime เพื่อให้คุณสามารถแก้ไขโครงร่างสีได้โดยตรงด้วยเครื่องมือเดียวกัน ตัวอย่างเช่นฉันชอบโทนสีของ Tomorrow Night ดังนั้นฉันจะเปิด Tomorrow-Night.tmTheme ด้วยปลั๊กอินนี้เพื่อแก้ไขชุดสีนั้น
chawkinsuf

5

"this" มีสีอยู่แล้วใน Javascript

ดู -> ไวยากรณ์ -> และเลือกภาษาของคุณเพื่อเน้น


สิ่งที่ฉันกำลังมองหา: View -> Syntax -> Open all with current extension as...เพื่อตั้งค่า*.stanไฟล์เช่นด้วยการระบายสีไวยากรณ์ C ++
BoltzmannBrain

0

นี่คือสูตรของฉัน

หมายเหตุ:นี่ไม่ใช่สิ่งที่ OP ถาม คำแนะนำเหล่านี้จะช่วยให้คุณเปลี่ยนสีของรายการ (ความคิดเห็นคำหลัก ฯลฯ ) ที่กำหนดกฎการจับคู่ไวยากรณ์ ตัวอย่างเช่นใช้คำแนะนำเหล่านี้เพื่อเปลี่ยนเพื่อให้ความคิดเห็นเกี่ยวกับโค้ดทั้งหมดเป็นสีฟ้าแทนที่จะเป็นสีเขียว

ฉันเชื่อว่า OP กำลังถามถึงวิธีกำหนดthisเป็นรายการที่จะเป็นสีเมื่อพบในไฟล์ต้นฉบับ JavaScript

  1. ติดตั้ง Package: PackageResourceViewer

  2. Ctrl+Shift+P> [ PackageResourceViewer: Open Resource]> [ Color Scheme - Default]> [ Marina.sublime-color-scheme] (หรือโทนสีใดก็ตามที่คุณใช้)

  3. คำสั่งดังกล่าวจะเปิดแท็บใหม่ไปยังไฟล์ " Marina.sublime-color-scheme"

    • สำหรับฉันไฟล์นี้อยู่ในโปรไฟล์การโรมมิ่งของฉัน%appdata%( C:\Users\walter\AppData\Roaming\Sublime Text 3\Packages\Color Scheme - Default\)
    • อย่างไรก็ตามถ้าฉันเรียกดูเส้นทางนั้นในWindows Explorer [ Color Scheme - Default] ไม่ใช่ลูกของ [ Packages] dir ฉันสงสัยว่าPackageResourceViewerกำลังทำ virtualization

ขั้นตอนที่ไม่บังคับ:บนแท็บรูปแบบสีใหม่: Ctrl+Shift+P> [ Set Syntax: JSON]

  1. ค้นหากฎที่คุณต้องการเปลี่ยนแปลง ฉันต้องการให้แสดงความคิดเห็นได้ดังนั้นฉันจึงค้นหา " Comment"

    • ฉันพบมันใน"rules"ส่วน
 "rules":
    [
        {
            "name": "Comment",
            "scope": "comment, punctuation.definition.comment",
            "foreground": "var(blue6)"
        },
  1. ค้นหาสตริง"blue6":เพื่อค้นหาส่วนนิยามตัวแปรสี ฉันพบมันใน"variables"ส่วน

  2. เลือกสีใหม่โดยใช้เครื่องมือเช่นhttp://hslpicker.com/

  3. blue6ทั้งกำหนดตัวแปรสีใหม่หรือเขียนทับการตั้งค่าสี

    • คำเตือน: การเขียนทับblue6จะส่งผลต่อองค์ประกอบข้อความอื่น ๆ ทั้งหมดในโทนสีนั้นซึ่งใช้ blue6 ด้วย ("เครื่องหมายวรรคตอน" "Accessor")
  4. บันทึกไฟล์ของคุณการเปลี่ยนแปลงจะถูกนำไปใช้ทันทีกับไฟล์ / แท็บที่เปิดอยู่

หมายเหตุ

Sublime จะจัดการกับรูปแบบสีเหล่านี้ อาจมากกว่านี้

hsla = สี, ความอิ่มตัว, ความสว่าง, อัลฟา rgba = แดง, เขียว, น้ำเงิน, อัลฟา

hsla (151, 100%, 41%, 1) - พารามิเตอร์สุดท้ายคือระดับอัลฟา (ความโปร่งใส) 1 = ทึบแสง 0.5 = ครึ่งโปร่งใส 0 = โปร่งใสเต็มรูปแบบ

hsl (151, 100%, 41%) - ไม่มีช่องอัลฟา

rgba (0, 209, 108, 1) - rgb พร้อมช่องอัลฟา

rgb (0, 209, 108) - ไม่มีช่องอัลฟา

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