2016年03月20日

Vimで編集中のRubyスクリプトを実行する

Vimで編集中のテキストの中にRubyスクリプトを書いて実行する

こんな感じでスクリプトを書いて

10.times{|i|
  print "array[#{i}] = ;\n"
}

↑の文字列をVisualモードで選択し、eval.rbを呼び出すと

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

選択した文字列がRubyスクリプトとして実行されて結果が埋め込
まれる。

array[0] = ;
array[1] = ;
array[2] = ;
array[3] = ;
array[4] = ;
array[5] = ;
array[6] = ;
array[7] = ;
array[8] = ;
array[9] = ;

eval.rbの内容

#!/usr/bin/ruby -Ks

body = $stdin.read
eval body

標準入力をevalするだけなので、
ちょいっとRubyスクリプトを書いていつでも実行できる。
あら便利。

posted by newonone at 20:45| Comment(0) | vim

Vimで一発Grep

Vimは超強力なエディタだけどgrepするのが辛いと思ってた。

:vimgrep hogehoge *.[ch]

やっぱり辛い。

$VIM/vimrc

" grでカーソル下のキーワードをvimgrep

nnoremap <expr> gr ':vimgrep ;\<' . expand('<cword>') . '\>; **/*.[ch] \| cw <CR>'
nnoremap <f2> :cprevious<CR>
nnoremap <f3> :cnext<CR>

今のところ対象は.cと.hだけ。
これでいつでもgrでgrepできる。

grepしたら F3で次を検索、F2で前を検索

上位のフォルダで検索かけちゃったとき延々とgrepし続けちゃうのは嫌だなぁ..

posted by newonone at 20:33| Comment(0) | vim

2016年03月19日

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して結果を標準出力するだけ。
シンプルな仕組みなので、ほかにもいろいろできそう。

posted by newonone at 19:37| Comment(0) | vim