>> के साथ अगले इंडेंटेशन स्तर के लिए संकेत


9

समय-समय पर मुझे उस कोड के साथ काम करना होता है जो इंडेंटेशन के स्तर के लिए प्रेरित नहीं होता है, जो विम के लिए सेट किया गया है (प्रति स्तर 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

आप भी है, तो filetype plugin indent onअपने में .vimrc, फ़ाइल प्रकार (और प्लगइन) खरोज से संबंधित नियम लागू होंगे। Ie जांचें कि आपका tabstopमूल्य वास्तव में क्या है ( set tabstop?अन्य सेटिंग्स के लिए वही करेगा), संपादन करते समय, और उन मानों को अपनी पंक्ति को एक 'फ़ाइल' फ़ाइल में जोड़कर बदल दें, कुछ इस तरह: stackoverflow.com/a/159066/5000478
VanLaser

3
>>और <<क्रमशः इंडेंट जोड़ें और निकालें जो आप नहीं चाहते हैं। आप जो चाहते हैं, वह "स्वरूपण" है, जो कि किया जाता है ==
रोमेल

:nnoremap >> ^i<tab><esc>यदि आप वास्तव में टैब व्यवहार चाहते हैं तो मानचित्र भी बना सकते हैं>>
वोल्फि

@romainl ==ऊपर की लाइन के स्तर तक जाएगा। हालांकि यह जानने के लिए एक अच्छी बात है कि यह उन सभी मामलों में काम नहीं करेगा जिनकी मुझे दिलचस्पी है। प्रश्न के अतिरिक्त, मैं जो चाहता हूं, वह है >>और <<उस दिशा में सीमा से अगले कई बदलावों के लिए प्रेरित / समर्पण करना ।
डुमित्रु

2
नहीं, दी गई लाइनों को सुधारने के लिए या ==तो उपयोग करता है । equalexprequalprg
रोमेनिल

जवाबों:


12

जब आप कोई एक आदेश का उपयोग {count}>>, {count}<<, >{motion}या <{motion}कुछ पंक्तियाँ जो पहले से ही इंडेंट किया गया है पर, है, और आप अपने नए खरोज स्तर अपने की एक बहु होना चाहता हूँ 'shiftwidth'विकल्प मान, आप सक्षम कर सकते हैं 'shiftround'विकल्प, और अपने में इस लाइन को जोड़ने vimrc:

set shiftround

2

यदि आप हमेशा >>अगले टैबस्टॉप के लिए इंडेंट करना चाहते हैं और <<पिछले टैबस्टॉप को हटाना चाहते हैं, तो आप उन्हें इस तरह से रिबंड कर सकते हैं:

:nnoremap << ^i<BS><esc>
:nnoremap >> ^i<tab><esc>

यह कर्सर को ले जाएगा, लेकिन आप इसे वापस ले जाने के लिए कुछ मार्क ट्रिकरी कर सकते हैं। ^एक m'निशान नहीं छोड़ता है , लेकिन आप एक मैन्युअल रूप से बंधन के अंदर छोड़ सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.