ฉันจะบังคับ Sublime Text ให้เยื้องสองช่องว่างต่อแท็บได้อย่างไร


504

มีวิธีบังคับ Sublime Text 2 ให้เยื้องสองช่องว่างต่อแท็บเสมอเมื่อทำงานกับไฟล์ทับทิม?

ฉันรู้ว่าการเยื้องสามารถตั้งค่าได้ภายใต้view -> indentationตัวเลือกเมนู แต่ไม่ติด ทุกครั้งที่ฉันเปิดไฟล์ใหม่และกดที่แท็บมันจะย้อนกลับไปที่ช่องว่างสี่ช่อง


ประเสริฐแตกต่างกันเล็กน้อย / แปลกโดยค่าเริ่มต้น แม้ว่ามันอาจจะบันทึกไฟล์ด้วยช่องว่างหลาย ๆ ตัวแก้ไขมันจะลบทั้งสองช่องว่างถ้ามันระบุว่าเป็นการเยื้อง
Lime

คำตอบ:


899

หากคุณต้องการมันสำหรับทุกPreferences -> Settings - Default/Userไฟล์ไปที่ แต่เนื่องจากความคิดเห็นหลายรายการด้านล่างระบุว่าการตั้งค่าเฉพาะไวยากรณ์สามารถ จำกัด เพียงภาษาที่คุณเลือก

เพื่อ จำกัด Preferences -> Settings - Syntax Specificการกำหนดค่านี้ไปยังไฟล์ทับทิมแรกเปิดไฟล์ทับทิมในการแก้ไขและจากนั้นไปที่ ควรเปิดหน้าต่างการตั้งค่าที่ชื่อว่าRuby.sublime-settings

บันทึกการตั้งค่าเหล่านี้:

{
  "tab_size": 2,
  "translate_tabs_to_spaces": true,
  "detect_indentation": false
}

ทำซ้ำสำหรับไวยากรณ์ประเภทอื่น ๆ โดยการเปิดไฟล์ประเภทนั้นและกลับไปที่การตั้งค่าเพื่อเปิดไฟล์การกำหนดค่าที่ถูกต้องสำหรับไวยากรณ์นั้น

ฉันได้แก้ไขสิ่งนี้เพื่อรวมบรรทัด "detect_indentation" ตามคำขอในความคิดเห็น ก่อนหน้านี้ฉันใช้ Default / User เพื่อตั้งค่าขนาดแท็บและไม่จำเป็นต้องมีการตรวจจับแท็บ แต่ไม่ว่าจะเกิดจากการกำหนดค่าทั่วโลกหรือเนื่องจากความจริงที่ว่าฉันได้เปิดไฟล์ที่มีแท็บบ่อยครั้ง

ไม่จำเป็นต้องเริ่มระบบใหม่แม้ว่าในบางกรณีอาจเป็นไปได้


11
จาก build 2181 คุณสามารถกำหนดการตั้งค่าได้จาก Preferences -> Settings - Default / User ดีที่สุดที่จะวางไว้ในการตั้งค่าผู้ใช้ตามที่เป็นแนวทางที่ตั้งใจไว้
Kevin Jalbert

20
@KevinJalbert (และ DGM) ที่จริงแล้วเขาควรใส่ไว้ในการตั้งค่าเฉพาะไวยากรณ์ดังนั้นมันจะมีผลเฉพาะกับไฟล์ทับทิม
พอลฮอฟเฟอร์

6
ขอให้สังเกตว่าค่านั้นเป็นจริงและไม่ใช่ "จริง"
earthmeLon

1
สิ่งนี้มีประโยชน์โดยเฉพาะอย่างยิ่งเนื่องจากเอกสารเว็บไซต์ของ Sublime Text แนะนำอย่างไม่ถูกต้องให้ใช้ camelCase แทนที่จะขีดเส้นใต้ในคีย์การตั้งค่า ... ยังคง ( sublimetext.com/docs/indentation )
Eric Goldberg

@EricGoldberg - ฉันไม่แน่ใจว่าคุณมาที่หน้าเอกสารนั้นได้อย่างไร แต่ถ้าคุณไปที่sublimetext.com > การสนับสนุนและภายใต้เอกสารคลิกลิงค์ Sublime Text 2 คุณจะถูกนำไปยังsublimetext.com/docs/2 - จากตรงนั้นคุณสามารถค้นหาเอกสารบนการเยื้องและปุ่มการตั้งค่าอย่างถูกต้องใช้ขีดล่าง: sublimetext.com/docs/2/indentation.html
jbyrd

166

