:r!awk '{sum+=$6} END {print "Total: "sum}' %
स्पष्टीकरण:
:r ........... read (put result in this file)
! ............ external command
awk .......... external tool
{sum+=$6} .... sixth field (awk considers spaces as field separator)
END .......... at the end
{print "Total: "sum} --> string "Total: " plus your result
% ............ current file
मैं यहाँ काम करने वाले एक फंक्शन की कोशिश कर रहा हूँ:
" This function requires you select the numbers
fun! SumVis()
try
let l:a_save = @a
norm! gv"ay
let @a = substitute(@a,'[^0-9. ]','+','g')
exec "norm! '>o"
exec "norm! iTotal \<c-r>=\<c-r>a\<cr>"
finally
let @a = l:a_save
endtry
endfun
vnoremap <leader>s :<C-u>call SumVis()<cr>
ऊपर दिए गए नक्शे का उपयोग करते हुए, आपको लोडिन के बाद सभी कार्य करना है फ़ंक्शन का चयन करना है जो संख्या आप योग करना चाहते हैं और <leader>s
चयनित क्षेत्र को योग करने के लिए उपयोग करना चाहते हैं।
समारोह स्पष्टीकरण:
यह try/finally/endtry
त्रुटियों को पकड़ने के लिए एक्सट्रक्चर का उपयोग करता है ।
let l:a_save = @a .......... if whe have register 'a' we save it temporarelly
norm! gv"a ................................... gv --> reselects and captures selection to 'register a'
let @a = substitute(@a,'[^0-9. ]','+','g') .... removes all but numbers, dots and spaces from 'register a' and puts '+' among the numbers
exec "norm! '>o" ............................. opens new line bellow selection. see :h '>
exec "norm! iTotal: \<c-r>=\<c-r>a\<cr>" ...... insert "Total: " plus 'expression register result
let @a = l:a_save ............................. restores original 'a' register content
यदि आप इस फ़ंक्शन को आज़माना चाहते हैं, तो निम्न कार्य करें: अपने ब्राउज़र में इस फ़ंक्शन को कॉपी करें और इस कमांड को vim पर चलाएं इससे :@+
आप :call SumVis()
सामान्य रूप से उपयोग कर पाएंगे ।
:@+ ......... loads `+` register making the function avaiable
यह आपको ctrl+ के साथ एक दृश्य ब्लॉक चयन करने की आवश्यकता है v, अचयनित करें और अंत में फ़ंक्शन को कॉल करें। या आप सुझाए गए नक्शे का उपयोग कर सकते हैं जो गणना से पहले चयन को स्वयं हटा देता है।