vim-jp / vimdoc-ja / if_ruby

if_ruby - Vimドキュメント

メインヘルプファイルに戻る
if_ruby.txt   For Vim バージョン 8.2.  Last change: 2019 Jul 21


                 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. rubyeval() Vim 関数          ruby-rubyeval
7. 動的ローディング             ruby-dynamic

                        E266 E267 E268 E269 E270 E271 E272 E273

{Vim が +ruby 機能付きでコンパイルされている場合にのみ利用できる}

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

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

                                                        :ruby :rub
:rub[y] {cmd}           Rubyのコマンド{cmd}を実行する。次のようにして使う:
                                :ruby print "Hello"

:rub[y] << [trim] [{endmarker}]
{script}
{endmarker}
                        Rubyスクリプト{script}を実行する。

                        [endmarker]が省略された場合、:append:insertコマ
                        ンド同様にドット '.' がデフォルトである。詳細について
                        は :let-heredoc を参照。

                        この形式の:rubyコマンドは主にVim scriptにRubyコード
                        を埋め込むのに便利である。

                        Note: Ruby のサポートを有効にしてコンパイルされていな
                        いとこのコマンドは機能しない。エラーを回避するには
                        script-here を参照。

Vim script の例:

        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

使っている Ruby のバージョンを見るには:
        :ruby print RUBY_VERSION


                                                :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-blob
Vim::blob({arg})
        {arg}から Blob リテラル文字列を返す。

                                                        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参照)。実行結果は次のように返される:
        - Vimの実行結果が number の場合は Integer
        - Vimの実行結果が float の場合は Float
        - Vimの実行結果が string の場合は String
        - Vimの実行結果がVimの list の場合は Array
        - Vimの実行結果がVimの dictionary の場合は Hash
        辞書とリストは再帰的に展開される。

==============================================================================
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          カーソルの位置を[行数, カラム]の形で配列にして返す。
                最初の行番号は 1 で、最初の桁番号は 0 である。
cursor = [{row}{col}]
                カーソルの位置を{row} 行の {col}カラムに設定する。

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

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

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

==============================================================================
6. rubyeval() Vim 関数                                  ruby-rubyeval

双方向インターフェイスを促進するため、rubyeval() 関数を使用して Ruby 式を評
価しそれらの値を Vim script に渡すことができる。

Ruby の値 "true", "false" および "nil" は、それぞれ v:true, v:false および
v:null に変換される。

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

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

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


MS-Windows

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

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

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

自分で RubyInstaller 1.9 または 2.X 対応の Vim を MSVC でビルドするには、ちょっ
としたこつが必要である。詳細は src/INSTALLpc.txt を参照。

Vim が RubyInstaller 2.4 以降でビルドされているなら、環境変数 PATH に
"C:\Ruby<version>\bin\ruby_builtin_dlls" を追加する必要があるかもしれない。


Unix

コンパイル時に DYNAMIC_RUBY_DLL で指定されたファイルの代わりに、'rubydll' オプ
ションを使って Ruby の共有ライブラリファイルを指定するのに使える。共有ライブラ
リのバージョンは Vim をコンパイルする時に用いた Ruby のバージョンと一致してい
なければならない。

==============================================================================
 vim:tw=78:ts=8:noet:ft=help:norl:
関連キーワード:  Vim, usr, バッファ, ウィンドウ, 実行, 取得, オブジェクト, コマンド, Buffer, 番号