EOFex_rubydo()ex_rubydo()はrubydoコマンドを実装します。点や、$_の処理を行っていることなどが異なっています。rb_lastline_get()、値の設定はrb_lastline_set()で行っています。エラーが発生した場合には、その行で処理を中断しています。}ex_rubyfile()ex_rubyfile()はrubyfileコマンドを実装します。一般的な関数としてrb_protect()という関数も用意されています。あるので、ちょっと扱いが面倒です。}出力ライブラリ通常printメソッド(Kernel#print)は標準出力にそのまま文字列を出力します。困るような場合が多いです。典型的な例はGUIアプリケーションです。printメソッドの挙動を変える必要が出てきます。できますが、printを再定義するだけでは十分ではまだありません。printfなどの他の出力系メソッドの挙動も変える必要があります。らのメソッドをすべて再定義するのはかなりの手間がかかります。$>.writeが呼ばれるようになっています。オブジェクトを$>に設定すれば、printの挙動を変えることができます。Cレベルではrb_defoutという変数によって参照することができます。$>の値を変えるには、rb_defoutに値を代入するだけです。ソッドとしてwriteを定義しています。VIMが提供するMSG()というマクロによってメッセージを表示しています。義する関数群が提供されています。基本的な構造は同じです。ラップするクラスになっています。buffer_new()という関数によって生成されます。生成する必要をなくすためです。キャストして返しています。この方法には1点問題があります。