Sublime 2 / 3'te bir dil için sözdizimi vurgulamasını değiştirin / ekleyin


94

Sublime 2 / 3'te bir dil için sözdizimi vurgulamasını değiştirmek / eklemek istiyorum.

Örneğin, anahtar kelimenin thisJavaScript'te renkli olmasını istiyorum .

Bunu nasıl yapabilirim?

JavaScript Dosyası tercihi olduğunu biliyorum C:\Program Files\Sublime Text 3\Packages, ancak neyi değiştireceğimi veya bu klasörde bir yerde yeni bir JavaScript Tercih Dosyası oluşturmam gerekip gerekmediğini bilmiyorum %APPDATA%\Sublime Text 3.

Yanıtlar:


95

Sözdizimi vurgulama, aracılığıyla erişilebilen, kullandığınız tema tarafından kontrol edilir Preferences -> Color Scheme. Temalar .tmLanguage, bir dilin dizinindeki / paketindeki bir dosyada yer alan bir dizi normal ifadeyle tanımlanan kapsamların kullanımıyla farklı anahtar sözcükleri, işlevleri, değişkenleri vb. Vurgular . Örneğin, JavaScript.tmLanguagedosya kapsamları atar source.jsve variable.language.jshiç thisanahtar kelime. Sublime Text 3, .sublime-packagetüm varsayılan ayarları saklamak için zip dosya formatını kullandığından, tek tek dosyaları düzenlemek çok kolay değildir.

Ne yazık ki, tüm temalar tüm kapsamları içermez, bu nedenle iyi görünen ve aradığınız vurguyu size veren bir tane bulmak için farklı olanlarla uğraşmanız gerekir. Sublime Text'e dahil olan bir dizi tema vardır ve daha pek çoğu , henüz yapmadıysanız yüklemenizi şiddetle tavsiye ettiğim Paket Kontrolü aracılığıyla kullanılabilir . ST3 talimatlarını takip ettiğinizden emin olun .

Durum böyle olunca, Neon Color Schemebir göz atmak isteyebileceğiniz, Paket Kontrolü aracılığıyla temin edilebilen bir paket geliştirdim . Ana hedefim, geniş bir dil yelpazesini olabildiğince iyi göstermeye çalışmanın yanı sıra, yapabildiğim kadar çok farklı kapsam belirlemekti - standart temalara dahil edilenden çok daha fazlası. JavaScript dil tanımı Python'unki kadar kapsamlı olmasa da, örneğin, veya Neongibi bazı varsayılanlardan çok daha fazla çeşitliliğe sahiptir .MonokaiSolarized

jQuery, Neon Teması ile vurgulanmıştır

Better JavaScriptBu görüntü için Sublime ile birlikte gelen yerine @ int3h'nin dil tanımını kullandığımı not etmeliyim . Paket Kontrolü ile kurulabilir.

GÜNCELLEME

Son zamanlarda başka bir JavaScript ikame dil tanımı keşfettim - JavaScriptNext - ES6 Syntax. Temel JavaScript'ten veya hatta Daha İyi JavaScript'ten daha fazla kapsamı vardır. Aynı kodda şuna benzer:

JavaScriptSonraki

Ayrıca, bu cevabı ilk yazdığımdan beri @skuroda, PackageResourceViewerPaket Kontrol aracılığıyla yayınladı . .sublime-packagePaketlerin parçalarını veya tamamını sorunsuz bir şekilde görüntülemenizi, düzenlemenizi ve / veya çıkarmanızı sağlar . Böylece, isterseniz, Sublime'ın içerdiği renk şemalarını doğrudan düzenleyebilirsiniz.

BAŞKA BİR GÜNCELLEME

Github'daki neredeyse tüm varsayılan paketlerin yayınlanmasıyla , değişiklikler hızla ve öfkeyle geliyor. Eski JS sözdizimi, JavaScript Next ES6 Sözdiziminin en iyi bölümlerini içerecek şekilde tamamen yeniden yazıldı ve şimdi olabildiğince tamamen ES6 uyumlu. Bir ton diğer değişikliklerin tutarlılığını artırmak, kapak köşe ve kenar durumlarda yapılan ve sadece genel olarak daha iyi yapmak edilmiştir. Yeni sözdizimi (şu anda) en son geliştirme 3111'e dahil edilmiştir.

Mevcut beta yapı 3103 ile yeni sözdizimlerinden herhangi birini kullanmak isterseniz , Github deposunu bir yere kopyalayın ve JavaScript(veya istediğiniz dilleri) Packagesdizininize bağlayın - seçerek sisteminizde bulun Preferences -> Browse Packages.... Ardından, git pulldeğişiklikleri yenilemek için zaman zaman orijinal repo dizininde bir yapın ve en son ve en iyinin tadını çıkarın! Deponun .sublime-syntaxeski format yerine yeni formatı kullandığını .tmLanguage, bu nedenle 3084'ten önceki ST3 yapılarıyla veya ST2 ile çalışmayacaklarını not etmeliyim (her iki durumda da en son beta veya geliştirme sürümüne yükseltmiş olmalısınız).

