2008年3月25日火曜日

Emacs で特定範囲をコマンドで実行する

1. プログラムの実行

Emacs 上で書いたプログラムを実行するには、

M-!

で Shell Command を呼び出し、プログラムを記述したファイルを指定する。

例えば、以下の ruby のプログラムを実行するには、

[1, 2, 3, 4, 5].reverse_each do |item|
  puts item
end

M-! を入力した後、「ruby プログラム名 RET」。

 

2. ファイル上の一部のコードを実行する

ファイル上で、いくつかの小さなプログラムを試している場合、特定の部分だけ実行して、結果を得たいことがある。このとき、実行したい部分の範囲を選択し、

M-|

を入力する。上記の場合では、 「ruby RET」 で実行される。 

先ほどの M-! で実行した結果は、別のフレームに表示される。複数の小さなプログラムを試していると、ファイルの最後の方に書いたプログラムの結果を見るとき、わざわざスクロールさせないといけない。

追記(2008.3.27) : プログラム実行後は、リージョンが解除されてしまう。 再度実行したい場合は、 C-x C-x で、ポイント(カーソルのある位置) とマーク (リージョンの開始位置) を入れ換えるコマンドを実行すると、すぐに範囲選択ができる。 

また、マークをした後に、C-sC-r による検索で範囲を選択するのもよい。

訂正(2008.6.15) : コマンド実行後も、リージョンは記憶されているので、範囲が選択されてないように見えても、M-| ですぐに実行できる。

 

参考