Sekmeden uzaya dönüşüm faktörünü nasıl özelleştirebilirim?


852

Visual Studio Code kullanırken sekme-boşluk dönüştürme faktörünü nasıl özelleştirebilirim?

Örneğin, şu anda HTML'de her basışta iki boşluk ürettiği görülüyor TAB, ancak TypeScript'te 4 üretiyor.

Yanıtlar:


1359

Varsayılan olarak, Visual Studio Code, açtığınız dosyaya bağlı olarak girinti seçeneklerinizi tahmin etmeye çalışır.

Girintiyi tahmin etmeyi yoluyla kapatabilirsiniz "editor.detectIndentation": false.

Sen bu üç ayarları aracılığıyla kolayca özelleştirebilirsiniz Windows'un menüsünde DosyaTercihlerKullanıcı Ayarları ve için Mac menü içinde KanunununTercihlerAyarlar veya ⌘,:

// The number of spaces a tab is equal to. This setting is overridden
// based on the file contents when `editor.detectIndentation` is true.
"editor.tabSize": 4,

// Insert spaces when pressing Tab. This setting is overriden
// based on the file contents when `editor.detectIndentation` is true.
"editor.insertSpaces": true,

// When opening a file, `editor.tabSize` and `editor.insertSpaces`
// will be detected based on the file contents. Set to false to keep
// the values you've explicitly set, above.
"editor.detectIndentation": false

1
Hey Guss, beni tahminin yanlış olduğu bir dosyaya yönlendirmek ister misiniz? Ayrıca lütfen bu iki ayarı nasıl yapılandırdığınızı (tabSize & insertSpaces) ve ne elde etmeyi beklediğinizi paylaşın. Teşekkürler! :)
Alex Dima

5
Her iki ayarı da "otomatik" olarak yapılandırdım ve davranış beklediğim gibi değil. Sözleşmemi desteklemek için hangi dosyanın değiştirilmesi gerektiğini bilmiyorum, ancak soruya verilen cevapta önerildiği gibi bunun için bir uservoice bileti açtım # 30057721
Guss

4
Yeni, boş dosyalar için varsayılanı ayarlama seçeneği de var mı? Bu senaryoda tahmin etmek için çok fazla bir şey yok ve bence VSCode varsayılan olarak boşlukları kullanmayı tercih edecek (ki ben tercih etmiyorum) ...
Stijn de Witt

Ayrıca, kullanıcı ayarlarını geçersiz kılan projeye göre farklı bir davranış ayarlayabilmeniz için bir işyeri ayarları seçeneği de vardır . 2 ¢
ruffin

1
Teşekkürler ruffin. tabSizeDil başına değişmenin bir yolu var mı ? örneğin, aynı Çalışma Alanında farklı dillere sahip birden fazla dosya düzenlerken (örn. Ruby, JavaScript, CSS, vb.) - Ruby 2boşluk olur, ancak CSS 4genellikle olur.
Jacob Barnard

692

1.21 sürümünü çalıştırıyorum, ancak bunun önceki sürümler için de geçerli olabileceğini düşünüyorum.

Ekranın sağ alt tarafına bir göz atın. Sen diyor birşeyler görmelisiniz Spacesveya Tab-Size.

Benimki boşlukları gösteriyor, →

Resim açıklamasını buraya girin

  1. Tıklayın Spaces (veya Sekme Boyutu )
  2. Boşluk Kullanarak Girinti veya Sekmeleri Kullanarak Girinti'yi seçin
  3. İstediğiniz boşluk veya sekme miktarını seçin.

Bu yalnızca proje başına değil belge başına çalışır. Proje genelinde uygulamak istiyorsanız "editor.detectIndentation": false, kullanıcı ayarlarınıza da eklemeniz gerekir .


# 3 nasıl yapılır? # 2'yi seçtikten sonra, sadece "istediğiniz alan miktarını ... seçmenin" bir yolu yoktur. Teşekkürler.
Chris22

Her zaman düşündüm: "Bu bir şekilde mümkün olacak ..." Bu nasıl yapılacağını açıklıyor.
vlz

189

Peki, geliştirici yolunu beğenirseniz, Visual Studio Code için farklı dosya türlerini belirtmenize izin verir tabSize. İşte benim settings.jsonvarsayılan dört boşluk ve JavaScript / JSON iki boşluk ile benim örnek :

{
  // I want my default to be 4, but JavaScript/JSON to be 2
  "editor.tabSize": 4,
  "[javascript]": {
    "editor.tabSize": 2
  },
  "[json]": {
    "editor.tabSize": 2
  },

  // This one forces the tab to be **space**
  "editor.insertSpaces": true
}