Şu anda Neon Renk Şemamı yeni JS sözdizimindeki tüm yeni kapsamları işleyecek şekilde ayarlıyorum, ancak çoğu zaten kapsanmalı.


Paket Kontrolünü ve Daha İyi JavaScript'inizi yükledim. Planı sizinkine nasıl ayarlayabilirim? Renk Şeması altında listelenmemiştir.
Niklas

"Neon Teması" nı da Paket Kontrolü ile yüklediniz mi? Sahip olduktan sonra gidin Preferences -> Color Scheme -> Neon Themeve seçin Neon.
MattDMo

1
Paket Kontrolü aracılığıyla paketleri kurarsanız, bu durumda otomatik olarak doğru noktada depolanırlar %APPDATA%\Sublime Text 3\Installed Packages\Neon Theme.sublime-package. Yukarıdaki menü seçeneğini seçmek, Packages\User\Preferences.sublime-settingsdosyanızı da otomatik olarak güncelleyecektir .
MattDMo

@MattDMo - vay, bu çok titizdi. XML benzeri bir biçimlendirme için biraz sözdizimi rengi ve düzenleme takviyesi yapmaya çalışıyorum. Ama süper basit bir şeye nasıl başlayacağınızı bulmakta biraz güçlük çekiyorsunuz. Tersine mühendislik yapmaya nereden başlayabilirim ya da daha iyisi, bir tane oluşturmak için bir eğitim alabilirim.
Timothy T.

1
@ nmz787 tek istediğiniz .sublime-syntaxdosya ise, indirin ve kopyalayın ~/.config/sublime-text-3/Packages/User. Daha sonra Sublime penceresinin en alt sağındaki sözdizimi menüsünde kendi başına ("SystemVerilog" diyecektir) veya Userkurulumunuza bağlı olarak alt menü altında mevcut olacaktır . Tüm paketi istiyorsanız, Paket Kontrolünün doğru şekilde kurulduğundan emin olun, komut paletini açın, pci yazın , enter tuşuna basın, arayın SystemVerilogve enter tuşuna basın. Herhangi bir dosyayı veya herhangi bir şeyi yeniden adlandırmanız gerekmez - bunu neden yapıyordunuz?
MattDMo

31

Sonunda verilen Temaları özelleştirmenin bir yolunu buldum.

