समय-समय पर मुझे उस कोड के साथ काम करना होता है जो इंडेंटेशन के स्तर के लिए प्रेरित नहीं होता है, जो विम के लिए सेट किया गया है (प्रति स्तर 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
, फ़ाइल प्रकार (और प्लगइन) खरोज से संबंधित नियम लागू होंगे। Ie जांचें कि आपकाtabstop
मूल्य वास्तव में क्या है (set tabstop?
अन्य सेटिंग्स के लिए वही करेगा), संपादन करते समय, और उन मानों को अपनी पंक्ति को एक 'फ़ाइल' फ़ाइल में जोड़कर बदल दें, कुछ इस तरह: stackoverflow.com/a/159066/5000478