Contents

if_ruby - vimdoc

Home
*if_ruby.txt*   For Vim バージョン 7.3.  Last change: 2010 Oct 27


                 VIM リファレンスマニュアル    by Shugo Maeda

Rubyインターフェイス                                    *ruby* *Ruby*


1. コマンド                     |ruby-commands|
2. VIMモジュール                |ruby-vim|
3. VIM::Buffer オブジェクト     |ruby-buffer|
4. VIM::Window オブジェクト     |ruby-window|
5. グローバル変数               |ruby-globals|
6. 動的ローディング             |ruby-dynamic|

{Viにはこれらのコマンドは無い}
                        *E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273*

Rubyインターフェイスは|+ruby|機能を有効化してVimをコンパイルした時にのみ動作す
る。

Rubyのホームページは http://www.ruby-lang.org/ です。ここでRubyをダウンロード
できます。

==============================================================================
1. コマンド                                             *ruby-commands*

                                                        *:ruby* *:rub*
:rub[y] {cmd}           Rubyのコマンド{cmd}を実行する。

:rub[y] << {endpattern}
{script}
{endpattern}
                        Rubyスクリプト{script}を実行する。
                        {endpattern}の行では直前に空白文字を先行させてはいけな
                        い。{endpattern}が省略された場合、|:append||:insert|
                        コマンド同様に'.'(ドット)がデフォルトである。この形式
                        の|:ruby|コマンドは主にVimスクリプトにRubyコードを埋め
                        込むのに便利。
                        Note: このコマンドはRuby機能をコンパイル時に指定しな
                        かった時には動作しない。エラーを避けるには
                        |script-here|を参照。

次のようにして使います:
        :ruby print "Hello"   # this is a comment

Vimスクリプトの例:

        function! RedGem()
        ruby << EOF
        class Garnet
                def initialize(s)
                        @buffer = VIM::Buffer.current
                        vimputs(s)
                end
                def vimputs(s)
                        @buffer.append(@buffer.count,s)
                end
        end
        gem = Garnet.new("pretty")
        EOF
        endfunction


                                                *:rubydo* *:rubyd* *E265*
:[range]rubyd[o] {cmd}  [range]の範囲の各行に対し、行末の<EOL>を削除して$_へ代
                        入しつつ、Rubyコマンド{cmd}を実行評価する。$_を変更す
                        るとバッファのテキストを変更できるが、このコマンドを
                        使って行を追加したり削除したりはできないことに注意。
                        [range]を省略した場合ファイル全体が対象: "1,$"

                                                        *:rubyfile* *:rubyf*
:rubyf[ile] {file}      ファイル{file}のRubyスクリプトを実行する。ファイル名の
                        補完が利用できる以外は、":ruby load 'file'"と同じ。

|sandbox|環境内ではRubyコマンドを実行できない。

==============================================================================
2. VIMモジュール                                        *ruby-vim*

Rubyのコードは全てのVimへのアクセスをVIMモジュール経由で行なう。

概要
        print "Hello"                   # メッセージを表示する
        VIM.command(cmd)                # Exコマンドを実行する
        num = VIM::Window.count         # ウィンドウ数を取得する
        w = VIM::Window[n]              # ウィンドウ n を取得する
        cw = VIM::Window.current        # 現在のウィンドウを取得する
        num = VIM::Buffer.count         # バッファ数を取得する
        b = VIM::Buffer[n]              # バッファ n を取得する
        cb = VIM::Buffer.current        # 現在のバッファを取得する
        w.height = lines                # ウィンドウの高さ(行数)を設定する
        w.cursor = [row, col]           # ウィンドウのカーソル位置を設定する
        pos = w.cursor                  # カーソルの位置を配列で受け取る
        name = b.name                   # バッファのファイル名を取得する
        line = b[n]                     # バッファから行の内容を取得する
        num = b.count                   # バッファの行数を取得する
        b[n] = str                      # バッファの行の内容を変更する
        b.delete(n)                     # 行を削除する
        b.append(n, str)                # n行目の直後に行を追加する
        line = VIM::Buffer.current.line       # カレント行を取得する
        num = VIM::Buffer.current.line_number # カレント行の行番号を取得する
        VIM::Buffer.current.line = "test"     # カレント行を設定する


