क्या विम में सबसे लंबी लाइन की लंबाई निर्धारित करने के लिए कोई आदेश है? और फ़ाइल की शुरुआत में उस लंबाई को जोड़ने के लिए?विम में सबसे लंबी लाइन?
उत्तर
जीएनयू के डब्ल्यूसी कमांड में एल-एमएक्स-लाइन-लम्बाई विकल्प है जो फ़ाइल की अधिकतम रेखा लंबाई को प्रिंट करता है। gnu man wc देखें। फ्रीब्सड डब्ल्यूसी में भी -एल है, लेकिन नहीं - मैक्स-लाइन-लम्बाई, freebsd man wc देखें।
इन्हें विम से कैसे उपयोग करें? आदेश:
:%!wc -L
wc -L के माध्यम से खुली फ़ाइल को फ़िल्टर करेगा और फ़ाइल की सामग्री को अधिकतम पंक्ति लंबाई बना देगा।
फ़ाइल सामग्री बनाए रखने के लिए और पहली पंक्ति पर अधिकतम लाइन की लंबाई रखूँ:
:%yank
:%!wc -L
:put
इसके बजाय WC का उपयोग कर के, Find length of longest line - awk bash वर्णन करता है कि सबसे लंबे समय तक लाइन की लंबाई को खोजने के लिए awk उपयोग करने के लिए।
ठीक है, अब शुद्ध विम समाधान के लिए। मैं स्क्रिप्टिंग के लिए कुछ नया हूँ, लेकिन यहां जाता है। निम्नानुसार 0Lसे फ़िल्टरLongestLineLength फ़ंक्शन पर आधारित है।
function! PrependLongestLineLength ()
let maxlength = 0
let linenumber = 1
while linenumber <= line("$")
exe ":".linenumber
let linelength = virtcol("$")
if maxlength < linelength
let maxlength = linelength
endif
let linenumber = linenumber+1
endwhile
exe ':0'
exe 'normal O'
exe 'normal 0C'.maxlength
endfunction
command PrependLongestLineLength call PrependLongestLineLength()
इस कोड को एक .vim फ़ाइल (या अपने .vimrc) में रखें और: फ़ाइल को स्रोत दें। फिर नए कमांड का उपयोग करें:
:PrependLongestLineLength
धन्यवाद, यह पता लगाना मजेदार था।
मैं कुछ ऐसा था! Awk '{प्रिंट (लंबाई ($ 0))}'
भले ही जोनाथन (प्री-विम -7) समाधान थोड़ा जटिल है, फिर भी वह 'virtcol()' का उपयोग करने में सही है, टैबलेट को '1' के रूप में नहीं गिना जाएगा। मुझे डर है कि wc, awk, perl, आदि के आधार पर अन्य सभी समाधान सही उत्तरों नहीं देंगे। –
आप विस्तार tabulations के साथ काम करते हैं, तो एक सरल
:0put=max(map(getline(1,'$'), 'len(v:val)'))
पर्याप्त है।
अन्यथा, मुझे लगता है कि हम निम्न (आप :h virtcol()
में पिछले उदाहरण के रूप में मिल सकता है कि, शून्य -1) की आवश्यकता होगी:
0put=max(map(range(1, line('$')), "virtcol([v:val, '$'])-1"))
मैं उस पंक्ति को "सरल" नहीं कहूंगा। हालांकि यह काम करता है, इसलिए कोई शिकायत नहीं है। – sleske
: WC एल%
बजाय
:%! wc -L
फ़ाइल की शुरुआत में उस लंबाई को जोड़ने के लिए:
: 0r! wc -L% | कट-डी '' -एफ 1
'%! Wc -L' का लाभ यह है कि यह सहेजे गए या अज्ञात बफर पर काम करता है। – wchargin
- 1. विम: लंबी लाइन
- 2. विम ऑटो लाइन-ब्रेक
- 3. विम - लाइन
- 4. विम खोज और प्रतिस्थापन में, नई लाइन "^ @"
- 5. एक विम फोल्ड लाइन
- 6. विम: वर्तमान लाइन
- 7. "grep: लाइन बहुत लंबी" त्रुटि संदेश
- 8. मैं सी में मनमाने ढंग से लंबी लाइन कैसे पढ़ूं?
- 9. Git लॉग - लाइन बहुत लंबी - कोई लाइन ब्रेक
- 10. विम कमांड लाइन रंग सेटिंग
- 11. विम कॉन्फ़िगर लाइन नंबर रंग
- 12. विम कमांड लाइन एस्केप टाइमआउट
- 13. इग्राफ: सबसे लंबी भूगर्भीय दूरी प्राप्त करें
- 14. विम: remap कुंजी लाइन नंबर
- 15. विम
- 16. PHP - फॉर्म मेल डालने! और लंबी तारों में लाइन ब्रेक
- 17. Django टेम्पलेट में लंबी लाइन कैसे विभाजित करें?
- 18. मुझे पायथन में सबसे लंबी स्ट्रिंग कैसे मिलती है?
- 19. पायथन में लंबी लाइनों के लिए मैं विम के लाइन ब्रेकिंग व्यवहार को कैसे ठीक कर सकता हूं?
- 20. सामान्य मोड में विम में एक लाइन को कैसे तोड़ें?
- 21. लंबी स्ट्रिंग
- 22. विम
- 23. विम: इंडेंट वर्तमान (खाली) लाइन और सम्मिलित
- 24. सूची में सबसे लंबी स्ट्रिंग चुनने के लिए पायथन का सबसे प्रभावी तरीका है?
- 25. विम
- 26. विम: सम्मिलित मोड में नई लाइन पूर्ववत करें?
- 27. विम: चयनित पाठ को कमांड लाइन में डालें?
- 28. विम में लाइन टिप्पणियों के अंत संरेखित करें?
- 29. विम
- 30. विम
यह विम में किया जाना चाहिए? मैं पूछता हूं क्योंकि यह करना एक विशिष्ट बात है, और यदि आप इसे कई फाइलों पर करने की ज़रूरत है तो यह संभवतः पाइथन/पर्ल/रूबी स्क्रिप्ट को एक साथ रखना मुश्किल होगा। – ZoogieZork
यह आपकी वास्तविक समस्या के गलत समाधान के लिए पूछने जैसा लगता है। आप वास्तव में क्या हासिल करने की कोशिश कर रहे हैं? – soulmerge
@ZoogieZork: कभी-कभी विम पर्याप्त है, और साथ ही सरल भी है, बाहरी उपकरणों का उपयोग करने की कोई आवश्यकता नहीं है। –