Visual Studio Code: format tidak menggunakan pengaturan indentasi

143

Saat menggunakan Format Codeperintah dalam Visual Studio Code, itu tidak menghormati pengaturan indentasi saya ( "editor.tabSize": 2). Ini menggunakan ukuran tab 4 sebagai gantinya. Adakah ide mengapa ini terjadi?

Terima kasih!

AndyPerlitch
sumber
Bahasa apa? Format delegasi Visual Studio Code ke pemformat Bahasa. Beberapa formatter memperhatikan pengaturan indent. Misalnya, C #, yang ditangani oleh OmniSharp, dan harus dikonfigurasikan menggunakan omnisharp.json
Ian Yang
Ini memakan waktu lama bagi saya untuk mencari tahu: Saya memiliki file .cs dengan tab campuran dan spasi-indentasi dan ingin memformatnya dengan semua tab (b / c sebagian besar baris memiliki tab). Saya mencoba berbagai nilai pengaturan dengan "Format dokumen" dan "Pemilihan format" tetapi tidak berhasil. Akhirnya saya menemukan tindakan "Konversi Indentasi ke Tab" (lihat gambar di jawaban @ Maleki) dan itu melakukan apa yang ingin saya lakukan. (Saya juga baru menemukan ctrl-shift-p! ... ya, saya baru mengenal VS Code)
KevinVictor

Jawaban:

228

Jumlah ruang yang digunakan untuk pemformatan diambil dari lokasi yang berbeda. Saya menggunakan versi 1.0 dan inilah yang telah saya lakukan untuk memperbaikinya (saya menganggap Anda menggunakan spasi alih-alih tab):

Di bagian bawah editor di sebelah kanan klik "Spaces: #":

bilah status di sebelah kanan

Maka menu akan muncul di bagian atas. Pilih "Indent Using Spaces":

pilih jenis lekukan

Akhirnya Anda dapat memilih berapa banyak ruang yang Anda inginkan untuk indentasi file Anda.

pilih ukuran tab

Lain kali Anda memformat file Anda harus bisa mendapatkan jarak yang Anda konfigurasikan.

Maleki
sumber
28
Pengaturan ini tidak digunakan ketika menerapkan format otomatis (klik kanan -> Format Kode). Selalu menggunakan 4 spasi.
kiml42
Anda perlu keduanya - mengonfigurasi pengaturan pribadi Anda untuk ruang kerja atau editor (atau keduanya). File baru akan mengambil pengaturan itu dan menunjukkan '2' misalnya, di bilah status sesuai tangkapan layar ini. Maka Anda dapat mengatur sendiri. Untuk file yang ada, pertama-tama atur pengaturan ruang kerja / editor Anda ke 'gunakan tab' atau 'gunakan spasi' dan atur jumlah spasi, maka Anda dapat melakukan metode di atas untuk mengatur otomatis file yang ada.
rmcsharry
5
Tetapkan pengaturan pengguna dan ruang kerja, atur di bilah bawah, buka kembali file - autoformat masih menggunakan 4 spasi ...
Jared
3
Harus keluar dan memulai ulang vscode setelah pengaturan default pengguna dan ruang kerja untuk pengaturan yang harus diambil. Baru kemudian berhenti mencoba menggunakan 4 spasi pada file JS saya.
John Pettitt
11
@ Jared Saya pikir Anda menggunakan JS-CSS-HTMLplugin. Dalam hal itu Tekan F1dan pilih formatter dan atur lekukan Anda di sana. Tampaknya mengesampingkan semua opsi yang dibahas di atas.
Atif Mohammed Ameenuddin
111

Visual Studio Code mendeteksi lekukan saat ini per default dan menggunakannya - mengabaikan .editorconfig

Setel juga "editor.detectIndentation" ke false

(File -> Preferensi -> Pengaturan)

tangkapan layar

jnkb
sumber
Jika ini terjadi, Anda mungkin memiliki lekukan yang tidak konsisten dalam file. Saya punya file dengan tab di mana-mana kecuali untuk beberapa baris dengan dua spasi (siapa yang tahu mengapa), yang akhirnya terdeteksi menggunakan tab tetapi dengan ukuran tab 2.
isanae
49

Jika jawaban @ Maleki tidak berfungsi untuk Anda, periksa dan lihat apakah Anda memiliki .editorconfigfile di folder proyek Anda.

Misalnya CLI Angular menghasilkan satu dengan proyek baru yang terlihat seperti ini

# 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

Mengubah di indent_sizesini diperlukan karena sepertinya itu akan menimpa apa pun di .vscoderuang kerja atau pengaturan pengguna Anda.

seangwright
sumber
5
Saya harus memulai ulang VSCode agar perubahan diterapkan pada IDE.
JOpuckman
3
Dalam kasus saya itu sebenarnya disebabkan oleh .editorconfigfile di folder rumah saya. Entah bagaimana itu membuat VSCode mengabaikan pengaturan spesifik Workspace. Sangat menyebalkan.
xji
20

Jika Anda menggunakan plugin (dalam kasus saya Vetur, untuk vue.js), ini dapat mengatur pengaturan format tab mereka sendiri.

Buka pengaturan Anda, cari "format" dan lihat melalui pengaturan plugin yang relevan yang mungkin menimpa format tab global. Ini bekerja untuk saya; setelah saya memperbarui pengaturan tab Vetur agar sesuai dengan preferensi saya (tab 4-ukuran dalam kasus saya), memformat dokumen .vue mulai berfungsi dengan baik:

