บางครั้งฉันต้องทำงานกับโค้ดที่ไม่ได้เยื้องระดับของการเยื้องฉันได้ตั้งค่ากลุ่ม (4 ช่องว่างต่อระดับ) โดยปกติหลังจากคัดลอก / วางบางสิ่งบางอย่างในไฟล์ ฉันมักจะทำอะไรกับและ<< >>ปัญหาคือพวกเขาไม่ข้ามไปยังระดับการเยื้องถัดไปพวกเขาเพียงแค่เพิ่มหรือลบ 4 ช่องว่าง
ถ้าฉันมีรหัสเช่นนี้
if condition:
do this
do that
การทำ>>ต่อไปdo thatจะส่งผลให้
if condition:
do this
do that
ฉันต้องการที่จะไปที่นี้
if condition:
do this
do that
นอกเหนือจากการจับคู่การเยื้องของบรรทัดข้างต้นอย่างง่าย ๆ แล้วฉันต้องการให้มันข้ามไปยังระดับถัดไปของการเยื้องไม่เพิ่ม 4 ช่องว่าง
นี่คือสิ่งที่ฉันมีใน. vimrc ของฉันเกี่ยวกับการเยื้อง
:set tabstop=4 shiftwidth=4 expandtab
>>และ<<เพิ่มและลบการเยื้องซึ่งไม่ใช่สิ่งที่คุณต้องการตามลำดับ สิ่งที่คุณต้องการคือ "การจัดรูปแบบ" ==ซึ่งจะทำด้วย
:nnoremap >> ^i<tab><esc>หากคุณต้องการพฤติกรรมแท็บใน>>
==จะข้ามไปที่ระดับของบรรทัดด้านบน ในขณะที่สิ่งที่ดีที่จะรู้ว่ามันจะไม่ทำงานในทุกกรณีที่ฉันสนใจนอกเหนือจากคำถามสิ่งที่ฉันต้องการมีไว้สำหรับ>>และ<<เพื่อเยื้อง / อุทิศถึงความหลากหลายของการเปลี่ยนแปลงจากชายแดนในทิศทางนั้น .
==การใช้ประโยชน์อย่างใดอย่างหนึ่งequalexprหรือequalprgฟอร์แมตเส้นที่กำหนด
filetype plugin indent onในของคุณ.vimrc, filetype (และปลั๊กอิน) กฎระเบียบที่เกี่ยวข้องกับการเยื้องจะนำไปใช้ เช่นตรวจสอบสิ่งที่คุณtabstopคุ้มค่าจริงคือ (set tabstop?จะทำอย่างไรเหมือนกันสำหรับการตั้งค่าอื่น ๆ ) เมื่อมีการแก้ไขและเปลี่ยนค่าเหล่านั้นโดยการเพิ่มสายของคุณไปยัง 'หลัง' ไฟล์, สิ่งที่ชอบ: stackoverflow.com/a/159066/5000478