Not: Bu dosyayı nasıl açacağınızı bilmiyorsanız (özellikle Visual Studio Code'un yeni bir sürümünde) şunları yapabilirsiniz:

  1. Sol alt dişli →
  2. Ayarlar → sağ üst Ayarlar'ı aç

 

Resim açıklamasını buraya girin


105

Varsayılan olarak, Visual Studio Code geçerli açık dosyanın girintisini otomatik olarak algılar. Bu özelliği kapatmak ve tüm girintiyi (örneğin iki boşluk) yapmak istiyorsanız, Kullanıcı Ayarları veya Çalışma Alanı ayarlarınızda aşağıdakileri yaparsınız.

{
    "editor.tabSize": 2,

    "editor.detectIndentation": false
}

57

Sekme boyutunu VSCon uzantısıyla EditorConfig ve EditorConfig ile dosya türüne göre kontrol edebiliriz . Daha sonra her dosya türüne Alt+ Shift+ Fözgü yapabiliriz .

Kurulum

ext install EditorConfig

Örnek Yapılandırma

.editorconfig

[*]
indent_style = space

[*.{js,ts,json}]
indent_size = 2

[*.java]
indent_size = 4

[*.go]
indent_style = tab

settings.json

EditorConfig, editör için yapılan tüm ayarları geçersiz kılar. Değiştirmeye gerek yok editor.detectIndentation.


Bu neden extbahsediyorsunuz (lütfen yorumlarda değil, cevabınızı düzenleyerek yanıt verin (uygunsa))? Bazı Node.js şeyler? Hangi platform?
Peter Mortensen

12

Visual Studio Code'da daha güzel uzantı kullanıyorsanız, bunu settings.json dosyasına eklemeyi deneyin:

"editor.insertSpaces": false,
"editor.tabSize": 4,
"editor.detectIndentation": false,

"prettier.tabWidth": 4,
"prettier.useTabs": true  // This made it finally work for me

8

Gelen Visual Studio Kod sonraki sürüm 1.31.1 veya (Bence): gibi sed Alex Dima , sizin için bu ayarların üzerinden kolayca bu özelleştirebilirsiniz

  • DosyaTercihlerKullanıcı Ayarları menüsünde Windows veya Ctrl+ Shift+ kısa tuşlarını kullanınP
  • KodTercihlerAyarlar menüsünde Mac veya ,

Resim açıklamasını buraya girin

Resim açıklamasını buraya girin


7

Editör yapılandırmanızın, kullanıcı veya çalışma alanı ayarları yapılandırmanızla çakışmadığından emin olmak istiyorsunuz, çünkü bu değişiklikleri geri alan düzenleyici yapılandırmam olduğu zaman ayar dosyaları ayarlarının uygulanmadığını düşünerek biraz sıkıntı yaşadım.


7

Yani lonefy.vscode-js-css-html-formattersuçlu. Devre dışı bırakın ve yükleyin HookyQR.beautify.

Şimdi kaydet sekmeleriniz dönüştürülmez.



4

TypeScript kullanırken, araç çubuğunda söylediklerinden bağımsız olarak varsayılan sekme genişliği her zaman ikidir. Değiştirmek için kullanıcı ayarlarınızda "prettier.tabWidth" ayarını yapmanız gerekir.

Ctrl+ P, Yazım → kullanıcı ayarları, ekleyin:

"prettier.tabWidth": 4

4

Bu yayında kabul edilen cevap işe yaramazsa, bunu deneyin:

Ben Visual Studio Kod için EditorConfig editörüm yüklü ve boşluklar kullanılarak girinti dosyalara kuruldu benim kullanıcı ayarlarını geçersiz kılma tuttu. Editör sekmeleri arasında her geçiş yaptığımda, girintiyi boşluklara dönüştürsem bile dosyam otomatik olarak sekmelerle girintilendi!

Bu uzantıyı kaldırdıktan hemen sonra, girinti artık editör sekmeleri arasında geçiş yapmıyor ve dosyaları her değiştirdiğimde sekmeleri manuel olarak boşluklara dönüştürmek yerine daha rahat çalışabiliyorum - bu acı verici.


4

Sevgili topluluk üyelerimiz tarafından sağlanan çok sayıda iyi yanıt var. Aslında C # kod tabSize eklemek istedim ve bu iş parçacığı bulundu. Bulduğum birçok çözüm var ve resmi VS Code belgeleri harika. Sadece C # ayarımı paylaşmak istiyorum:

"[csharp]": {
    "editor.insertSpaces": true,
    "editor.tabSize": 4
},

sadece yukarıdaki kodu kopyalayıp settings.jsondosyanıza yapıştırın ve kaydedin. Teşekkürler


1
Evet, belirli bir dil için farklı bir biçim ayarlamak istiyorsanız bu yol. TabWidth = 2 ile sekmeleri kullanmayı seviyorum, ancak autopep8 sadece nefret ediyor.
Abhishek Kasireddy

2

Menü DosyasıTercihlerAyarlar

Kullanıcı ayarlarına ekle:

"editor.tabSize": 2,
"editor.detectIndentation": false

daha önce açık bir tane varsa belgenizi sağ tıklayın ve mevcut belgenizin bu yeni ayarları izlemesi için Belgeyi Biçimlendir'i tıklayın.


2

@ alex-dima'nın 2015'teki çözümü tüm dosyalar için sekme boyutlarını ve boşluklarını değiştirecek ve @ Tricky'nin 2016'daki çözümü sadece geçerli dosya için ayarları değiştiriyor gibi görünüyor.

2017 itibariyle, dil başına çalışan başka bir çözüm buldum. Visual Studio Code Elixir için uygun sekme boyutlarını veya boşluk ayarlarını kullanmıyordu , bu yüzden tüm Elixir dosyaları için ayarları değiştirebileceğimi buldum.

Durum çubuğundaki dili tıkladım (benim durumumda "İksir"), "İksir 'dil tabanlı ayarları yapılandır ..." ı seçtim ve İksire özgü dil ayarlarını düzenledim. Soldaki varsayılan ayarlardan "editor.tabSize" ve "editor.insertSpaces" ayarlarını kopyaladım (gösterildiğine çok memnun oldum) ve sağda değiştirdim.

Harika çalıştı ve şimdi tüm Elixir dil dosyaları uygun sekme boyutu ve boşluk ayarlarını kullanıyor.


1

Önceki yanıtlar gibi birçok ayar düzenlemesi yapmak zorunda kaldım, bu yüzden birçok değişiklikten sonra hangisinin çalıştığını bilmiyorum.

Ben kapalı ve benim IDE openen ama yaptım son üç şey devre dışı olana kadar hiçbir şey çalıştı lonefy.vscode-js-css-html-formatter, "html.format.enable": true,ve Visual Studio yeniden başlatın.

{
    "editor.suggestSelection": "first",
    "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
    "workbench.colorTheme": "Default Light+",
    "[html]": {
        "editor.defaultFormatter": "vscode.html-language-features",
        "editor.tabSize": 2,
        "editor.detectIndentation": false,
        "editor.insertSpaces": true
    },
    "typescript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": true,
    "editor.tabSize": 2,
    "typescript.format.insertSpaceAfterConstructor": true,
    "files.autoSave": "afterDelay",
    "html.format.indentHandlebars": true,
    "html.format.indentInnerHtml": true,
    "html.format.enable": true,
    "editor.detectIndentation": false,
    "editor.insertSpaces": true,
}

0

Bu Açısal 2 içinse ve CLI farklı biçimlendirilmesini istediğiniz dosyalar oluşturuyorsa, oluşturulan dosyaları değiştirmek için bu dosyaları düzenleyebilirsiniz:

npm_modules/@angular/cli/blueprints/component/files/__path__/*

Bir npm güncellemesi çalışmanızı sileceği için şiddetle tavsiye edilmez, ancak bana çok zaman kazandırdı.


0

Düzenleyiciyi .tabSize4 olarak değiştirmeye çalıştım , ancak .editorConfigbelirttiğim ayarları geçersiz kıldım, bu nedenle kullanıcı ayarlarında herhangi bir yapılandırmayı değiştirmeye gerek yok. Sadece .editorConfig dosyasını düzenlemeniz gerekir:

set indent_size = 4

-1

Kullanıcı3550138 doğru. lonefy.vscode-js-css-html-formatterdiğer yanıtlarda belirtilen tüm ayarları geçersiz kılar. Ancak, yapılandırılabileceği için devre dışı bırakmanız veya kaldırmanız gerekmez.

Tam talimatlar, uzantı kenar çubuğunu açıp bu uzantıya tıklayarak bulunabilir ve düzenleyici çalışma alanında yapılandırma talimatlarını görüntüler. En azından benim için Visual Studio Code sürüm 1.14.1.

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.