-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathif_perl.jax
313 lines (254 loc) · 14.9 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
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
*if_perl.txt* For Vim バージョン 9.1. Last change: 2023 May 14
VIMリファレンスマニュアル 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|
{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 でタグを使うには、Universal/Exuberant Ctags が必要です。ここを訪れてくだ
さい:
Universal Ctags (推奨): https://ctags.io
Exuberant 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 <[email protected]>
Matt Gerassimof
MS-Windows用(および他のプラットフォームの) Perl は、次の場所で見つけることがで
きます:
http://www.perl.org/
ActiveState のものも動作するはずですが、Strawberry Perlは良い選択肢です。
==============================================================================
3. Perl インターフェイスを使う *perl-using*
*:perl* *:pe*
:pe[rl] {cmd} Perl コマンド {cmd} を実行します。現在のパッケージは
"main" です。`:perl` が動作するかを確認する単純な例は: >
:perl VIM::Msg("Hello")
:pe[rl] << [trim] [{endmarker}]
{script}
{endmarker}
Perlスクリプト {script} を実行します。
{script} の後ろの {endmarker} の前に空白を置いてはいけ
ません。
[endmarker] を省略した時は |:append| や |:insert| のよ
うにドット '.' が使われます。これは関数の中で使う時に
便利です。なぜなら "$i;" は |:insert| コマンドの開始と
紛らわしいからです。
この方法は Vim script の中にPerlスクリプトを埋め込む時
に便利です。
Note: Perl のサポートを有効にしてコンパイルされていな
いとこのコマンドは機能しません。エラーを回避するには
|script-here| を参照してください。
Vim script の例: >
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
<
使っている Perl のバージョンを見るには: >
:perl print $^V
<
*:perldo* *:perld*
:[range]perld[o] {cmd} Perl コマンド {cmd} を {range} のそれぞれの行に対して
実行します。$_ はテキスト中のそれぞれの行のテキストに、
余計な <EOL> なしでセットされます。$_ をセットすること
でテキストを変更しますが、このコマンドを使って行を挿入
したり、削除したりすることはできないということに注意し
てください。
デフォルトの [range] はすべての行です: "1,$"。
いくつかの例をあげますと: >
: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("Wrong!", "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,
value) を返し、スカラーコンテキストでは単に値を返しま
す。
success=1 だと、val は {expr} の値を含みます;
success=0 だと、式の評価に失敗したことを示しています。
'@x' はレジスタ x の内容を返し、'&x' はオプション x の
値を返します。'x' は内部変数 |variables| x を返し、
'$x'は Perl の $ENV{x} と同じです。コマンドラインから
アクセスできるすべての |functions| は {expr} に使うこ
とができます。リスト |List| は文字列に変換されます。そ
のとき各要素の間に改行が挿入され、連結されます。
*perl-Blob*
VIM::Blob({expr}) スカラー値から |Blob| リテラル文字列 0zXXXX を返します。
*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 script にその他のスクリプトを埋め込むときに、その言語がサポートされていな
い場合、その部分をスキップしたいでしょう。 >
if has('perl')
perl << EOF
print 'perl works'
EOF
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" とタイ
プすると、どのディレクトリが検索パスになっているか確認できます。また 'perldll'
オプションを Perl の DLL を指定するのに使うこともできます。
DLLの名前はVimをコンパイルした時のPerlのバージョンに一致しなければなりません。
現在その名前は "perl512.dll" です。これはPerl5.12用です。これを確かめるには、
"gvim.exe" を開き、"perl\d*.dll\c" を検索してください。
Unix ~
コンパイル時に DYNAMIC_PERL_DLL で指定されたファイルの代わりに 'perldll' オプ
ションで使用する Perl の共有ライブラリのファイルを指定するのに使えます。共有ラ
イブラリのバージョンは Vim と共にコンパイルされた Perl のバージョンと一致して
いなければなりません。
Note: Perl をローカルでビルドする場合、Vim が正常にリンクするためには、スレッ
ドサポート付きでコンパイルされたバージョンを使用する必要があります。Perl を構
成するときに `-Dusethreads` フラグを使うことができ、Perl のバイナリでこのフラ
グが有効になっているかどうかは `perl -V` を実行して "Compile-time options" の
下に `USE_ITHREADS` があるかどうかで確認することができます。
==============================================================================
vim:tw=78:ts=8:noet:ft=help:norl: