ฉันจะเยื้องบรรทัดใหม่โดยอัตโนมัติได้อย่างไร


15

ฉันทำงานในโครงการที่มีระดับการเยื้องต่างกัน ในหลายโครงการเหล่านี้เนื่องจากวิธีการจัดโครงสร้างไฟล์โดยทั่วไปบรรทัดส่วนใหญ่จะถูกเยื้องอย่างน้อยสองระดับ (เช่นวิธีการในไฟล์ Java)

นี่หมายความว่าการสร้างบรรทัดใหม่เมื่ออยู่บนบรรทัด

public void something () {

จะนำเคอร์เซอร์ของฉันไปที่บรรทัดถัดไปเยื้องโดยอัตโนมัติเช่น

public void something () {
    [cursor]

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

คำตอบ:


12

สิ่งนี้สามารถทำได้โดยใช้การรวมกันของautoindentตัวเลือกและfiletypeปลั๊กอิน

autoindentตัวเลือกที่จะคัดลอกเยื้องปัจจุบันของคุณเมื่อมีการสร้างบรรทัดใหม่ ดังนั้นหากระดับการเยื้องปัจจุบันของคุณคือ 4 เมื่อคุณเริ่มบรรทัดใหม่เคอร์เซอร์จะถูกย้ายไปที่ระดับการเยื้องเดียวกันในบรรทัดถัดไป

ใน~/.vimrcไฟล์ของคุณคุณจะใส่

set autoindent

คุณสามารถใช้filetypeปลั๊กอินเพื่อกำหนดระดับการเยื้องถัดไปโดยอัตโนมัติตามชนิดของไฟล์

คุณสามารถเปิดใช้งานสิ่งนี้ได้ทันทีด้วย

:filetype indent on

หรือใน~/.vimrcไฟล์ของคุณคุณจะใส่

filetype plugin indent on

ซึ่งจะกำหนดการเยื้องโดยอัตโนมัติตามประเภทไฟล์


6

ใช้:set cindent( :set cinสั้น) หรือ:set smartindent( :set siสั้น) หากบรรทัดของคุณลงท้ายด้วยวงเล็บปีกกาเปิดและคุณกดEnterบรรทัดต่อไปนี้จะถูกเยื้องโดยอัตโนมัติอีกหนึ่งระดับ (นี่จะดีกว่า:set autoindentซึ่งจะเยื้องบรรทัดถัดไปในระดับเดียวกัน ) cindentนั้นเหมาะสำหรับภาษาที่เหมือน C smartindentมากขึ้นในขณะที่มีความหลากหลายมากขึ้นสำหรับการใช้งานกับภาษาการเขียนโปรแกรมอื่น ๆ

จำนวนและประเภทของการเยื้องถูกควบคุมโดย:set shiftwidth=…, และ:set tabstop=…:set expandtab


'smartindent'เลิกใช้แล้วดังนั้นจึงไม่ใช่ตัวเลือกที่ดีที่สุด มันถูกแทนที่ด้วย'cindent'และ'cinoptions'สำหรับภาษาที่เหมือน C โดยทั่วไปแล้วการเยื้องประเภทของไฟล์เป็นวิธีที่ควร'autoindent'ทำ
jamessan

@jamessan smartindentไม่ได้รับการคัดค้าน แต่cindentมีค่าที่ควรทราบ ฉันได้อัพเดตคำตอบแล้ว (ขอบคุณ!)
200_success

ฉันยังอยากแนะนำให้คุณการดูที่ editorconfig.org แน่นอนมีปลั๊กอินสำหรับเสียงเรียกเข้า (และบรรณาธิการอื่น ๆ อีกมากมาย) และเป็นวิธีที่ดีในการรักษาค่าเริ่มต้นของตัวแก้ไขใน VCS ของคุณ
Cyber ​​Oliveira

0

ที่ด้านล่างของไฟล์ฉันใช้:

# vim: ts=2 sw=2 sts=2 sr noet st ai si

ตัวอย่างเช่นDockerfile:

FROM centos-7
RUN ...
CMD ...

# vim: ts=2 sw=2 sts=2 sr noet st ai si

หากคุณต้องการให้การเยื้องเท่านั้นใช้ # vim: st ai si

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