जवाबों:
जब तक मैं कुछ याद नहीं कर रहा हूँ, विम पहले से ही ऐसा करता है। यदि मैं माउस का उपयोग करके या vकर्सर को टाइप करके और स्थानांतरित करके कुछ पाठ को हाइलाइट करता हूं, तो मैं स्क्रीन के नीचे देखता हूं
- दृश्य - १२
जहां दाईं ओर संख्या हाइलाइट किए गए वर्णों की संख्या है। यह केवल तभी काम करता है जब चयन एकल पंक्ति पर हो, अन्यथा यह पंक्ति गणना दिखाता है।
आप नेत्रहीन रूप से पाठ और प्रकार के कुछ क्षेत्र का चयन कर सकते हैं g Ctrl-Gजो चयनित लाइनों, शब्दों और बाइट्स की संख्या को दिखाएगा।
set showcmdअपने vimrcको जोड़ें ।
दृश्यमान पाठ के लिए वर्ण गणना और लाइन काउंट प्रदर्शित करने के बीच विम फ्लिप्स करता है कि आप क्या और कैसे कल्पना करते हैं (वीएपी 7.4 सेप्ट 2015 को पैच के आधार पर)
V will display line count
v$ will display character count
यदि आप एक से अधिक लाइन की कल्पना करते हैं तो यह केवल लाइन काउंट प्रदर्शित करता है
g-CTRL-G displays 'byte count' which seems to be 'char count' +1 per line
vअगर चरित्र चयन से कई लाइनों तक फैला है, तो चरित्र-गिनती से लाइन-गणना तक सामान्य स्विच। हालांकि g CTRL-Gकाम अच्छी तरह से करता है।
:function VisualLength()
: exe 'normal "xy'
: echo "Visual: " . strlen(@x) . "\n"
: exe 'normal gv'
:endfunction
:map ,q "xy:call VisualLength()<CR>
सबसे पहले आप वर्तमान चयन (बफ़र x में) जमा करते हैं
फिर आप उस बफ़र की लंबाई प्रदर्शित करते हैं: strlen(@x)
( - विज़ुअल - स्टेटस लाइन में प्रदर्शित यह अस्पष्ट करता है, इसलिए हमें एक नई पंक्ति जोड़ना होगा)
पिछली दृश्य श्रेणी को हाइलाइट करें: gv
यह इस बात पर ध्यान नहीं देता है कि दृश्य मोड लाइन-, वर्ण- या ब्लॉक-मोड है, लेकिन यह अधिकांश मामलों के लिए पर्याप्त है।
मैं आपके स्क्रीनशॉट से देख रहा हूं कि आप विंडोज में चल रहे हैं, इसलिए यह उत्तर आपकी उतनी मदद नहीं कर सकता है। लेकिन दूसरों के लिए ...
Vim का एक अंडर-यूज्ड (IMO) फीचर बाहरी कमांड्स को हेवी लिफ्टिंग करने देता है।
इस स्थिति के लिए, यदि आप UNIX जैसी प्रणाली पर हैं, तो आप ऐसा करने के लिए wcकमांड का उपयोग कर सकते हैं ।
सबसे आसान तरीका यह है कि चयनित पाठ को कमांड के आउटपुट के साथ टाइप करके प्रतिस्थापित किया जाए (पाठ चयनित के साथ):
:!wc
(उसके बाद एन्टर प्रेस करें)।
यह आपकी कमांड लाइन में दिखाई देगा:
'<,'>!wc
आपके द्वारा जानकारी पढ़ने के बाद, आप उस स्थान पर वापस जाने के uलिए पूर्ववत कर सकते हैं जहाँ आपने शुरू किया था।
नोट: यह प्रसंस्करण पूरी लाइनों पर ही किया जाता है । यदि आप आंशिक रेखाएँ चाहते हैं, तो मुझे लगता है कि @ garyjohn की g_CTRL-Gआपकी सबसे अच्छी शर्त है।
आप चलने के बजाय पूर्ववत करने की आवश्यकता से बच सकते हैं:
:w !wc
यह कमांड के मानक इनपुट के लिए चयनित लाइनों को "लिखता है", और कमांड का आउटपुट मूल अछूता छोड़कर एक नए अस्थायी बफर में प्रदर्शित किया जाएगा। :help :write_cअधिक जानकारी के लिए देखें ।
नोट: मुझे इसकी :write_cजानकारी मिली: /programming/1237780/vim-execute-shell-command-without-filtering
अब, आम तौर पर:
यह उदाहरण wcबहुत सरल है, लेकिन आप सोच सकते हैं कि यह एक शक्तिशाली दृष्टिकोण कैसे है। UNIX में पहले से ही बहुत सारे टेक्स्ट प्रोसेसिंग कमांड उपलब्ध हैं, और आप Vimcript (yech) को छूने की आवश्यकता के बिना उन्हें Vim के अंदर काफी आसानी से उपयोग कर सकते हैं।
इसके अलावा, कोई भी कमांडलाइन प्रोग्राम जो आप लिखते हैं कि स्टडिन / स्टडआउट से संबंधित डील अब न केवल आपके टर्मिनल पर, बल्कि विम के अंदर भी आपको फायदा पहुंचा सकती है।
मैं अपने आप को, उदाहरण के लिए, चल रहा हूँ tidyऔर json-formatअंदर से मैं फ़ाइलों को और अधिक पठनीय देख रहा हूँ बनाने के लिए।
आप विंडोज पर भी ऐसा ही कर सकते हैं, लेकिन विंडोज में अंतर्निहित कमांड का इतना समृद्ध सेट नहीं है। आप उन लाभों को प्राप्त करने के लिए हमेशा GNUWin32 या इससे मिलते-जुलते स्थापित कर सकते हैं ।
विम्सस्क्रिप्ट के भीतर प्रोग्रामेटिक तरीके के लिए, यह मेरे लिए काम करता है जब चयन एक पंक्ति के भीतर सीमित होता है:
let amount = virtcol("'>") - virtcol("'<")
( virtcol(..)इसके बजाय col(..), जैसे कि यह :set ve=allसक्रिय होने पर अपेक्षित रूप से काम करता है।)