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
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" # カレント行を設定する
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: