Visual Studio Code: định dạng không sử dụng cài đặt thụt lề


143

Khi sử dụng Format Codelệnh trong Visual Studio Code, nó không tôn trọng các thiết lập thụt lề của tôi ( "editor.tabSize": 2). Nó đang sử dụng một kích thước tab 4 thay thế. Có ý kiến ​​giải thích tại sao điều này lại xảy ra không?

Cảm ơn!


Ngôn ngữ nào? Visual Studio Code ủy nhiệm định dạng cho trình định dạng Ngôn ngữ. Một số định dạng không quan sát các thiết lập thụt lề. Ví dụ: C #, được xử lý bởi OmniSharp và nên được định cấu hình bằng omquerarp.json
Ian Yang

Điều này khiến tôi mất nhiều thời gian để tìm ra: Tôi có một tệp .cs với các tab hỗn hợp và dấu cách không gian và muốn định dạng nó với tất cả các tab (b / c phần lớn các dòng có các tab). Tôi đã thử các giá trị cài đặt khác nhau với "Định dạng tài liệu" và "Chọn định dạng" nhưng không gặp may. Cuối cùng tôi đã tìm thấy hành động "Chuyển đổi thụt vào tab" (xem hình ảnh trong câu trả lời của @ Maleki) và đó là điều tôi muốn làm. (Gần đây tôi cũng đã phát hiện ra ctrl-shift-p! ... vâng, tôi mới biết về Mã VS)
KevinVictor

Câu trả lời:


228

Số lượng không gian để sử dụng để định dạng được lấy từ một vị trí khác nhau. Tôi đang sử dụng phiên bản 1.0 và đây là những gì tôi đã thực hiện để khắc phục nó (Tôi giả sử bạn sử dụng khoảng trắng thay vì các tab):

Ở dưới cùng của trình chỉnh sửa ở bên tay phải, nhấp vào "Spaces: #":

thanh trạng thái bên phải

Sau đó, một menu sẽ xuất hiện trên đầu trang. Chọn "Không gian sử dụng thụt lề":

chọn loại thụt

Cuối cùng, bạn có thể chọn theo số lượng khoảng trống bạn muốn tệp của mình được thụt lề.

chọn kích thước tab

Lần tới khi bạn định dạng tệp, bạn sẽ có thể nhận được khoảng cách bạn đã định cấu hình.


28
Cài đặt này không được sử dụng khi áp dụng định dạng tự động (nhấp chuột phải -> Mã định dạng). Nó luôn sử dụng 4 không gian.
kiml42

Bạn cần cả hai - định cấu hình cài đặt cá nhân của bạn cho không gian làm việc hoặc trình chỉnh sửa (hoặc cả hai). Các tệp mới sẽ chọn cài đặt đó và hiển thị '2', ví dụ, trên thanh trạng thái theo các ảnh chụp màn hình này. Sau đó, bạn có thể tự động định dạng. Đối với các tệp hiện có, trước tiên hãy đặt cài đặt không gian làm việc / trình chỉnh sửa của bạn thành 'sử dụng tab' hoặc 'sử dụng khoảng trắng' và đặt số lượng khoảng trắng, sau đó bạn có thể thực hiện phương pháp trên để tự động định dạng các tệp hiện có.
rmcsharry

5
Đặt cả cài đặt người dùng và không gian làm việc, đặt nó ở thanh dưới cùng, mở lại tệp - vẫn tự động định dạng đang sử dụng 4 khoảng trắng ...
Jared

3
Phải thoát và khởi động lại vscode sau khi đặt mặc định cả người dùng và không gian làm việc cho các cài đặt cần thực hiện. Chỉ sau đó nó mới ngừng cố gắng sử dụng 4 khoảng trắng trên các tệp JS của tôi.
John Pettitt

11
@Jared Tôi nghĩ bạn đang sử dụng JS-CSS-HTMLplugin. Trong trường hợp đó Bấm F1và chọn định dạng và đặt thụt lề của bạn ở đó. Nó dường như ghi đè tất cả các tùy chọn thảo luận ở trên.
Atif Mohammed Ameenuddin

111

Visual Studio Code phát hiện thụt lề hiện tại trên mỗi mặc định và sử dụng điều này - bỏ qua .editorconfig

Đặt "Editor.detectInentation" thành false

(Tệp -> Tùy chọn -> Cài đặt)

ảnh chụp màn hình


Nếu điều này xảy ra, bạn có thể có sự thụt dòng không nhất quán trong tệp. Tôi đã có một tệp có các tab ở khắp mọi nơi ngoại trừ một vài dòng có hai khoảng trắng (ai biết tại sao), cuối cùng bị phát hiện là sử dụng các tab nhưng với kích thước tab là 2.
isanae

49

Nếu câu trả lời của @ Maleki không hiệu quả với bạn, hãy kiểm tra và xem bạn có .editorconfigtệp trong thư mục dự án của bạn không.

Ví dụ, Angular CLI tạo một dự án mới giống như thế này

# 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

Thay đổi indent_sizeở đây là bắt buộc vì có vẻ như nó sẽ ghi đè mọi thứ trong .vscodekhông gian làm việc hoặc cài đặt người dùng của bạn .


5
Tôi đã phải khởi động lại VSCode để thay đổi có hiệu lực trong IDE.
JOpuckman

3
Trong trường hợp của tôi, nó thực sự được gây ra bởi các .editorconfigtập tin trong thư mục nhà của tôi. Bằng cách nào đó, nó làm cho VSCode bỏ qua mọi cài đặt dành riêng cho Không gian làm việc. Rất phiền phức.
xji

20

