VimからRubyを呼び出して電卓代わりにする

Vim上で計算をしたいけど
電卓を立ち上げるのが面倒くさい。

4+2=

というテキストがあったら、数式とみなして

4+2=6

となってほしい。

Rubyスクリプトを書いてみました。

#!/usr/bin/ruby -Ks

body = $stdin.read
body.each_line{|line|
  line.chomp!
  line.gsub!(/=(.*)/,"")
  if line.length > 0
    print "#{line}="
    ans = eval line
	if line.match(/0x/)
      printf "0x%x",ans
	elsif line.match(/0b/)
      printf "0b%b",ans
	else
	  print "#{ans}"
	end
  end
  print "\n"
}

VimのVisualモードで

4+2=
4-2=
4*2=
4%2=
0x48+0x72=

を選択して

:'<,'>!ruby c:\tools\vim74-kaoriya-win64\calc.rb 

をすると

4+2=6
4-2=2
4*2=8
4%2=0
0x48+0x72=0xba

となり、電卓要らず。
Vim単体でも: C-r = 4 + 2 で計算できるけど
これだと複数の計算も一気にできて便利。

しくみ。

Visualモードで選択した行が、calc.rbの
標準入力に入るのでevalして結果を標準出力するだけ。
シンプルな仕組みなので、ほかにもいろいろできそう。