ประการแรกอย่าใช้Tabปุ่มใน Vim สำหรับการเยื้องด้วยตนเอง Vim มีคู่ของคำสั่งในโหมดแทรกสำหรับการเพิ่มหรือลดจำนวนการเยื้องด้วยตนเอง คำสั่งเหล่านี้คือและCtrl-T Ctrl-Dคำสั่งเหล่านี้สังเกตค่าของtabstop
, shiftwidth
และexpandtab
และรักษาส่วนผสมที่ถูกต้องของพื้นที่และแท็บ (จำนวนสูงสุดของแท็บตามด้วยหมายเลขที่จำเป็นใด ๆ ของช่องว่าง)
ประการที่สองคีย์การเยื้องแบบแมนนวลเหล่านี้ไม่จำเป็นต้องใช้มากนักถ้าคุณใช้การเยื้องอัตโนมัติ
หากCtrl-Tแทนที่จะTabรบกวนคุณคุณสามารถทำการแมปใหม่ได้:
:imap <Tab> ^T
นอกจากนี้คุณยังสามารถทำการแมปShift-Tabเพื่อCtrl-Ddeindent:
:imap <S-Tab> ^D
ที่นี่ ^ T และ ^ D เป็นอักขระควบคุมตามตัวอักษรที่สามารถแทรกCtrl-VCtrl-Tได้
Ctrl-VTabกับการทำแผนที่ในสถานที่นี้คุณยังสามารถพิมพ์แท็บตัวอักษรลงในบัฟเฟอร์ใช้ โปรดทราบว่าหากคุณทำเช่นนี้แม้ว่า:set expandtab
จะเปิดอยู่คุณจะได้รับอักขระแท็บที่ไม่ขยาย
มีผลคล้ายกับ <Tab>
แผนที่ทำได้:set smarttab
เช่นกันซึ่งทำให้ Backspace ที่ด้านหน้าของบรรทัดมีพฤติกรรมที่ชาญฉลาด
ในsmarttab
โหมดเมื่อTabไม่ใช้ที่จุดเริ่มต้นของบรรทัดจะไม่มีความหมายพิเศษ มันแตกต่างจากแผนที่ด้านบนของฉันTabไปCtrl-TเพราะการCtrl-Tใช้ที่ใดก็ได้ในบรรทัด (ในโหมดแทรก) จะเพิ่มการเยื้องของบรรทัดนั้น
การจับคู่ที่มีประโยชน์อื่น ๆ อาจเป็น:
:map <Tab> >
:map <S-Tab> <
ตอนนี้เราสามารถทำสิ่งต่าง ๆ เช่นเลือกบางบรรทัดและกด Tabเพื่อเยื้องพวกเขา หรือกดTabสองครั้งบนบรรทัด (ในโหมดคำสั่ง) เพื่อเพิ่มการเยื้อง
ถ้าคุณใช้คำสั่งการจัดการเยื้องเหมาะสมแล้วทุกอย่างจะถูกควบคุมโดยสามพารามิเตอร์: shiftwidth
,tabstop
expandtab
และ
shiftwidth
พารามิเตอร์ควบคุมขนาดเยื้องของคุณ หากคุณต้องการเยื้องช่องว่างสี่ช่องให้ใช้:set shiftwidth=4
:set sw=4
หรือย่อ
ถ้าเพียงแค่นี้เสร็จแล้วเยื้องจะถูกสร้างขึ้นโดยใช้การผสมผสานของช่องว่างและแท็บเพราะ noexpandtab
เป็นค่าเริ่มต้น :set expandtab
ใช้ ซึ่งทำให้อักขระแท็บที่คุณพิมพ์ลงในบัฟเฟอร์เพื่อขยายเข้าไปในช่องว่างและสำหรับการเยื้องที่จัดการโดย Vim ให้ใช้ช่องว่างเท่านั้น
เมื่อexpandtab
ใดที่เปิดใช้งานและหากคุณจัดการการเยื้องของคุณผ่านกลไก Vim ที่เหมาะสมทั้งหมดค่าของการtabstop
กลายเป็นสิ่งที่ไม่เกี่ยวข้อง มันจะควบคุมว่าแท็บจะปรากฏอย่างไรหากเกิดขึ้นกับไฟล์ หากคุณมีset tabstop=8 expandtab
แท็บฮาร์ดลงในไฟล์โดยใช้Ctrl-VTabแล้วมันจะจัดตำแหน่งแท็บตามคอลัมน์ 8 คอลัมน์ถัดไปตามปกติ