: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해제하고 마지막으로 함수를 호출해야합니다. 또는 계산하기 전에 선택 항목을 자체적으로 제거하는 제안 된 맵을 사용할 수 있습니다.