VS Code'da büyük/küçük harf dönüştürme: kısayollar ve eklentiler

VS Code'da büyük/küçük harfi dönüştürmek için yedi yerleşik komut var: Transform to Uppercase, Lowercase, Title Case, Snake Case, Camel Case, Kebab Case ve Pascal Case. Biraz metin seçin, komut paletini (Command Palette) Ctrl+Shift+P ile açın (Mac'te Cmd+Shift+P), “transform” yazın ve birini seçin. Hiçbirinin varsayılan bir klavye kısayolu yok; bu yüzden sık kullanıyorsanız keybindings.json dosyasında kendi kısayollarınızı tanımlayın. Bunun için gereken her şey aşağıda.
Komutların, bütün bir dosyada çalıştırmadan önce bilmeye değer birkaç tuhaflığı var; bu yüzden önce her birinin gerçekte ne yaptığını, sonra kısayolları, sonra da boşlukları dolduran iki numarayı ele alacağız: regex ile değiştirme ve snippet dönüşümleri. Eklentiler en sona kaldı, çünkü belki hiç gerekmeyecek.
VS Code'un yerleşik büyük/küçük harf komutları
Liste yıllar içinde büyüdü. Bir komut paletinizde yoksa sürümünüzü Help, About altında kontrol edin (Mac'te Code, About).
| Komut paletindeki ad | Komut kimliği | Sürüm |
|---|---|---|
| Transform to Uppercase | editor.action.transformToUppercase | Çok eskiden beri |
| Transform to Lowercase | editor.action.transformToLowercase | Çok eskiden beri |
| Transform to Title Case | editor.action.transformToTitlecase | 1.34 |
| Transform to Snake Case | editor.action.transformToSnakecase | 1.53 |
| Transform to Kebab Case | editor.action.transformToKebabcase | 1.69 |
| Transform to Camel Case | editor.action.transformToCamelcase | 1.75 |
| Transform to Pascal Case | editor.action.transformToPascalcase | 1.88 |
Kimliklere dikkatle bakın: transformToSnakecase küçük c ile yazılır, transformToSnakeCase ile değil. Tuş atamalarını yazarken bunları tam olarak kopyalayın; yoksa kısayol sessizce hiçbir şey yapmaz.
İki davranış bu komutları ilk görünenden daha kullanışlı kılar. Hiçbir şey seçili değilse komut imlecin altındaki sözcüğü dönüştürür; yani userId içine tıklayıp hiçbir şey seçmeden Snake Case çalıştırabilirsiniz. Birden çok imleç ya da seçim varsa her biri ayrı ayrı dönüştürülür.
Her komut gerçekte ne yapıyor?
Komutlar sözcükleri birbirinden farklı bölüyor ve bu kolayca gözden kaçıyor. Güncel sürümlerde ürettikleri şu (VS Code'un kaynak koduna göre kontrol ettik):
| Girdi | Snake | Kebab | Camel | Pascal | Title |
|---|---|---|---|---|---|
hello world | hello world | hello world | helloWorld | HelloWorld | Hello World |
userID | user_id | user-id | userID | UserID | Userid |
USER_ID | user_id | user-id | USERID | UserId | User_Id |
XMLHttpRequest | xml_http_request | xml-http-request | XMLHttpRequest | XMLHttpRequest | Xmlhttprequest |
Bu tablonun arkasındaki kalıplar:
- Snake Case ve Kebab Case yalnızca büyük/küçük harfin değiştiği yerden böler. Kısaltmalarla iyi başa çıkarlar, ama boşluklar boşluk olarak kalır; yani
hello worldyalnızca küçük harfe çevrilir. Kebab Case ayrıca alt çizgileri tireye çevirir; Snake Case tirelere dokunmaz. - Camel Case ve Pascal Case boşluklardan, alt çizgilerden ve tirelerden böler ve her parçayı büyük harfle başlatır, ama Camel Case bir sözcüğün geri kalanını küçük harfe çevirmez.
USER_ID'ninUSERIDçıkmasının nedeni bu. Pascal Case ise tamamı büyük harfli sözcükleri normalleştirir veUserIdverir. (Kodunuzun hangisini istediğinden emin değil misiniz? camelCase ile PascalCase karşılaştırma rehberimize bakın.) - Title Case her sözcüğü büyük harfle başlatır, küçük olanlar dahil, geri kalan her şeyi küçük harfe çevirir:
the lord of the ringsolurThe Lord Of The Rings. Başlıklar için değil, hızlı düzeltmeler için yapılmıştır. Kesme işaretleri mantıklı biçimde işlenir:don'tolurDon't.
Dolayısıyla Shipping Address Line 2 gibi bir ifadeyi snake_case'e çevirmek için önce Camel Case, sonra Snake Case çalıştırın; sonuç shipping_address_line2 olur. Ya da büyük/küçük harf dönüştürücümüze yapıştırın: boşluklardan, noktalamadan ve büyük/küçük harf değişimlerinden tek adımda böler ve VS Code'da olmayan CONSTANT_CASE seçeneğini de sunar.
keybindings.json'a klavye kısayolu eklemek
Bir iki kısayol için Keyboard Shortcuts düzenleyicisi yeter: Ctrl+K ardından Ctrl+S tuşlarına basın (Mac'te Cmd+K Cmd+S), “transform” arayın, bir komuta çift tıklayın ve istediğiniz tuşlara basın. Hepsi için dosyayı düzenlemek daha hızlıdır. Komut paletinden Preferences: Open Keyboard Shortcuts (JSON) komutunu çalıştırın ve şu girdileri köşeli parantezlerin içine ekleyin:
{ "key": "ctrl+k shift+u", "command": "editor.action.transformToUppercase", "when": "editorTextFocus" },
{ "key": "ctrl+k shift+l", "command": "editor.action.transformToLowercase", "when": "editorTextFocus" },
{ "key": "ctrl+k shift+t", "command": "editor.action.transformToTitlecase", "when": "editorTextFocus" },
{ "key": "ctrl+k shift+s", "command": "editor.action.transformToSnakecase", "when": "editorTextFocus" },
{ "key": "ctrl+k shift+c", "command": "editor.action.transformToCamelcase", "when": "editorTextFocus" },
{ "key": "ctrl+k shift+p", "command": "editor.action.transformToPascalcase", "when": "editorTextFocus" },
{ "key": "ctrl+k shift+k", "command": "editor.action.transformToKebabcase", "when": "editorTextFocus" }Bunlar tuş dizileri (chord): Ctrl+K tuşuna basın, bırakın, sonra Shift+U tuşlarına basın. Ctrl+K önekini seçtik, çünkü VS Code onu zaten düzenleyici komutları için kullanıyor ve bu yedi tuş dizisinin hiçbiri güncel sürümlerde varsayılan bir atamayla çakışmıyor. Mac'te ctrl+k yerine cmd+k yazın. Orada ctrl+k bırakmayın: macOS'ta Delete All Right komutuna bağlı ve onunla başlayan bir tuş dizisi yolunuza çıkar. Bir kısayol bir gün çalışmayı bırakırsa muhtemelen bir eklenti aynı tuşları almıştır; hangisi olduğunu bulmak için Keyboard Shortcuts düzenleyicisinde bu tuşları aratın.
Regex ile değiştirme ve büyük/küçük harf dönüşümü
Bir dosyanın ya da tüm projenin genelindeki değişiklikler için Find and Replace'i düzenli ifadelerle kullanın. Replace'i Ctrl+H ile açın (Mac'te Cmd+Option+F), regex'i Alt+R ile açın (Cmd+Option+R) ve bir grubun önüne \u, \U, \l ya da \L koyun. _([a-z]) ifadesini bulup \U$1 ile değiştirmek user_id'yi userId yapar. Aynısı Replace in Files'ta da çalışır (Ctrl+Shift+H ya da Cmd+Shift+H).
sed ve Perl'den bir fark insanları tökezletir: VS Code'da her kaçış dizisi yalnızca bir sonraki gruba uygulanır; yani \U$1_$2 ifadesi $1'i büyük harfe çevirir, $2'ye dokunmaz ve \E diye bir şey yoktur. Regex ile büyük/küçük harf dönüştürme başvuru rehberimizde denenmiş tarifler ve diğer araçlarla bir karşılaştırma var.
Snippet dönüşümleri: boşlukları da işleyen bir snake_case
Snippet'ler de metni dönüştürebilir ve VS Code 1.108'den beri biçim seçenekleri arasında eski /upcase, /downcase, /capitalize, /camelcase ve /pascalcase seçeneklerinin yanında /snakecase ve /kebabcase da var. Buradaki snake_case komuttan farklı kurallarla çalışır: boşlukları ve tireleri alt çizgiye çevirir. editor.action.insertSnippet ile bir tuşa bağlayın; seçimin yerine geçer:
{
"key": "ctrl+k shift+n",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus && editorHasSelection",
"args": { "snippet": "${TM_SELECTED_TEXT/(.*)/${1:/snakecase}/}" }
}Shipping Address Line 2 yazısını seçin, tuşlara basın; shipping_address_line_2 elde edersiniz. Bedeli kısaltmalardır: bu sürüm XMLHttpRequest'i xmlhttp_request yapar, yerleşik komut ise bunu doğru çözer. Ayrıca çok satırlı bir seçimde yalnızca ilk satırı dönüştürür, çünkü . satır sonlarıyla eşleşmez. Kebab sürümü için /kebabcase kullanın.
Gerisi için eklentiler
Yerleşik komutlar CONSTANT_CASE, dot.case, path/case ve büyük/küçük harfi tersine çevirmeyi kapsamıyor. Popüler iki eklenti bunu yapıyor:
- change-case (yayıncı: wmaurer), change-case JavaScript kitaplığını sarmalar. camel, constant, dot, kebab, lower, lowerFirst, no, param, pascal, path, sentence, snake, swap, title, upper ve upperFirst için komutlar ekler; ayrıca tek bir sözcük seçiliyken her sonucun önizlemesini gösteren bir Change Case Commands seçicisi sunar.
- Text Power Tools (Dániel Tar'dan), 240'tan fazla metin komutu içeren daha kapsamlı bir alet çantası. Büyük/küçük harf dönüştürme bunun bir parçası ve camelCase, PascalCase, snake_case, CONSTANT_CASE, dash-case, dot.case ve Title Case'i kapsıyor; yanında satır filtreleme, sıralama ve sayı dizileri de var.
Görüşümüz: yalnızca yedi yerleşik stile ihtiyacınız varsa eklentiyi atlayın ve tuşları bağlayın. CONSTANT_CASE her gün karşınıza çıkıyorsa change-case'i kurun; çünkü tek bir komut, Snake Case'in ardından Uppercase çalıştırmaktan iyidir.
Kısa bir kurulum kontrol listesi: yedi komutun da var olması için 1.88 ya da daha yeni bir sürümde olduğunuzu doğrulayın, yedi tuş atamasını yapıştırın (Mac'te cmd+k ile), ifadeleri sık dönüştürüyorsanız snippet atamasını ekleyin ve İngilizce başlık yazarken başlık düzeni (title case) için uygun bir araca başvurun.


