ขนาดแท็บเป็นกลุ่มเมื่อมีการกดปุ่ม <Tab> และเมื่อมีการป้อนอัตโนมัติ


22

ฉันตัดสินใจเปลี่ยนขนาดแท็บจาก 4 เป็น 2 เพราะเหตุใด ใครก็ตามที่ต้องการดูรหัสสามารถใช้ค่ากำหนดของพวกเขาได้อย่างแน่นอน

อย่างไรก็ตามคำถาม

ถ้าฉันกดปุ่มแท็บมันจะแทรก 2 แต่กลุ่มอัตโนมัติของ Vim ยังคงใส่ 4 ฉันจะเปลี่ยนอะไรเพื่อให้เป็น 2

อีกคำถามที่ไม่เกี่ยวข้อง: รูปแบบการเยื้องใดเหมาะที่สุดสำหรับ C และภาษาที่คล้ายกัน ฉันใช้ 1TBS แต่มีให้เลือกมากมาย พวกเขาเป็นมืออาชีพมากขึ้นหรือต้องการ?

คำตอบ:


17

ลองตั้งค่า ' shiftwidth' เป็นค่าเดียวกับ ' tabstop' ยังดีกว่าถ้าคุณใช้ Vim เวอร์ชันล่าสุดให้ตั้งค่า ' shiftwidth' เป็น 0 และจะใช้ค่าเริ่มต้นเป็น ' tabstop' ทุกอย่างที่ตั้งไว้


นี่คือสิ่งที่ฉันกำลังมองหา กำลังโต้วาทีระหว่างการตั้งค่าtsเป็น 2, 4 หรือ 8
user341814

ฉันใช้ 8 ไฟล์ที่ไม่ใช่รหัสและทั้ง 2 หรือ 4 ขึ้นอยู่กับภาษาและจำนวนการทำรังมีแนวโน้มที่จะเกิดขึ้น
Heptite

ฉันทำ C เท่านั้นในขณะนี้
user341814

33

ตัวเลือกการเยื้องเป็นกลุ่ม

Vim ใช้การตั้งค่า 3 ส่วนสำหรับขนาดของการเยื้อง:

  • tabstop, ts: เมื่อ Vim พบการจัดระเบียบในไฟล์ที่คุณกำลังเปิดมันจะแสดงแท็บเป็นช่องว่าง {ts} (ดูวิธีใช้ tabstopหรือพิมพ์:help tabstopVim)
  • softtabstop, sts: เมื่อคุณกำลังแก้ไขไฟล์และกดปุ่ม tab, Vim ใช้การตั้งค่านี้เพื่อกำหนดความกว้างของ tabulation ที่แทรก (ดูวิธีใช้softtabstopหรือพิมพ์:help softtabstopใน Vim)
  • shiftwidth, sw: จำนวนของช่องว่างที่ Vim ใช้เมื่อเยื้อง, โดยใช้คำสั่งautoindent หรือคำสั่งปกติ>>, <<Heptite สังเกตเห็นว่านี่คือสิ่งที่คุณกำลังมองหาในกรณีนี้ และรุ่นล่าสุดของกลุ่มแน่นอนไม่ได้ช่วยให้คุณสามารถที่จะกำหนดตัวเลือกนี้จากนั้นก็จะใช้ค่าที่กำหนดโดยshiftwidth tabstopค่อนข้างมีประโยชน์ (ดูความช่วยเหลือของแบนด์วิดท์ )

ตัวอย่าง

ตัวอย่างเช่นหากคุณใช้การตั้งค่าต่อไปนี้:

set sts=4
set ts=2
set sw=8

สิ่งเหล่านี้จะสร้างพฤติกรรมดังต่อไปนี้:

  1. การแทรกตารางในไฟล์จะสร้างความกว้างของการเว้นวรรค 4
  2. เมื่อคุณtabstopตั้งค่าเป็น 2 นี่จะเท่ากับ 2 แท็บ การตรวจสอบนี้ค่อนข้างง่ายเพียงแค่ใช้listและlistcharsตัวเลือกเพื่อแสดงตาราง
  3. หากคุณเยื้องบรรทัดโดยใช้>>การเยื้องจะเป็นช่องว่างที่กว้าง 8 (ดังนั้นจึงเท่ากับ 4 แท็บเล็ตตามtabstopค่าเช่นเดียวกับด้านบน)

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

คำแนะนำการเยื้องเป็นกลุ่ม (จากเอกสาร Vim)

จากtabstopความช่วยเหลือ (เป็น:help tabstopกลุ่ม):

There are four main ways to use tabs in Vim:
  1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
    (or 3 or whatever you prefer) and use 'noexpandtab'.  Then Vim
    will use a mix of tabs and spaces, but typing <Tab> and <BS> will
    behave like a tab appears every 4 (or 3) characters.
  2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
    'expandtab'.  This way you will always insert spaces.  The
    formatting will never be messed up when 'tabstop' is changed.
  3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
    |modeline| to set these values when editing the file again.  Only
    works when using Vim to edit the file.
  4. Always set 'tabstop' and 'shiftwidth' to the same value, and
    'noexpandtab'.  This should then work (for initial indents only)
    for any tabstop setting that people use.  It might be nice to have
    tabs after the first non-blank inserted as spaces if you do this
    though.  Otherwise aligned comments will be wrong when 'tabstop' is
    changed.

โดยส่วนตัวฉันใช้โซลูชันที่สองเป็นหลักโดยมีแท็บเล็ตกว้าง 2 ช่องว่าง

set ts=2
set sts=2
set et     "expand tabs to spaces

-1

จากhttp://vim.wikia.com/wiki/Indenting_source_codeคำสั่ง 'filetype indent on on' จะทำให้โปรแกรมใช้สคริปต์การเยื้องเฉพาะชนิดไฟล์ที่อยู่ในไดเรกทอรีย่อยของการติดตั้ง Vim หน้านั้นยังระบุว่า 'cindent' ถูกใช้โดยอัตโนมัติในไฟล์ C และ C ++ และคุณไม่จำเป็นต้องใช้คำสั่งนั้นด้วยตนเอง

ฉันไม่คุ้นเคยกับ Vim เพราะฉันใช้เพื่อแก้ไขข้อความพื้นฐานเป็นครั้งคราวเท่านั้น แต่ฉันจะลองใช้คำสั่ง 'cindent' ด้วยตนเองเพื่อใช้ขนาด autoindent เริ่มต้นของ Vim สำหรับโค้ดนั้น หากไม่ได้ผลคุณสามารถลอง 'ปลั๊กอินประเภทไฟล์เยื้องบน' และแก้ไขสคริปต์ด้วยตัวคุณเองเพื่อรับการเยื้องที่ต้องการ

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