Vim รองรับมากเมื่อพูดถึงแท็บ Vs. การตั้งค่าพื้นที่ ตามที่ฉันเข้าใจแล้วการtabstop
ตั้งค่าจะระบุความกว้างของอักขระแท็บ shiftwidth
การตั้งค่าที่ระบุว่าหลายคอลัมน์ที่จะเพิ่มขึ้น / ลดลงเมื่อใช้<<และ>>คำสั่งในขณะที่softtabstop
การตั้งค่ามีผลต่อปริมาณของช่องว่างที่จะแทรกเมื่อคุณกดTabคีย์ในโหมดแทรก หากexpandtab
เปิดอยู่แป้นแท็บจะแทรกsofttabstop
จำนวนอักขระเว้นวรรค ในขณะที่มีexpandtab
การปิดการกดTabแทรกคีย์ตัวเลขที่เป็นไปได้ที่เล็กที่สุดของอักขระแท็บ + softtabstop
พื้นที่ที่การแข่งขัน (กรุณาแก้ไขฉันถ้าฉันผิด)
ประเด็นสุดท้ายนี้ทำให้ฉันสงสัยว่ามีกรณีปฏิบัติที่คุณไม่ต้องการshiftwidth == tabstop && tabstop == softtabstop
หรือไม่? คิดไม่ออกสักอย่าง เท่าที่ฉันกังวลมันจะสะดวกที่สุดถ้าฉันสามารถตั้งค่าทั้ง 3 อย่างนี้เป็นค่าเดียวกันในการมอบหมายงานเดียว เช่นโทร:
:set stab=4
ซึ่งจะเทียบเท่ากับการทำงาน:
:set tabstop=4 softtabstop=4 shiftwidth=4
ใครสามารถแนะนำวิธีนี้ได้บ้าง?
อัปเดต
ขอบคุณสำหรับการตอบกลับจากphp , hobbsและkaiser.seมากเกินไป แทนที่จะตอบกลับทีละคำถามฉันกำลังอัปเดตคำถามที่นี่
Softtabstop ที่ปิด expandtab
ผมกล่าวข้างต้นว่ามีการ expandtab ปิดกดปุ่ม Tab แทรกจำนวนน้อยที่สุดของตัวละครแท็บ + softtabstop
พื้นที่ที่การแข่งขัน ฉันยืนอยู่ข้างนั้น แต่ฉันคิดว่าฉันต้องอธิบายว่าฉันหมายถึงอะไร ฉันจะพยายามทำโดยใช้ตัวอย่างบางส่วน ในการทำตามให้เรียกใช้:set list
เพื่อให้คุณเห็นอักขระแท็บ
tabstop=4 softtabstop=2 shiftwidth=4 noexpandtab
ในโหมดแทรกการกดแป้นแท็บจะแทรกอักขระเว้นวรรค 2 ตัว กดแป้นแท็บเป็นครั้งที่สองและแทนที่จะแทรกอักขระเว้นวรรคอีกสองตัว (รวมเป็น 4 อักขระเว้นวรรค) จะแทนที่ช่องว่าง 2 ช่องก่อนหน้าด้วยอักขระแท็บเดียว Tabstop ถูกตั้งค่าเป็น 4 ดังนั้นอักขระแท็บเดียวจึงมีความกว้างเท่ากับ 4 ช่องว่าง
tabstop=4 softtabstop=6 shiftwidth=4 noexpandtab
ในโหมดแทรกการกดแป้นแท็บจะแทรกอักขระแท็บ 1 ตัวบวกช่องว่าง 2 ช่อง อักขระแท็บมีความกว้าง 4 ดังนั้นความกว้างทั้งหมดคือ 6 และสามารถทำได้โดยใช้อักขระ 3 ตัว การกดแป้นแท็บเป็นครั้งที่สองจะแทรกอักขระแท็บสองตัวและลบช่องว่างสองช่องที่แทรกไว้ก่อนหน้านี้ ความกว้างทั้งหมดคือ 12 และทำได้โดยใช้อักขระ 3 ตัว
ในทั้งสองตัวอย่างนี้ Vim จะแทรกจำนวนอักขระแท็บ + ช่องว่างขั้นต่ำที่เป็นไปได้ที่ตรงกับ softtabstop
ถ้าฉันกำลังทำงานกับแท็บขยายปิดอยู่ฉันไม่เห็นว่าตัวเองต้องการการควบคุมแบบละเอียดพิเศษที่สามารถทำได้โดยการตั้งค่า softtabstop เป็นค่าที่แตกต่างจาก tabstop ก็ยังจะเป็นประโยชน์สำหรับผมที่จะสามารถตั้งค่าtabstop
, softtabstop
และshiftwidth
ค่าที่เหมือนกันกับคำสั่งเดียว
expandtab ทำให้ softtabstop ซ้ำซ้อนหรือไม่
tabstop=4 softtabstop=0 shiftwidth=4 expandtab
ในโหมดแทรกการกดแป้นแท็บจะแทรกช่องว่าง 4 ช่อง การกดปุ่มลบจะเป็นการลบช่องว่างเดียวดังนั้นคุณต้องถอยหลัง 4 ครั้งหากคุณกดปุ่มแท็บโดยไม่ได้ตั้งใจ
tabstop=4 softtabstop=4 shiftwidth=4 expandtab
ในโหมดแทรกการกดแป้นแท็บจะแทรกช่องว่าง 4 ช่อง การกดแป้น backspace จะลบช่องว่าง 4 ช่อง
ถ้าฉันกำลังทำงานกับการexpandtab
เปิดสวิตช์ฉันต้องการให้ปุ่มลบเพื่อลบช่องว่างจำนวนเท่ากันกับที่ใส่แป้นแท็บ ดังนั้นในกรณีนี้ก็เช่นกันผมรู้สึกว่ามันจะเป็นประโยชน์เพื่อให้สามารถที่จะกำหนดค่าเดียวกันtabstop
, softtabstop
และshiftwidth
พร้อมกัน
ทางลัดจะยังคงมีประโยชน์
เป็นเรื่องดีที่ Vim ให้ความยืดหยุ่นมาก แต่ฉันไม่เห็นว่าตัวเองต้องการมัน ฉันแค่ต้องการให้สามารถเลือกความกว้างของแท็บและไม่ว่าจะเป็นแท็บ 'ยาก' (โดยใช้อักขระแท็บ) หรือแท็บ 'อ่อน' (ประกอบด้วยช่องว่าง) การสลับระหว่างแท็บแบบแข็งและแบบอ่อนทำได้ง่ายพอสมควร ( :set expandtab!
) แต่ฉันหวังว่าการตั้งค่าความกว้างของแท็บจะตรงไปตรงมากว่านี้โดยไม่ต้องใช้พารามิเตอร์ 3 ตัวที่แตกต่างกัน
ดังนั้นข้อเสนอแนะของฉันสำหรับบางสิ่งบางอย่าง:set stab=4
ก็ยังฟังดูดีสำหรับฉัน