Gidin C:\Program Files\Sublime Text 3\Packagesve + yeniden adlandırma kopya Color Scheme - Default.sublime-packageetmek Color Scheme - Default.zip. Daha sonra fermuarını açın ve değiştirmek istediğiniz Temayı kopyalayın %APPDATA%\Sublime Text 3\Packages\User. (Benim durumumda All Hallow's Eve.tmTheme).

Daha sonra herhangi bir Metin Düzenleyicisi ile açabilir ve bir şeyi değiştirebilir / ekleyebilirsiniz, örneğin thisJavaScript'te değiştirmek için :

<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>

Bu, thisJavaScript Dosyalarında kırmızı olarak işaretlenecektir . Temanızı altından seçebilirsiniz Preferences -> Color Scheme -> User -> <Your Name>.


1
evet, Sublime Text 3'ün cesur yeni dünyasına yaklaşırken hepimizin alışması gereken hantal bir çalışma budur. Çok geçmeden çok daha kolay .sublime-packagedüzenlemeye izin veren eklentiler olacağına eminim ...
MattDMo

9
Bu eklenti burada - çağrılır PackageResourceViewerve Paket Kontrolü ile kurulabilir. Sublime Text 3 .sublime-packagedosyalarıyla çalışmayı çok daha kolay hale getirir ve ST3'e herhangi bir özelleştirme yapmayı planlıyorsanız kesinlikle tavsiye ederim.
MattDMo

1
Bu kurallar için referansı nereden buldunuz?
qodeninja

2
^ Ne dediler. Ayrıca, kodda "this" anahtar kelimesini ne zaman / nerede "seçtiğiniz", neden sadece "this" anahtar kelimesini renklendirdiğini anlamıyorum. Lütfen açıklar mısınız?
Zelphir Kaltstahl


16

Kullan PackageResourceViewer (tarafından belirtildiği gibi Paket Kontrolü yoluyla eklentisi yüklü MattDMo ). Bu, yalnızca Sublime Text'te açıp dosyayı kaydederek sıkıştırılmış kaynakları geçersiz kılmanıza olanak tanır. Yalnızca düzenlenen kaynakları otomatik olarak% APPDATA% / Roaming / Sublime Text 3 / Packages / veya ~ / .config / sublime-text-3 / Packages / klasörüne kaydeder.

Operasyona özel, eklenti kurulduktan sonra PackageResourceViewer: Open Resourcekomutu yürütün . Ardından ve JavaScriptardından öğesini seçin JavaScript.tmLanguage. Bu, düzenleyicide bir xml dosyası açacaktır. Dil tanımlarından herhangi birini düzenleyebilir ve dosyayı kaydedebilirsiniz. Bu, kullanıcı dizinine JavaScript.tmLanguage dosyasının bir geçersiz kılma kopyasını yazacaktır.

Sistemdeki herhangi bir dilin dil tanımını düzenlemek için aynı yöntem kullanılabilir.


Orada renkler hakkında hiçbir şey görmüyorum. Ancak, cevabınız ihtiyacım olana en yakın olanıydı. Bunun yerine, JSON sözdiziminin vurgulanmasını sağlamak için bu SublimeText forum gönderisine göre Monokai.tmTheme'yi düzenledim .
jmort253

1
Bu yanıttaki özel talimatlar dil tanımını düzenlemek içindi. Bu, bir renk şemasının renklerini doğrudan düzenlemenize izin vermezken, belirli tür kapsamların nasıl bulunduğunu ve dolayısıyla renk şemasının dili nasıl yorumladığını (ve renklerini) değiştirmenize olanak tanır. Eklenti, Sublime'da herhangi bir kaynak türünü açacaktır, böylece renk şemalarını doğrudan aynı araçla benzer şekilde düzenleyebilirsiniz. Örneğin, Tomorrow-Night.tmTheme'yi bu eklenti ile bu renk düzenini düzenlemek için açacağım.
chawkinsuf

5

"Bu" Javascript'te zaten renklendirilmiştir.

Görünüm-> Sözdizimi-> ve vurgulamak için dilinizi seçin.


Tam aradığım şey: View -> Syntax -> Open all with current extension as...örneğin *.stanC ++ sözdizimi renklendirmeli dosyaları ayarlamak için .
BoltzmannBrain

0

Bu benim tarifim

Not: Bu tam olarak OP'nin istediği şey değil. Bu talimatlar, söz dizimi eşleştirme kuralları olan öğelerin (yorumlar, anahtar sözcükler, vb.) Renklerini değiştirmenize yardımcı olacaktır. Örneğin, tüm kod yorumlarının yeşil yerine mavi renkte olması için bu talimatları kullanın.

OP'nin thisJavaScript kaynak dosyasında bulunduğunda renklendirilecek bir öğe olarak nasıl tanımlanacağını sorduğuna inanıyorum .

  1. Paketi Yükleyin: PackageResourceViewer

  2. Ctrl+Shift+P> [ PackageResourceViewer: Open Resource]> [ Color Scheme - Default]> [ Marina.sublime-color-scheme] (veya hangi renk şemasını kullanırsanız kullanın)

  3. Yukarıdaki komut, " Marina.sublime-color-scheme" dosyasına yeni bir sekme açacaktır .

    • Benim için bu dosya dolaşım profilimde %appdata%( C:\Users\walter\AppData\Roaming\Sublime Text 3\Packages\Color Scheme - Default\) bulunuyordu.
    • Ancak, ben bu yola göz atarsa Windows Gezgini [, Color Scheme - Default[bir çocuk dir değildir] Packages] dir. Bunun PackageResourceViewerbiraz sanallaştırma yaptığından şüpheleniyorum .

isteğe bağlı adım: Yeni renk düzeni sekmesinde: Ctrl+Shift+P> [ Set Syntax: JSON]

  1. Değiştirmek istediğiniz kuralı arayın. Yorumların taşınmasını istedim, bu yüzden " Comment" aradım

    • Onu "rules"bölümde buldum
 "rules":
    [
        {
            "name": "Comment",
            "scope": "comment, punctuation.definition.comment",
            "foreground": "var(blue6)"
        },
  1. "blue6":Renk değişkeni tanımları bölümünü bulmak için dizeyi arayın . "variables"Bölümde buldum .

  2. Http://hslpicker.com/ gibi bir araç kullanarak yeni bir renk seçin .

  3. Yeni bir renk değişkeni tanımlayın veya renk ayarının üzerine yazın blue6.

    • Uyarı: üzerine yazma blue6, o renk düzeninde mavi6 ("Noktalama" "Erişimci") kullanan diğer tüm metin öğelerini etkileyecektir.
  4. Dosyanızı kaydedin, değişiklikler anında herhangi bir açık dosya / sekmeye uygulanacaktır.

NOTLAR

Sublime, bu renk stillerinden herhangi birinin üstesinden gelecektir. Muhtemelen daha fazla.

hsla = ton, doygunluk, hafiflik, alfa rgba = kırmızı, yeşil, mavi, alfa

hsla (151,% 100,% 41, 1) - son param alfa seviyesidir (şeffaflık) 1 = opak, 0.5 = yarı şeffaf, 0 = tam şeffaf

hsl (151,% 100,% 41) - alfa kanalı yok

rgba (0, 209, 108, 1) - alfa kanallı rgb

rgb (0, 209, 108) - alfa kanalı yok

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.