irb 用 edit コマンド

小さな Ruby スクリプトを試すのに irb は便利ですが、少し長いプログラムになるとエディターを使いたくなるときがあります。ホームディレクトリーに .irbrc を記述することで、irb にプログラムを編修するための edit コマンドと、それを実行するための run コマンドを追加することができます。

後述のリストをホームディレクトリに ~/.irbrc として作成すると、edit や run の他にも、ls や less "filename" のように irb からシェルコマンドもどきを使えます。もどきと言ったのは引数を cp "file_from file_to" のように引用符で囲む必要があるからです。導入できるコマンドは、edit, new, vi, run, ruby, ls, pwd, cd, mkdir, cat, less, cp, mv, rm です。

使い方は次のようになります。.irbrc をホームディレクトリに作成した後、 irb を起動すると、拡張コマンドがインストールされます。

実行例

$ irb
irb(main):001:0> edit

ここで vi を使って次のプログラムを入力します。

total = 0
for i in 1..10
  total += i
end
puts total

ここで vi を終了して irb のコンソールに戻ります。

irb(main):002:0> run
55
true
irb(main):003:0> new

ここで vi を使って先のプログラムを次のプログラムに書き換えます。

ARGV.each{|arg| puts arg}

ここで vi を終了して irb のプロンプトに戻ります。

irb(main):004:0> run "A B C"
A
B
C
true

また、次のように bash で作業をしている感覚で操作できます。ただし、コマンドの引数は引用符で囲む必要があります。

irb(main):005:0> vi "sample.rb"
true
irb(main):006:0> cat "sample.rb"
print "what is your name?  > "
name = gets.chop
puts "Hello, #{name}."
true
irb(main):007:0> ruby "sample.rb"
what is your name?  > Dolly
Hello, Dolly
true
irb(main):008:0> cp "sample.rb sample2.rb"
true
irb(main):009:0> ls
sample.rb  sample2.rb
true

Ruby ではこのように既存のプログラムの仕様を簡単に変更できてしまうので一度 Ruby でプログラムを作ると他の言語を使う気がしなくなります。危険な徴候です。

.irbrc のリスト

#
# edit commands
#
def edit
  system "vi ~/.temp.rb"
end

def new
  system "rm ~/.temp.rb; vi ~/.temp.rb"
end

def vi(arg)
  system "vi #{arg}"
end

#
# run commands
#
def run(*arg)
  system "ruby ~/.temp.rb #{arg.to_s}"
end

def ruby(arg)
  system "ruby #{arg}"
end

#
# directory commands
#
def ls(*args)
  system "ls #{args.to_s}"
end

def pwd
  Dir::pwd
end

def cd(arg)
  Dir::chdir(arg)
end

def mkdir(arg)
  Dir::mkdir(arg)
end

#
# file commnads
#
def cat(arg)
  system "cat #{arg}"
end

def less(arg)
  system "less #{arg}"
end

def cp(arg)
  system "cp #{arg}"
end

def mv(arg)
  system "mv #{arg}"
end

def rm(arg)
  system "rm #{arg}"
end

irbrc.txtはここを右クリックするとダウンロードできます。cp irbrc.txt ~/.irbrc でホームディレクトリにコピーして下さい。