เปลี่ยน / เพิ่มการเน้นไวยากรณ์สำหรับภาษาใน 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.