แปลงช่องว่างเป็นแท็บ


140

ผมเขียนTypeScriptและHTMLไฟล์และแท็บได้รับการแปลงพื้นที่

ในTypeScriptโครงการของฉันทุกแท็บจะแปลงเป็นช่องว่างฉันต้องการปิดและมีแท็บแทนช่องว่าง

นี่คือการตั้งค่าของฉัน:

{
  "editor.insertSpaces": false
}

แก้ไข 1:

ดูเหมือนว่าจะทำงานใน.htmlไฟล์ แต่ไม่ใช่ใน.tsไฟล์

คำตอบ:


249

มี 3 ตัวเลือกใน.vscode/settings.json:

// The number of spaces a tab is equal to.
"editor.tabSize": 4,

// Insert spaces when pressing Tab.
"editor.insertSpaces": true,

// When opening a file, `editor.tabSize` and `editor.insertSpaces` will be detected based on the file contents.
"editor.detectIndentation": true

editor.detectIndentationตรวจพบจากไฟล์ของคุณคุณต้องปิดการใช้งาน หากไม่ได้ผลโปรดตรวจสอบว่าคุณไม่มีการตั้งค่าที่มีลำดับความสำคัญสูงกว่า ตัวอย่างเช่นเมื่อคุณบันทึกลงในการตั้งค่าผู้ใช้อาจถูกเขียนทับโดยการตั้งค่าพื้นที่ทำงานซึ่งอยู่ในโฟลเดอร์โครงการของคุณ

ปรับปรุง:

คุณสามารถเปิดไฟล์ »การตั้งค่า » การตั้งค่าหรือใช้ทางลัด:

CTRL+ , (Windows, ลินุกซ์)

+ , (Mac)

ปรับปรุง:

ตอนนี้คุณมีทางเลือกอื่นในการแก้ไขตัวเลือกเหล่านั้นด้วยตนเอง
คลิกที่ตัวเลือกSpaces: 4ที่ด้านล่างขวาของตัวแก้ไข:
Ln44 พ.ท.  [ช่องว่าง: 4]  UTF-8 พร้อม BOM  CTRLF  HTML  :)

เมื่อคุณต้องการแปลง ws ที่มีอยู่เป็นแท็บให้ติดตั้งส่วนขยายจาก Marketplace
แก้ไข:
ในการแปลงการเยื้องที่มีอยู่จากช่องว่างเป็นแท็บกดCtrl+ Shift+Pและพิมพ์:

>Convert indentation to Tabs

การดำเนินการนี้จะเปลี่ยนการเยื้องสำหรับเอกสารของคุณตามการตั้งค่าที่กำหนดเป็นแท็บ


1
@Viragos settings.json
v-andrew

2
ฉันจะรันคำสั่งนี้สำหรับไฟล์ทั้งหมดในพื้นที่ทำงานของฉันได้อย่างไร
Vijender Kumar

135

หากต้องการเปลี่ยนการตั้งค่าแท็บให้คลิกพื้นที่ข้อความทางขวาไปยังข้อความ Ln / Col ในแถบสถานะที่ด้านล่างขวาของหน้าต่าง vscode

ชื่อสามารถเป็นTab SizeหรือSpaces.

เมนูจะปรากฏขึ้นพร้อมการดำเนินการและการตั้งค่าทั้งหมดที่มี

ป้อนคำอธิบายภาพที่นี่


3
สำหรับฉันสิ่งนี้จะเปลี่ยนการตั้งค่าเหล่านี้สำหรับไฟล์ที่ฉันกำลังดูอยู่เท่านั้น ไฟล์อื่น ๆ ในโครงการจะเก็บการตั้งค่าเดิมไว้ คุณจะตั้งค่าอย่างไรในระดับสากล?
Kyle Vassella

