जब मैं किसी अन्य फ़ाइल से कोड कॉपी करता हूं, तो फॉर्मेटिंग गड़बड़ हो जाती है, जैसे:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
मैं इस कोड को vim में कैसे कर सकता हूं?
जब मैं किसी अन्य फ़ाइल से कोड कॉपी करता हूं, तो फॉर्मेटिंग गड़बड़ हो जाती है, जैसे:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
मैं इस कोड को vim में कैसे कर सकता हूं?
जवाबों:
निम्नलिखित कीस्ट्रोक की कोशिश करें:
gg=G
स्पष्टीकरण: gg
फ़ाइल के शीर्ष पर जाता है, =
इंडेंटेशन को ठीक करने के लिए एक कमांड है और G
इसे फ़ाइल के अंत में ऑपरेशन करने के लिए कहता है।
मुझे कार्यक्रम कलात्मक शैली का उपयोग करना पसंद है। उनकी वेबसाइट के अनुसार :
कलात्मक शैली सी, सी ++, सी # और जावा प्रोग्रामिंग भाषाओं के लिए एक स्रोत कोड इंडेंटर, फॉर्मेटर और ब्यूटिफायर है।
यह विंडो, लिनक्स और मैक में चलता है। यह इंडेंट जैसे कार्य करने के रिक्त स्थान या इसके विपरीत के साथ टैब की जगह होगा, संचालन के साथ स्पेस डाल लेकिन आप की तरह (परिवर्तित if(x<2)
करता है, तो करने के लिए ( x<2 )
करता है, तो है कि कैसे आप इसे की तरह), समारोह निर्धारण के रूप में एक ही लाइन पर ब्रेसिज़ डाल, या उन्हें में जाने नीचे पंक्ति, आदि सभी विकल्प कमांड लाइन मापदंडों द्वारा नियंत्रित होते हैं।
इसे vim में उपयोग करने के लिए, बस इसके लिए formatprg विकल्प सेट करें, और उसके बाद gq कमांड का उपयोग करें। इसलिए, उदाहरण के लिए, मैं अपने .vimrc में है:
autocmd BufNewFile,BufRead *.cpp set formatprg=astyle\ -T4pb
ताकि जब भी मैं एक .cpp फ़ाइल खोलूं, तो मुझे पसंद किए जाने वाले विकल्पों के साथ स्वरूपण सेट हो जाए। फिर, मैं फ़ाइल के शीर्ष पर जाने के लिए gg टाइप कर सकता हूं, और gqGअपने मानकों के अनुसार पूरी फ़ाइल को प्रारूपित कर सकता हूं। अगर मुझे केवल एक फ़ंक्शन को पुन: स्वरूपित करने की आवश्यकता है, तो मैं फ़ंक्शन के शीर्ष पर जा सकता हूं, फिर टाइप करें gq][और यह केवल उस फ़ंक्शन को पुन: स्वरूपित करेगा।
मेरे पास एस्टल के लिए जो विकल्प -T4pb
हैं, वे सिर्फ मेरी प्राथमिकताएं हैं। आप उनके डॉक्स के माध्यम से देख सकते हैं , और उन विकल्पों को बदल सकते हैं जिनके पास आपको कोड पसंद है।
यहाँ एक डेमो है। अस्टाइल से पहले:
int main(){if(x<2){x=3;}}
float test()
{
if(x<2)
x=3;
}
अस्टाइल के बाद (gggqG):
int main()
{
if (x < 2)
{
x = 3;
}
}
float test()
{
if (x < 2)
x = 3;
}
उम्मीद है की वो मदद करदे।
प्लगइन vim-autoformat आपको एक कमांड के साथ अपने बफर (या बफर चयन) को प्रारूपित करने देता है: https://github.com/Chiel92/vim-autoformat । यह उस के लिए बाहरी प्रारूप कार्यक्रमों का उपयोग करता है, जो विम की इंडेंटेशन कार्यक्षमता में गिरावट के साथ होता है।
मुझे लगता है कि clang-format
अच्छी तरह से काम करता है।
क्लैंग डॉक्यूमेंटेशन में कुछ उदाहरण कीबाइंडिंग हैं
मैं equalprg
बाध्यकारी का उपयोग करना पसंद करता हूं । यह आपको या अन्य इंडेंट विकल्पों के clang-format
साथ आह्वान करने की अनुमति देता है ।G=gg
=
बस अपने .vimrc फ़ाइल में निम्नलिखित डालें:
autocmd FileType c,cpp setlocal equalprg=clang-format
sudo apt install clang-format
जैसा indent
कि मैंने ऊपर उल्लेख किया है, लेकिन सबसे अधिक बार मैं केवल उस फ़ाइल के एक छोटे से भाग को प्रारूपित करना चाहता हूं जो मैं काम कर रहा हूं। चूंकि indent
स्टड से कोड लिया जा सकता है, यह वास्तव में सरल है:
:!indent
।astyle
स्टड भी लेता है, इसलिए आप उसी चाल का उपयोग कर सकते हैं।
मैं जोड़ना चाहता था, ताकि इसे :set paste
चिपकाने से पहले आप पहले टाइप कर सकें । चिपकाने के बाद, आप :set nopaste
फिर से काम करने के लिए js-beautify और indenting जैसी चीजों के लिए टाइप कर सकते हैं ।
:set paste!
, जो इसे सेट करने के बजाय पेस्ट मूल्य को टॉगल करता है। यह बंद करने के लिए आसान बनाता है क्योंकि आप बस कुछ आदेशों को वापस स्क्रॉल कर सकते हैं और एंटर दबा सकते हैं।