Visual Studio Code: biçim girinti ayarlarını kullanmıyor


144

Format CodeVisual Studio Code komutunu kullanırken, girinti ayarları ( "editor.tabSize": 2) onurlandırmaz . Bunun yerine 4 sekme boyutu kullanıyor. Bunun neden olduğu hakkında bir fikrin var mı?

Teşekkürler!


Hangi dil? Visual Studio Code biçimlendirmesini Dil biçimlendiricisine delege edin. Bazı biçimlendiriciler girinti ayarını izler. Örneğin, OmniSharp tarafından işlenen ve omnisharp.json kullanılarak yapılandırılması gereken C #
Ian Yang

Bu beni anlamak için uzun zaman aldı: Karışık sekmeler ve boşluk girintileri olan bir .cs dosyası vardı ve tüm sekmelerle biçimlendirmek istedim (satırların çoğunda sekmeler vardı). "Belgeyi formatla" ve "Format seçimi" ile çeşitli ayar değerlerini denedim ama hiç şansım olmadı. Sonunda "Girintiyi Sekmelere Dönüştür" eylemini buldum (@ Maleki'nin cevabındaki resme bakın) ve bunu yapmak istediğimi yaptım. (Ayrıca yakın zamanda ctrl-shift-p'yi keşfettim! ... evet, VS Kodunda
yeniyim

Yanıtlar:


229

Biçimlendirme için kullanılacak boşluk sayısı farklı bir yerden alınır. Sürüm 1.0 kullanıyorum ve bu düzeltmek için yaptım (sekmeler yerine boşluk kullandığınız varsayıyorum):

Editörün sağ tarafında "Alanlar: #" seçeneğini tıklayın:

sağdaki durum çubuğu

Ardından bir menü görünecektir. "Boşluk Kullanarak Girinti" seçeneğini seçin:

girinti türünü seçin

Son olarak, dosyalarınızın girintili olmasını istediğiniz boşluğa göre seçim yapabilirsiniz.

sekme boyutunu seç

Bir dahaki sefere dosya biçimlendirdiğinizde, yapılandırdığınız aralığı elde edebilmeniz gerekir.


28
Otomatik format uygulanırken bu ayar kullanılmaz (sağ tıklayın -> Kodu Formatla). Her zaman 4 boşluk kullanır.
kiml42

Her ikisini de yapmanız gerekir - kişisel ayarlarınızı çalışma alanı veya editör (veya her ikisi) için yapılandırın. Yeni dosyalar bu ayarı alır ve bu ekran görüntülerine göre durum çubuğunda örneğin '2' gösterir. Ardından otomatik biçimlendirebilirsiniz. Mevcut dosyalar için, önce çalışma alanı / editör ayarlarınızı 'sekmeleri kullan' veya 'boşluk kullan' olarak ayarlayın ve boşluk sayısını ayarlayın, ardından mevcut dosyaları otomatik olarak biçimlendirmek için yukarıdaki yöntemi yapabilirsiniz.
rmcsharry

5
Hem kullanıcı hem de çalışma alanı ayarlarını yapın, alt çubuğa ayarlayın, dosyayı yeniden açın - yine de otomatik format 4 boşluk kullanıyor ...
Jared

3
Ayarların alınması için hem kullanıcı hem de çalışma alanı varsayılanlarını ayarladıktan sonra çıkmak ve vscode'u yeniden başlatmak zorunda kaldım. Ancak o zaman JS dosyalarımda 4 boşluk kullanmayı denedi.
John Pettitt

11
@Jared Sanırım JS-CSS-HTMLeklentiyi kullanıyorsunuz . Bu durumda, tuşuna basın F1ve formatlayıcıyı seçin ve girintinizi orada ayarlayın. Yukarıda tartışılan tüm seçenekleri geçersiz kılıyor gibi görünüyor.
Atif Mohammed Ameenuddin

113

Visual Studio Code varsayılan olarak geçerli girintiyi algılar ve bunu kullanır - .editorconfig yoksayılır

Ayrıca Set "editor.detectIndentation" için YANLıŞ

(Dosyalar -> Tercihler -> Ayarlar)

ekran görüntüsü


Bu durumda, büyük olasılıkla dosya içinde tutarsız girinti vardır. Ben sekmeleri kullanarak tespit edildi ama 2 sekme boyutu ile sonuçlanan iki boşluk (neden kim bilir) birkaç satır dışında her yerde sekmelerle bir dosya vardı.
isanae

49

@ Maleki'nin yanıtı sizin için çalışmıyorsa .editorconfig, proje klasörünüzde bir dosya olup olmadığını kontrol edin .

Örneğin, Açısal CLI buna benzeyen yeni bir proje ile bir tane oluşturur

# Editor configuration, see http://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
max_line_length = off
trim_trailing_whitespace = false

indent_sizeBurada değiştirmek, .vscodeçalışma alanınızdaki veya kullanıcı ayarlarınızdaki her şeyi geçersiz kılacak gibi göründüğü için gereklidir .


5
Değişikliğin IDE'de etkili olması için VSCode'u yeniden başlatmak zorunda kaldım.
JOpuckman

3
Benim durumumda aslında .editorconfigana klasörümdeki dosyadan kaynaklanıyordu . Her nasılsa VSCode, Çalışma Alanına özgü ayarları yok sayıyor. Çok sinir bozucu.
xji

20

Bir eklenti kullanıyorsanız (benim durumumda Vetur, vue.js için), bunlar kendi sekme biçimlendirme ayarlarını belirleyebilir.

Ayarlarınızı açın, "biçim" için arama yapın ve genel sekme biçiminin üzerine yazılabilecek ilgili eklenti ayarlarına bakın. Bu benim için çalıştı; Vetur sekmesi ayarlarını tercihime uyacak şekilde güncellediğimde (benim durumumda 4 boyutlu sekmeler), .vue belgelerini biçimlendirmek düzgün çalışmaya başladı:

resim açıklamasını buraya girin


Bu doğru, benim durumumda sekme boyutunu Prettier uzantısının ayarlarında da ayarlamam gerekiyordu.
tonix

SCSS FormatterEklentinin örneğin kendi ayarlarını kullandığını belirtmek gerekir, bu nedenle Settings > Extensions > SCSS Formatter > Use Tabsörneğin sekmeleri kullanmaya zorlamak için gitmelisiniz .
SmartyP

13

Kendim için, bu sorun prettierçalışma alanında daha güzel bir yapılandırma dosyası olmadan VSCode eklentisi kullanılarak kaynaklanmıştır .

Eklentiyi devre dışı bırakmak sorunu çözdü. Muhtemelen daha güzel yapılandırmaya dayanarak düzeltilebilirdi.


1
Benim için "Güzelleştirmek" eklentisiydi.
Matthew Smith

"Clang-Format" ve ".clang-format" yapılandırma dosyası ile aynı sorunu yaşadım.
repkap11

6

Büyük olasılıkla kurulu bazı biçimlendirme uzantılarınız var, örneğin JS-CSS-HTML Formatter .

Bu durumda Komut Paletini açın, "Formatter" yazın ve seçin Formatter Config. Sonra değerini "indent_size"istediğiniz gibi düzenleyin .

PS Düzenledikten sonra Visual Studio Code'u yeniden başlatmayı unutmayın :)


6

aşağıdaki ayarlar sorunumu çözdü

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

u sadece 2 boşluk sekmeli dosyalar ile çalışırsa çalışır!
Dominux

2

Buraya sekme girintili olmadığı için google'dan geldiyseniz, bunun nedeni "Sekme Odağı Hareket Ettir" özelliğinin açık olması olabilir. Sağ altta ve yeterince büyük bir monitörünüz varsa, vurgulanmasına rağmen onu kaçırabilirsiniz.

resim açıklamasını buraya girin

Yeşil alanı veya durdurmak için Ctrl + M tuşlarını tıklatın. Tamamen devre dışı bırakılabilir emin değilim, sonra tekrar neden bir kod editörü girintileme gibi bir şey ile uğraşmak istiyorum bilmiyorum.


2

Benzer bir sorunum vardı - ne yaptığımdan bağımsız olarak tabsize 2'de yapışmasını alamadım, kullanıcı ayarlarımda olmasına rağmen - bu EditorConfig uzantısı nedeniyle sona erdi . .editorconfigGeçerli çalışma dizininizde bir dosya arar ve bir dosya bulamazsa (veya bulduğu dosya belirtmezse root=true), bir dosya buluncaya kadar üst dizinlere bakmaya devam eder.

.editorconfigBen tüm yeni kod projeler koymak dir dir üst dizinde vardı çıkıyor ve bir tabSize 4 belirtildi. Bu dosyayı silmek benim sorunum düzeltildi.


1

Bazen aynı problemim var. VSCode aniden aklını kaybedecek ve aynı dosyayı bütün gün iyi girintili olsa bile, söylediğim herhangi bir girinti ayarını tamamen görmezden gelecek.

Ben var editor.tabSize(yanı sıra 2 olarak ayarlandığında editor.formatOnSavetrue kümesi). VSCode bir dosyayı bozduğunda, bir şeyin işe yarayacağını umarak girinti türünü ve boyutunu değiştirmek için düzenleyicinin altındaki seçenekleri kullanıyorum, ancak VSCode aslında 4 girintisi boyutunu kullanmakta ısrar ediyor.

Çözüm? VSCode'u yeniden başlatın. Girinti durumu yanlış bir şey gösteren ile geri dönmelidir (benim durumumda, 4). Benim için, ayarı değiştirmek zorunda kaldım ve daha sonra değişikliği yapmak için kaydetmeliydim, ancak bu muhtemelen benim ayarımdan dolayı editor.formatOnSave.

Neden olduğunu anlayamadım, ama benim için genellikle bir JS dosyasında iç içe geçmiş bir nesneyi düzenlerken. Bir süredir bu dosyada çalışıyordum ve gayet iyi girintili olsa da, nesne içinde aniden çok tuhaf girinti yapacak.


0

VSCode eklentisi Vetur; VueJS uygulamaları için kullanılan ayar benim için ayarı geçersiz kılıyordu.

Vetur.format.options.tabSize öğesini tercih ettiğim boşluk sayısına göre ayarlamam işe yaradı.



-1

Tüm eklentileri devre dışı bırakın (ardından tek tek etkinleştirin ve doğrulayın)

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.