หากคุณต้องการบังคับให้การตั้งค่าแท็บที่คุณเลือกไม่สนใจสิ่งที่กำลังเกิดขึ้นในไฟล์คุณควรรวมdetect_indentationไว้ในการกำหนดค่าของคุณ (การตั้งค่าผู้ใช้หรือการตั้งค่าเฉพาะไวยากรณ์ของคุณขึ้นอยู่กับว่าคุณต้องการให้เป็นโกลบอล

{
    "tab_size": 2,
    "translate_tabs_to_spaces": true,
    "detect_indentation": false
}

ขอบคุณสำหรับทิป! โดยไม่detect_indentationได้ปิดฉันได้รับพฤติกรรมที่แปลกมาก (มันตรวจจับการเยื้องอย่างไม่ถูกต้องและใช้สิ่งนั้นแทนสิ่งที่ฉันได้ระบุไว้ในการตั้งค่าของฉัน)
JacobEvelyn

การทำเช่นนี้ในการตั้งค่าเริ่มต้นทำงานให้ฉัน ตรวจสอบให้แน่ใจว่าคุณดูเพื่อดูว่าการตั้งค่ามีอยู่แล้ว หากคุณเพิ่มและประกาศในภายหลังว่าเป็นจริงมันจะยังคงตั้งค่าเป็นจริง
David

3
โปรดทราบว่าการเปลี่ยนแปลงการตั้งค่าเริ่มต้นจะถูกเขียนทับโดยการอัพเดท Sublime Text เป็นต้นการเปลี่ยนแปลงในการตั้งค่าผู้ใช้จะไม่ถูกเขียนทับ
James Chevalier

6
ขอบคุณ!! "detect_indentation":falseมีความสำคัญอย่างยิ่งการตั้งค่าอื่น ๆ จะถูกละเว้น ในที่สุด!
zzzeek

มันเป็นจุดที่ดี แต่ตัวอย่างของคุณถูกเยื้องอย่างไม่เหมาะสม ;-)
snow6oy

88

คุณสามารถทำได้ด้วยลิงก์ข้อความในแถบด้านล่างของ Sublime Text 2 (ทางด้านขวา) ที่ระบุว่า "ขนาดแท็บ 4" โดยค่าเริ่มต้นคลิกที่และหน้าต่างจะปรากฏขึ้นพร้อมตัวเลือกเพื่อกำหนดขนาดแท็บจากพื้นที่ 1 ไปจนถึงช่องว่าง 8 ช่องและมีตัวเลือกในการแปลงแท็บเป็นช่องว่างและช่องว่างเป็นแท็บ

ดูเหมือนว่านี้:

แท็บตัวเลือกใน Sublime Text 2


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

5
นี้ไม่ได้ทำงาน เป็นคำแนะนำที่ดี แต่ไม่เหนียวเหนอะการปิดและเปิดไฟล์อีกครั้ง (หรือเปิดไฟล์อื่น) จะแปลงการเยื้องเป็นสี่ช่องว่าง
Mohamad

1
ใช่มันไม่เหนียวมันต่อไฟล์ คุณต้องเข้าไปที่การตั้งค่า Sublime Text เพื่อตั้งค่าการตั้งค่าเริ่มต้นสำหรับแท็บ / ช่องว่าง
Taskism

วิธีนี้แก้ไขปัญหาของฉันใน Sublime Text 3 ขอบคุณ!
เอเดรีย

29

ฉันสามารถแนะนำEditorConfig ได้ไหม มีส่วนขยายสำหรับ autoload และใช้.editorconfigไฟล์นี้ จากนั้นสร้างเพียงหนึ่งรายการในรูทของโครงการของคุณ

.editorconfig

[*.rb]
indent_style = tab
indent_size = 2

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


นี่คือ.editorconfigลักษณะของฉันเอง

# editorconfig.org
root = true

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

2
ฉันไม่ต้องการที่จะทำให้การเปลี่ยนแปลงระดับโลก นี่เป็นทางออกเดียวที่ทำงานได้ ฉันทำการค้นคว้าบางอย่างใน EditorConfig และมันก็ดูดีมากสำหรับ IDEs ที่สนับสนุน
Neil Monroe

1
มันเกิดขึ้นจนฉันมี. editorconfig ในโครงการของฉันอยู่แล้วและไม่รู้ด้วยซ้ำ (
angi

9

ฉันใช้แพ็คเกจเยื้องโง่

Install Package -> Stupid Indent

Preferences-> Package Settings-> Stupid Indent->Setting-Users

คัดลอกการตั้งค่า (ของชิ้นRubyส่วน) ลงใน

{
    "configuration":
    [
        {
            "patterns": ["*.rb"],
            "tab_size": 2,
            "translate_tabs_to_spaces": true
        }
    ]
}

ใช่นี่คือสิ่งที่ฉันต้องการ: D
Dragutescu Alexandru

น่ากลัว ขอบคุณมาก :)
krithikaGopalakrisnan

คำเตือน โง่เยื้องเริ่มต้นการตั้งค่าที่กำหนดเองและบังคับให้เขียนทับข้อความ SublimeและEditorConfigการตั้งค่า ขอบคุณ
СашаЧерных

1

ฉันทำตามคำตอบก่อนหน้านี้รวมถึงการเพิ่มบรรทัด detect_indentation และแท็บของฉันยังคงเว้นวรรคห้า แล้วฉันตระหนักว่าการเลือกPreferences -> Settings -> More -> Syntax Specific -> Userจากไฟล์ทับทิมถูกเปิดขึ้นสำหรับฉันไม่ได้Ruby on Rails.sublime-settingsRuby.sublime-settings

ผมเปลี่ยนชื่อของฉันไฟล์Ruby on Rails.sublime-settings Ruby.sublime-settingsในที่สุดแท็บสองช่องว่างก็ใช้งานได้! ฉันไปข้างหน้าและตั้งค่าแบบเดียวกันด้วยRuby on Rails.sublime-settingsเช่นกันเพื่อให้แน่ใจ

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