Nếu bạn đang sử dụng một plugin (trong trường hợp của tôi là Vetur, cho vue.js), chúng có thể đặt cài đặt định dạng tab của riêng họ.

Mở cài đặt của bạn, tìm kiếm "định dạng" và xem qua các cài đặt plugin có liên quan có thể ghi đè định dạng tab toàn cầu. Điều này làm việc cho tôi; khi tôi cập nhật cài đặt tab Vetur để phù hợp với sở thích của mình (tab 4 kích thước trong trường hợp của tôi), định dạng tài liệu .vue bắt đầu hoạt động chính xác:

nhập mô tả hình ảnh ở đây


Điều đó đúng, trong trường hợp của tôi, tôi cũng cần đặt kích thước tab trong cài đặt của tiện ích mở rộng Prettier.
tonix

Đáng lưu ý rằng SCSS Formatterplugin sử dụng các cài đặt riêng của nó chẳng hạn, vì vậy bạn phải dùng Settings > Extensions > SCSS Formatter > Use Tabsđể buộc nó sử dụng các tab chẳng hạn.
SmartyP

13

Đối với bản thân tôi, vấn đề này là do sử dụng prettierplugin VSCode mà không có tệp cấu hình đẹp hơn trong không gian làm việc.

Vô hiệu hóa các plugin đã khắc phục vấn đề. Nó cũng có thể đã được sửa bằng cách dựa vào cấu hình đẹp hơn.


1
Đối với tôi đó là plugin "Làm đẹp".
Matthew Smith

Tôi gặp vấn đề tương tự với "Clang-Format" và tệp cấu hình ".clang-format".
repkap11

6

Nhiều khả năng bạn đã cài đặt một số tiện ích mở rộng định dạng, ví dụ: Trình định dạng JS-CSS-HTML .

Nếu đó là trường hợp, sau đó chỉ cần mở Bảng màu, nhập "Định dạng" và chọn Formatter Config. Sau đó chỉnh sửa giá trị của"indent_size" như bạn muốn.

PS Đừng quên khởi động lại Visual Studio Code sau khi chỉnh sửa :)


6

các cài đặt bên dưới đã giải quyết vấn đề của tôi

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

nó hoạt động nếu bạn làm việc với các tệp chỉ có 2 dấu cách!
Dominux

2

Nếu bạn đến đây từ google vì tab không được thụt lề, điều này cũng có thể là do "Tab Moves Focus" được bật. Nó nằm ở dưới cùng bên phải, và nếu bạn có một màn hình đủ lớn, bạn có thể bỏ lỡ nó mặc dù nó được làm nổi bật.

nhập mô tả hình ảnh ở đây

Nhấp vào khu vực màu xanh lá cây hoặc Ctrl + M để làm cho nó dừng lại. Tôi không chắc nó có thể bị vô hiệu hóa hoàn toàn, sau đó một lần nữa tôi không biết tại sao một trình soạn thảo mã lại muốn gây rối với thứ gì đó như thụt lề.


2

Tôi đã gặp một vấn đề tương tự - bất kể tôi đã làm gì, tôi không thể đặt tabize ở mức 2, mặc dù nó nằm trong cài đặt người dùng của tôi - cuối cùng là do tiện ích mở rộng EditorConfig . Nó tìm kiếm một .editorconfigtệp trong thư mục làm việc hiện tại của bạn và, nếu nó không tìm thấy một (hoặc tệp mà nó tìm thấy không chỉ địnhroot=true ), nó sẽ tiếp tục xem các thư mục mẹ cho đến khi tìm thấy một thư mục.

Hóa ra tôi đã có một .editorconfigthư mục mẹ của thư mục Tôi đã đặt tất cả các dự án mã mới của mình vào và nó đã chỉ định một kích cỡ tab 4. Xóa tệp đó đã khắc phục sự cố của tôi.


1

Tôi đôi khi có vấn đề tương tự. VSCode sẽ đột nhiên mất trí và hoàn toàn bỏ qua bất kỳ cài đặt thụt đầu dòng nào tôi nói với nó, mặc dù nó được thụt vào cùng một tệp chỉ tốt cả ngày.

Tôi đã editor.tabSizeđặt thành 2 (cũng nhưeditor.formatOnSave đặt thành đúng). Khi VSCode làm rối một tập tin, tôi sử dụng các tùy chọn ở dưới cùng của trình chỉnh sửa để thay đổi loại và kích thước thụt đầu dòng, hy vọng một cái gì đó sẽ hoạt động, nhưng VSCode nhấn mạnh vào việc sử dụng kích thước thụt là 4.

Cách khắc phục? Khởi động lại VSCode. Nó sẽ trở lại với trạng thái thụt lề hiển thị một cái gì đó sai (trong trường hợp của tôi, 4). Đối với tôi, tôi đã phải thay đổi cài đặt và sau đó lưu lại để thực sự thay đổi, nhưng đó có lẽ là do tôieditor.formatOnSave cài đặt .

Tôi đã không tìm ra lý do tại sao nó xảy ra, nhưng đối với tôi, đó thường là khi tôi chỉnh sửa một đối tượng lồng nhau trong một tệp JS. Nó sẽ đột nhiên thụt vào rất lạ trong đối tượng, mặc dù tôi đã làm việc trong tập tin đó một thời gian và nó được thụt lề rất tốt.


0

Plugin VSCode Vetur; được sử dụng cho các ứng dụng VueJS đã ghi đè cài đặt cho tôi.

Đặt vetur.format.options.tabSize thành số không gian ưa thích của tôi khiến nó hoạt động.



-1

Vô hiệu hóa tất cả các plugin (sau đó kích hoạt từng cái một và xác minh)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.