ฉันมักจะแทนที่ไฟล์ทั้งหมดของฉันในครั้งเดียวหากต้องการโดยทำการค้นหาโปรเจ็กต์สำหรับ regex แบบง่าย `{4} 'และแทนที่ด้วย \ t (สำหรับแท็บ) โดยปกติจะมองไปที่การจับคู่เพื่อให้แน่ใจว่าจะไม่มีอะไรแตกเหมือนตัวอักษรสตริงแบบหลายบรรทัดเป็นต้นแน่นอนใช้การตั้งค่าเหล่านี้เพื่อให้การเยื้องใหม่ของคุณเป็นอักขระที่ต้องการด้วยเช่นกัน!
cossacksman


13

หากคุณต้องการใช้แท็บแทนช่องว่าง

ลองสิ่งนี้:

  1. ไปที่FilePreferencesSettingsหรือเพียงแค่กดCtrl + ,
  2. ในแถบการตั้งค่าการค้นหาด้านบนแทรกeditor.insertSpaces
  3. คุณจะเห็นสิ่งนี้: ตัวแก้ไข: แทรกช่องว่างและอาจถูกตรวจสอบ เพียงแค่ยกเลิกการเลือกตามที่แสดงในภาพด้านล่าง

บรรณาธิการ: แทรกช่องว่าง

  1. โหลดVisual Studio CodeF1ซ้ำ(กด➤พิมพ์reload window➤กดEnter)

หากไม่ได้ผลให้ลองทำดังนี้:

อาจเป็นเพราะปลั๊กอินJS-CSS-HTML Formatter ที่ติดตั้งไว้

(คุณสามารถตรวจสอบได้โดยไปที่FilePreferencesExtensionsหรือเพียงแค่กดCtrl + Shift + Xในการเปิดใช้งานรายการคุณจะพบJS-CSS-HTML ฟอร์แมต )

หากเป็นเช่นนั้นคุณสามารถแก้ไขปลั๊กอินนี้ได้:

  1. กดF1➤พิมพ์Formatter config➤กดEnter(มันจะเปิดไฟล์formatter.json)
  2. แก้ไขไฟล์ดังนี้:
 4|    "indent_size": 1,
 5|    "indent_char": "\t"
——|
24|    "indent_size": 1,
25|    "indentCharacter": "\t",
26|    "indent_char": "\t",
——|
34|    "indent_size": 1,
35|    "indent_char": "\t",
36|    "indent_character": "\t"
  1. บันทึก (ไปที่FileSaveหรือกดCtrl + S )
  2. โหลดVisual Studio CodeF1ซ้ำ(กด➤พิมพ์reload window➤กดEnter)

หากคุณต้องการช่องว่างแทนแท็บปรับเปลี่ยนformatter.jsonไฟล์: ใส่หนึ่งพื้นที่ในเครื่องหมายคำพูดใด ๆ แทน\t(ดังนั้น"\t"กลายเป็น" ") และวาง4ที่คุณเห็น1 คุณอาจจะเป็นแบบนี้ "indent_size": 4, "indent_char": " " "indent_size": 4, "indentCharacter": " ", "indent_char": " ", "indent_size": 4, "indent_char": " ", "indent_character": " "
Alex Logvin

1
ขั้นตอน RELOAD WINDOW คือสิ่งที่ฉันขาดหายไป น่าผิดหวังที่ต้องทำขั้นตอนการทำเครื่องหมายในช่องและเล่นซอกับการตั้งค่า 3 ครั้งโดยไม่มีการเปลี่ยนแปลงใด ๆ เมื่อสิ่งที่ฉันต้องทำคือโหลดหน้าต่างใหม่ ขอบคุณสำหรับทิป!
รินและเลน

8

ในกรณีของฉันปัญหาคือส่วนขยายJS-CSS-HTML Formatter ที่ติดตั้งหลังจากอัปเดตเมื่อเดือนมกราคม indent_charคุณสมบัติเริ่มต้นคือช่องว่าง ฉันถอนการติดตั้งและพฤติกรรมแปลก ๆ ก็หยุดลง


โอ้ใช่นี่เป็นปัญหาที่แท้จริงสำหรับฉัน ใช้เวลาส่วนใหญ่ในการแก้ไขการตั้งค่าในรหัส VS ในที่สุดการปิดใช้งานส่วนขยายนี้ก็ช่วยแก้ปัญหาได้
Avijeet

8

ตรวจสอบสิ่งนี้จากการตั้งค่า vscode อย่างเป็นทางการ:

// Controls whether `editor.tabSize#` and `#editor.insertSpaces` will be automatically detected when a file is opened based on the file contents.
"editor.detectIndentation": true,

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

// Config the editor that making the "space" instead of "tab"
"editor.insertSpaces": true,

// Configure editor settings to be overridden for [html] language.
"[html]": {
    "editor.insertSpaces": true,
    "editor.tabSize": 2,
    "editor.autoIndent": false
}

7

การตั้งค่าด้านล่างทำงานได้ดีสำหรับฉัน

"editor.insertSpaces": false,
"editor.formatOnSave": true, // only if you want auto fomattting on saving the file
"editor.detectIndentation": false

การตั้งค่าด้านบนจะแสดงและนำไปใช้กับทุกไฟล์ คุณไม่จำเป็นต้องเยื้อง / จัดรูปแบบทุกไฟล์ด้วยตนเอง


3

ไฟล์ -> ค่ากำหนด -> การตั้งค่าหรือเพียงแค่กดCtrl+ ,และค้นหาช่องว่างจากนั้นปิดใช้งานตัวเลือกนี้:

ป้อนคำอธิบายภาพที่นี่

ฉันต้องเปิดไฟล์อีกครั้งเพื่อให้การเปลี่ยนแปลงมีผล


1
  1. เน้นรหัสของคุณ (ในไฟล์)
  2. คลิกขนาดแท็บที่มุมล่างขวาของหน้าต่างแอปพลิเคชัน ขนาดแท็บที่มุมล่างขวาของภาพหน้าต่างแอปพลิเคชัน
  3. เลือกแปลงการเยื้องเป็นแท็บที่เหมาะสม เลือกภาพแปลงการเยื้องเป็นแท็บที่เหมาะสม

1

หากคุณต้องการเปลี่ยนแท็บเป็นช่องว่างในไฟล์จำนวนมาก แต่ไม่ต้องการเปิดทีละไฟล์ฉันพบว่ามันทำงานได้ดีพอ ๆ กันเพียงแค่ใช้ตัวเลือกค้นหาและแทนที่จากแถบเครื่องมือทางซ้ายสุด

ในช่องแรก ( Find) คัดลอกและวางแท็บจากซอร์สโค้ด

ในช่องที่สอง ( Replace) ให้ป้อนจำนวนช่องว่างที่คุณต้องการใช้ (เช่น 2 หรือ 4)

หากคุณกด...ปุ่มคุณสามารถระบุไดเร็กทอรีที่จะรวมหรือละเว้น (เช่นsrc/Data/Json)

สุดท้ายตรวจสอบการแสดงตัวอย่างผลและกดแทนที่ทั้งหมด ไฟล์ทั้งหมดในพื้นที่ทำงานอาจได้รับผลกระทบ


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.