masukkan deskripsi gambar di sini

Ciabaros
sumber
Itu benar, dalam kasus saya, saya perlu mengatur ukuran tab di pengaturan ekstensi cantik juga.
tonix
Perlu dicatat bahwa SCSS Formatterplugin menggunakan pengaturannya sendiri misalnya, jadi Anda harus pergi Settings > Extensions > SCSS Formatter > Use Tabsuntuk memaksanya menggunakan tab misalnya.
SmartyP
13

Bagi saya sendiri, masalah ini disebabkan oleh penggunaan prettierplugin VSCode tanpa memiliki file konfigurasi yang lebih cantik di ruang kerja.

Menonaktifkan plugin memperbaiki masalah. Itu mungkin juga bisa diperbaiki dengan mengandalkan konfigurasi yang lebih cantik.

tailattention
sumber
1
Bagi saya itu adalah plugin "Beautify".
Matthew Smith
Saya memiliki masalah yang sama dengan file konfigurasi "Clang-Format" dan ".clang-format".
repkap11
6

Kemungkinan besar Anda memiliki beberapa ekstensi format yang diinstal, misalnya JS-CSS-HTML Formatter .

Jika ini masalahnya, maka cukup buka Command Palette, ketik "Formatter" dan pilih Formatter Config. Kemudian edit nilai "indent_size"sesuka Anda.

PS Jangan lupa untuk me-restart Visual Studio Code setelah mengedit :)

Albert Timashev
sumber
6

pengaturan di bawah memecahkan masalah saya

  "editor.detectIndentation": false,
  "editor.insertSpaces": false,
  "editor.tabSize": 2,
rashidnk
sumber
berfungsi jika Anda bekerja dengan file dengan 2 spasi tab saja!
Dominux
2

Jika Anda datang ke sini dari google karena tab tidak indentasi, ini juga bisa karena "Tab Moves Focus" aktif. Itu ada di kanan bawah, dan jika Anda memiliki monitor yang cukup besar Anda mungkin melewatkannya meskipun sedang disorot.

masukkan deskripsi gambar di sini

Klik area Hijau atau Ctrl + M untuk menghentikannya. Saya tidak yakin ini dapat sepenuhnya dinonaktifkan, sekali lagi saya tidak tahu mengapa editor kode ingin mengacaukan sesuatu seperti indentasi.

Pelit
sumber
2

Saya memiliki masalah yang sama - tidak peduli apa yang saya lakukan, saya tidak dapat membuat tabsize tetap pada 2, meskipun dalam pengaturan pengguna saya - yang akhirnya disebabkan oleh ekstensi EditorConfig . Itu mencari .editorconfigfile di direktori kerja Anda saat ini dan, jika tidak menemukan satu (atau yang ia temukan tidak menentukan root=true), itu akan terus melihat direktori induk sampai menemukan.

Ternyata saya punya .editorconfigdi direktori induk dari dir saya menaruh semua proyek kode baru saya, dan itu menentukan tabSize dari 4. Menghapus file itu memperbaiki masalah saya.

olok-olok
sumber
1

Terkadang saya memiliki masalah yang sama. VSCode tiba-tiba akan kehilangan akal dan sepenuhnya mengabaikan pengaturan lekukan yang saya katakan, meskipun sudah membuat indentasi file yang sama baik-baik saja sepanjang hari.

Saya telah editor.tabSizemenetapkan ke 2 (dan juga editor.formatOnSavedisetel ke true). Ketika VSCode mengacaukan file, saya menggunakan opsi di bagian bawah editor untuk mengubah jenis dan ukuran lekukan, berharap sesuatu akan berfungsi, tetapi VSCode bersikeras untuk benar-benar menggunakan ukuran indent dari 4.

Memperbaiki? Mulai ulang VSCode. Seharusnya kembali dengan status indent yang menunjukkan sesuatu yang salah (dalam kasus saya, 4). Bagi saya, saya harus mengubah pengaturan dan kemudian menyimpannya untuk benar-benar melakukan perubahan, tapi itu mungkin karena editor.formatOnSavepengaturan saya .

Saya belum tahu mengapa itu terjadi, tetapi bagi saya biasanya ketika saya mengedit objek bersarang di file JS. Tiba-tiba itu akan melakukan lekukan yang sangat aneh di dalam objek, meskipun saya sudah bekerja di file itu untuk sementara waktu dan itu sudah indentasi dengan baik.

TuanOBrian
sumber
0

Plugin VSCode Vetur; digunakan untuk aplikasi VueJS mengesampingkan pengaturan untuk saya.

Pengaturan vetur.format.options.tabSize ke jumlah ruang pilihan saya membuatnya berfungsi.

Geser
sumber
0

Saya pikir vscode menggunakan autopep8 untuk memformat .pysecara default.

"PEP 8 - Panduan Gaya untuk Kode Python | Python.org"

Menurut situs web ini, berikut ini dapat menjelaskan mengapa vscode selalu menggunakan 4 spasi.

Gunakan 4 spasi per level indentasi.

Choi
sumber
-1

Nonaktifkan semua plugin (lalu aktifkan satu per satu dan verifikasi)

fider
sumber