*if_perl.txt* For
Vim バージョン 7.3. Last change: 2010 Jul 21
VIM REFERENCE MANUAL by Sven Verdoolaege
and Matt Gerassimof
Perl と Vim
*perl* *Perl*
1. Perl のファイルを編集する
|perl-editing|
2. Perl インタフェイス付きのコンパイル
|perl-compiling|
3. Perl インタフェイスを使う
|perl-using|
4. 動的ローディング
|perl-dynamic|
{Vi にはこれらのうちのどの機能もありません}
Perl インタフェイスは、Vim を
|+perl| 機能付きでコンパイルしている場合にのみ
利用できます。
==============================================================================
1. Perl のファイルを編集する
*perl-editing*
Vim の構文ハイライト(syntax highlighting)は Perl と POD のファイルもサポートし
ています。Vim はファイルの拡張子が .pl か .pm であると、Perl のコードだと想定
します。また、ファイルの拡張しによらず、Vim はファイルの1行目を調べてファイル
が Perl スクリプトであるかどうか確認します(Vim の syntax ディレクトリにある
scripts.vim を参照してください)。ファイルの拡張子が .POD であると、Vim は POD
テキストであると想定します。
Perl でタグを使うには、最近のctagsが必要です。ここを訪れてください。
http://ctags.sourceforge.net
Perl スクリプトの"pltags.pl"を使うこともできます。これは $VIMRUNTIME/tools
ディレクトリにあります。これは今のところ最新のctagsよりも高機能です。
==============================================================================
2. Perl インタフェイス付きのコンパイル
*perl-compiling*
Perl インタフェイス付きで Vim をコンパイルするには、5.004 もしくはそれ以上のバー
ジョンの Perl が必要です。Perl は Vim をコンパイルする前にインストールしておか
なければなりません。Vim の Perl インタフェイスは、公式にリリースされたバージョ
ンである Perl 5.003 では動作しません! Perl 5.003_05 もしくはそれ以上であれば、
たぶん動作するでしょう。
Vim への Perl パッチは、次の方によって作成されました:
Sven Verdoolaege <skimo@breughel.ufsia.ac.be>
Matt Gerassimof
Perl for MS-Windows は、次の場所で見つけることができます:
http://www/perl.com/CPAN/ports/nt/Standard/x86/
==============================================================================
3. Perl インタフェイスを使う
*perl-using*
*:perl* *:pe*
:pe[rl]
{cmd} Perl コマンド
{cmd} を実行します。現在のパッケージは
"main" です。
:pe[rl] <<
{endpattern}
{script}
{endpattern}
Perlスクリプト
{script} を実行します.
{endpattern} の前に空白を置いてはいけません。
{endpattern} を省略した時は
|:append|や
|:insert|のよう
に'.'が使われます。これは関数の中で使う時に便利です。
なぜなら"$i;"は
|:insert|コマンドの開始と紛らわしいから
です。
この方法はVimスクリプトの中にPerlスクリプトを埋め込む
時に便利です。
Note: Perl のサポートを有効にしてコンパイルされていな
いとこのコマンドは機能しません。エラーを回避するには
|script-here|を参照してください。
Vimスクリプトの例:
*:perldo* *:perld*
:
[range]perld[o]
{cmd} Perl コマンド
{cmd} を
{range} のそれぞれの行に対して
実行します。$_ はテキスト中のそれぞれの行のテキストに、
余計な
<EOL> なしでセットされます。$_ をセットすること
でテキストを変更しますが、このコマンドを使って行を挿入
したり、削除したりすることはできないということに注意し
てください。
デフォルトの
[range] はすべての行です: "1,$"。
{Vi にはない機能です}
いくつかの例をあげますと:
*E299*
|sandbox|の中のPerlコマンドの実行は制限されています。":perldo"は常に使えませ
ん。":perl"は安全な環境の中で、可能なら評価されます。
*perl-overview*
Perl で使える関数の一覧です:
VIM::Msg(
{msg},
{group}?)
{msg} メッセージを表示する。オプショナルな
{group} 引
数は、そのメッセージの Vim でのハイライトグループを指
定します。
*perl-SetOption*
VIM::SetOption(
{arg}) Vim のオプションをセットします。
{arg} は ":set" コマン
ドで使える引数であればなんでもよいです。このことは、引
数の中にスペースを入れることは許されないということを意
味しますので、注意してください。参照:
|:set|
*perl-Buffers*
VIM::Buffers([
{bn}...]) 引数なしだと、配列コンテキストではすべてのバッファーの
リストを、スカラーコンテキストではバッファーの数を返し
ます。バッファー名
{bn} もしくは、バッファー番号
{bn}
のリストが与えられた場合は、
{bn} にマッチするバッ
ファーのリストを返します。ここでは Vim の内蔵関
数
|bufname()| と同じルールが用いられます。
警告:
|:bwipe| が使われると、このリストは無効になりま
す。それを使おうとすると Vim がクラッシュすることがあ
ります。
*perl-Windows*
VIM::Windows([
{wn}...]) 引数なしだと、配列コンテキストではすべてのウインドーの
リストを返し、スカラーコンテキストではウインドーの数を
返します。ウインドー数
{wn} にリストが与えられた場合は、
それらの番号のウインドーのリストを返します。
警告:
|:bwipe| が使われると、このリストは無効になりま
す。それを使おうとすると Vim がクラッシュすることがあ
ります。
*perl-DoCommand*
VIM::DoCommand(
{cmd}) Ex コマンド
{cmd} を実行します。
*perl-Eval*
VIM::Eval(
{expr})
{expr} を評価して (success, val) を返します。success=1
だと、val は
{expr} の値を含みます; success=0 だと、式
の評価に失敗したことを示しています。'@x' はレジスター
x の内容を返し、'&x' はオプション x の値を返します。
'x' は内部変数
|variables| x を返し、'$x' は Perl の
$ENV
{x} と同じです。コマンドラインからアクセスできるす
べての
|functions| は
{expr} に使うことができます。
リスト
|List| は文字列に変換されます。そのとき各要素の
間に改行が挿入され、連結されます。
*perl-SetHeight*
Window->SetHeight(
{height})
ウインドーの高さをスクリーンの上限以内で
{height} に
セットします。
*perl-GetCursor*
Window->Cursor(
{row}?,
{col}?)
引数なしだと、ウインドーの現在のカーソル位置の
(row, col) 配列を返します。
{row} と
{col} 引数をつけて
よばれると、ウインドーのカーソル位置を
{row} と
{col}
にセットします。
{col} は Perl のように0から数えられま
すので、Vim のルーラーの値より1つ小さくなるということ
に注意してください。
Window->Buffer()
*perl-Buffer*
与えられたウインドーに対応するバッファーオブジェクトを
返します。
*perl-Name*
Buffer->Name() バッファーのファイル名を返します。
*perl-Number*
Buffer->Number() バッファーの番号を返します。
*perl-Count*
Buffer->Count() バッファーの行数を返します。
*perl-Get*
Buffer->Get(
{lnum},
{lnum}?, ...)
バッファーの
{lnum} 行目のテキストを、指定されているそ
れぞれの
{lnum} に関して返します。
{lnum} のリストとし
て配列を渡すこともできます。
*perl-Delete*
Buffer->Delete(
{lnum},
{lnum}?)
バッファーの
{lnum} 行目を削除します。二つ目の
{lnum}
が指定されていると、始めの
{lnum} から二つ目の
{lnum}
までの範囲の行が削除されます。
*perl-Append*
Buffer->Append(
{lnum},
{line},
{line}?, ...)
それぞれの
{line} をバッファーの
{lnum} 行目の後に挿入
します。
{line} のリストは配列でもよいです。
*perl-Set*
Buffer->Set(
{lnum},
{line},
{line}?, ...)
バッファーの行を1行以上
{line} で指定される行で置き換
えます。置き換えは、
{lnum} から始まり、
{line} は配列で
もよいです。引数が有効でないものであれば、置き換えは起
こりません。
$main::curwin
現在のウインドーオブジェクト
$main::curbuf
現在のバッファーオブジェクト
*script-here*
Vimスクリプトにその他のスクリプトを埋め込むときに、その言語がサポートされてい
ないなら、その部分をスキップしたいでしょう。しかし、次のコードはうまく動きませ
ん。
このようにしないで、関数の中にPerl/Python/Ruby/etcのコードを書き、その関数を呼
ぶようにしてください。
注意:"EOF"は行頭になければなりません。
==============================================================================
4. 動的ローディング
*perl-dynamic*
MS-Windows と Unix では Perl ライブラリを動的に読み込むことが可能である。これ
を行うと
|:version| の出力に
|+perl/dyn| が含まれるようになる。
この場合、Vimは必要になったときだけPerlのDLLや共有ライブラリのファイルを検索す
る。Perlインターフェイスを使わないときはDLLを必要としないので、DLLなしでVimを
使うことができる。
MS-Windows
http://www.perl.org から Perl をダウンロードできる。Vim のビルドには
ActiveState のものが使われた。
Perl インターフェイスを使うには Perl の DLL が検索パス内に存在しなければなりま
せん。perl512.dll が見つからないというようなメッセージが表示された場合は、
$PATH に適切なディレクトリが含まれているかどうか確認してください。通常は Perl
のインストーラーによって設定されるでしょう。コンソールウィンドウで "path" とタ
イプすると、どのディレクトリが検索パスになっているか確認できます。
DLLの名前はVimをコンパイルした時のPerlのバージョンに一致しなければならない。
現在その名前は"perl512.dll"である。これはPerl5.12用である。これを確かめるに
は、"gvim.exe"を開き、"perl\d*.dll\c"を検索する。
==============================================================================
vim:tw=78:ts=8:ft=help:norl: