: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
หากคุณต้องการลองใช้ฟังก์ชั่นนี้ให้ทำดังต่อไปนี้: คัดลอกฟังก์ชั่นนี้ในเบราว์เซอร์ของคุณและเรียกใช้คำสั่ง:@+
นี้เป็นกลุ่มซึ่งจะช่วยให้คุณสามารถใช้งานได้:call SumVis()
ตามปกติ
:@+ ......... loads `+` register making the function avaiable
มันต้องการให้คุณทำการเลือกบล็อกภาพด้วยctrl+ v, ยกเลิกการเลือกและสุดท้ายเรียกใช้ฟังก์ชัน หรือคุณสามารถใช้แผนที่ที่แนะนำซึ่งจะลบการเลือกก่อนที่จะคำนวณ