モジュール関数:

                                                        *ruby-message*
VIM::message({msg})
        メッセージ{msg}を表示する。

                                                        *ruby-set_option*
VIM::set_option({arg})
        Vimのオプションを設定する。{arg}は":set"コマンドが受け付けるものであれ
        ば何でも良い。引数の中では空白文字が使えないことに注意。|:set|を参照。

                                                        *ruby-command*
VIM::command({cmd})
        Exコマンド{cmd}を実行する。

                                                        *ruby-evaluate*
VIM::evaluate({expr})
        Vim内部の実行エンジンを使ってスクリプト{expr}を実行評価する
        (|expression|参照)。実行結果は文字列で返される。
        |List|は文字列に変換される。各要素が連結され、間に改行が挿入される。

==============================================================================
3. VIM::Buffer オブジェクト                             *ruby-buffer*

オブジェクトVIM::BufferはVimのバッファを表す。

クラスメソッド:

current         カレントバッファオブジェクトを返す。
count           バッファの個数を返す。
self[{n}]       番号{n}のバッファオブジェクトを返す。最初の番号は0。

メソッド:

name            バッファの名前を返す。
number          バッファの番号を返す。
count           行数を返す。
length          行数を返す。
self[{n}]       バッファの行を返す。{n}は行番号。
self[{n}] = {str}
                バッファの行を設定する。{n}は行番号。
delete({n})     バッファから行を削除する。{n}は行番号。
append({n}{str})
                行{n}の後ろに行を追加する。
line            そのバッファがアクティブなら、カレント行を返す。
line = {str}    そのバッファがアクティブなら、カレント行を設定する。
line_number     そのバッファがアクティブなら、カレント行の行番号を返す。

==============================================================================
4. VIM::Window オブジェクト                             *ruby-window*

VIM::Window オブジェクトはVimのウィンドウを表現している。

クラスメソッド:

current         現在のウィンドウオブジェクトを返す。
count           ウィンドウの数を返す。
self[{n}]       番号{n}のウィンドウオブジェクトを返す。番号は0から数え始める。

メソッド:

buffer          ウィンドウに表示されているバッファを返す。
height          ウィンドウの高さを返す。
height = {n}    ウィンドウの高さを{n}に設定する。
width           ウィンドウの幅を返す。
width = {n}     ウィンドウの幅を{n}に設定する。
cursor          カーソルの位置を[行数, カラム]の形で配列にして返す。
cursor = [{row}{col}]
                カーソルの位置を{row} 行の {col}カラムに設定する。

==============================================================================
5. グローバル変数                                       *ruby-globals*

2つのグローバル変数がある。

$curwin         現在のウィンドウオブジェクト
$curbuf         現在のバッファオブジェクト

==============================================================================
6. 動的ローディング                                     *ruby-dynamic*

MS-WindowsとUnixではRubyライブラリを動的に読み込むことが可能である。これを行う
|:version|の出力に|+ruby/dyn|が含まれるようになる。

この場合、Vimは必要になったときだけRubyのDLLファイル及び共有ライブラリを検索す
る。Rubyインターフェイスを使わないのであればそれらは必要ではないので、ライブラ
リファイルがシステムに無くてもVimを使うことができる。

これが動作するためには Ruby の適切なバージョンがインストールされている必要があ
ります。次の場所からパッケージをダウンロードできます:
http://www.garbagecollect.jp/ruby/mswin32/en/download/release.html
現在のパッケージは ruby-1.9.1-p429-i386-mswin32.zip です。

Rubyインターフェイスを使うにはRubyのDLLが検索パス内に存在しなければならな
い。コンソールウィンドウで"path"とタイプすると、どのディレクトリが検索パスとな
るか表示することができる。

DLLの名前はVimをコンパイルした時のRubyのバージョンに一致しなければならない。現
在その名前は"msvcrt-ruby191.dll"である。これはRuby1.9.1用である。これを確かめ
るには、"gvim.exe"を開き、"ruby\d*.dll\c"を検索する。

自分で Ruby 1.9.1 対応の Vim をビルドするには、config.h ファイルを編集して
_MSC_VER のチェックをコメントアウトする必要があるでしょう。

==============================================================================
 vim:tw=78:ts=8:ft=help:norl: