-
Notifications
You must be signed in to change notification settings - Fork 31
/
if_perl.jax
298 lines (244 loc) · 13.8 KB
/
if_perl.jax
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
*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スクリプトの例: >
function! WhitePearl()
perl << EOF
VIM::Msg("pearls are nice for necklaces");
VIM::Msg("rubys for rings");
VIM::Msg("pythons for bags");
VIM::Msg("tcls????");
EOF
endfunction
<
*:perldo* *:perld*
:[range]perld[o] {cmd} Perl コマンド {cmd} を {range} のそれぞれの行に対して
実行します。$_ はテキスト中のそれぞれの行のテキストに、
余計な <EOL> なしでセットされます。$_ をセットすること
でテキストを変更しますが、このコマンドを使って行を挿入
したり、削除したりすることはできないということに注意し
てください。
デフォルトの [range] はすべての行です: "1,$"。
{Vi にはない機能です}
いくつかの例をあげますと: >
:perl $a=1
:perldo $_ = reverse($_);1
:perl VIM::Msg("hello")
:perl $line = $curbuf->Get(42)
<
*E299*
|sandbox|の中のPerlコマンドの実行は制限されています。":perldo"は常に使えませ
ん。":perl"は安全な環境の中で、可能なら評価されます。
*perl-overview*
Perl で使える関数の一覧です: >
:perl VIM::Msg("Text") # メッセージを表示します
:perl VIM::Msg("Error", "ErrorMsg") # エラーメッセージを表示します
:perl VIM::Msg("remark", "Comment") # ハイライトされたメッセージを表示します
:perl VIM::SetOption("ai") # Vim のオプションをセットします
:perl $nbuf = VIM::Buffers() # 全てのバッファー数を返す
:perl @buflist = VIM::Buffers() # 全てのバッファーの配列を返す
:perl $mybuf = (VIM::Buffers('qq.c'))[0] # 'qq.c' のバッファー・オブジェク
# トを返す
:perl @winlist = VIM::Windows() # 全てのウィンドウの配列を返す
:perl $nwin = VIM::Windows() # ウィンドウ数を返す
:perl ($success, $v) = VIM::Eval('&path') # $v: 'path' オプション、
# $success: 1
:perl ($success, $v) = VIM::Eval('&xyz') # $v: '' $sucess: 0
:perl $v = VIM::Eval('expand("<cfile>")') # <cfile> を展開
:perl $curwin->SetHeight(10) # ウィンドウの高さを設定します
:perl @pos = $curwin->Cursor() # (行, 列) 配列を返します
:perl @pos = (10, 10)
:perl $curwin->Cursor(@pos) # カーソルを @pos にセットします
:perl $curwin->Cursor(10,10) # カーソルを10行10列目にセットします
:perl $mybuf = $curwin->Buffer() # ウィンドウのバッファー・オブジェクト
# を返す
:perl $curbuf->Name() # バッファー名を返します
:perl $curbuf->Number() # returns buffer number
:perl $curbuf->Count() # 行数を返します
:perl $l = $curbuf->Get(10) # 10 行目を返します
:perl @l = $curbuf->Get(1 .. 5) # 1行目から5行目までを返します
:perl $curbuf->Delete(10) # 10行目を削除します
:perl $curbuf->Delete(10, 20) # 10行目から20行目までを削除します
:perl $curbuf->Append(10, "Line") # 行を挿入します
:perl $curbuf->Append(10, "Line1", "Line2", "Line3") # 3行挿入します
:perl @l = ("L1", "L2", "L3")
:perl $curbuf->Append(10, @l) # L1, L2, L3 を挿入します
:perl $curbuf->Set(10, "Line") # 10行目を置き換えます
:perl $curbuf->Set(10, "Line1", "Line2") # 10行目と11行目を置き換えます
:perl $curbuf->Set(10, @l) # 3行置き換えます
*perl-Msg*
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スクリプトにその他のスクリプトを埋め込むときに、その言語がサポートされてい
ないなら、その部分をスキップしたいでしょう。しかし、次のコードはうまく動きませ
ん。 >
if has('perl')
perl << EOF
this will NOT work!
EOF
endif
このようにしないで、関数の中にPerl/Python/Ruby/etcのコードを書き、その関数を呼
ぶようにしてください。 >
if has('perl')
function DefPerl()
perl << EOF
this works
EOF
endfunction
call DefPerl()
endif
Note:"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: