บางครั้งฉันต้องทำงานกับโค้ดที่ไม่ได้เยื้องระดับของการเยื้องฉันได้ตั้งค่ากลุ่ม (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