@@ -141,16 +141,16 @@ Vim9 script は大きな Vim script を容易に書けるようにデザイン
141
141
とですが、同時に時間もかかります。そのため、その機能があまり使用されない場合
142
142
は、無駄な時間がかかってしまいます。
143
143
144
- 代わりに `import ` で必要になるまで遅延させその時にスクリプトを即時にロードする
145
- 手段を持ちます。上の例を使い 、plugin/theplugin.vim スクリプト内を1箇所だけ変更
146
- してしています : >
144
+ `import ` でスクリプトをすぐにロードするのではなく、必要になるまで延期すること
145
+ ができます。上記の例を使用すると 、plugin/theplugin.vim スクリプトで行う必要が
146
+ ある変更は1箇所だけです : >
147
147
import autoload "../lib/getmessage.vim"
148
148
149
- スクリプトの残りの部分は何も変更する必要はありません。 ただし、型はチェックさ
150
- れません。既存の GetMessage() 関数と同等ではなく、使用されるまでチェックされま
151
- せん。スクリプトでより重要なのかを決定する必要があります: 高速な初期化か早期に
152
- エラーが分るか。また、全部がうまく動くかチェックした後に、 "autoload" 引数を後
153
- で追加することもできます 。
149
+ スクリプトの残りの部分は何も変更する必要はありません。ただし、型はチェックされ
150
+ ません。 GetMessage() 関数が使用されるまで、その存在すらチェックされません。ス
151
+ クリプトにとってどちらがより重要かを決定する必要があります: 高速な起動か早期に
152
+ エラーが分かるか。すべての動作を確認した後で、 "autoload" 引数を追加することも
153
+ できます 。
154
154
155
155
156
156
☆オートロード ディレクトリ
@@ -160,8 +160,8 @@ Vim9 script は大きな Vim script を容易に書けるようにデザイン
160
160
import autload "monthlib.vim"
161
161
162
162
これはスクリプト "monthlib.vim" を 'runtimepath' のオートロード ディレクトリの
163
- 中から検索します。Unix ではディレクトリの1つとして "~/.vim/autoload" がよくあ
164
- ります 。
163
+ 中から検索します。Unix では、ディレクトリの1つが "~/.vim/autoload" であること
164
+ が多いです 。
165
165
166
166
この方法の主要な利点として、このスクリプトを他のスクリプトと共有するのが容易で
167
167
あることです。Vim が 'runtimepath' 内の "autoload" ディレクトリから検索するた
@@ -172,54 +172,56 @@ Vim9 script は大きな Vim script を容易に書けるようにデザイン
172
172
オートロードなしは: >
173
173
import "monthlib.vim"
174
174
175
- Vim は 'runtimepath' のディレクトリ内からスクリプト "monthlib.vim" をインポー
176
- トします。 "autoload" の追加や削除する場合はスクリプトが見付かる場所が変わるこ
177
- とに注意してください。位置が相対および絶対のパスであるなら変化はありません 。
175
+ Vim は 'runtimepath' のインポートディレクトリ内からスクリプト "monthlib.vim"
176
+ を検索します。Note この場合、 "autoload" を追加または削除すると、スクリプトが見
177
+ つかる場所が変わります。相対パスまたは絶対パスでは、場所は変わりません 。
178
178
179
179
==============================================================================
180
180
*52.3* インポート/エクスポートなしのオートロード
181
181
182
182
*write-library-script*
183
- インポート/エクスポート以前のメカニズムは依然として利用でき一部ユーザーは多少
184
- 単純であると感じるかもしれません。それは特別な名前によって関数を呼ぶというアイ
185
- デアです 。その関数はオートロードスクリプト内にあります。そのスクリプトのことを
186
- ライブラリスクリプトと呼びます 。
183
+ インポート/エクスポート以前のメカニズムは依然として使用でき一部ユーザーは多少
184
+ 単純であると感じるかもしれません。それは特別な名前によって関数を呼び出すという
185
+ アイデアです 。その関数はオートロードスクリプト内にあります。そのスクリプトのこ
186
+ とをライブラリスクリプトと呼びます 。
187
187
188
- オートロードのメカニズムは関数名が "#" 文字を持っているというのが基礎になって
189
- います : >
188
+ オートロードのメカニズムは、関数名が "#" 文字を含んでいることが前提となってい
189
+ ます : >
190
190
191
191
mylib#myfunction(arg)
192
192
193
- Vim は埋め込まれた "#" 文字によって関数名を認識し、まだ定義がないのであれば
194
- 'runtimepath' 内のスクリプト "autoload/mylib.vim" を検索します。そのスクリプト
195
- は "mylib#myfunction()" 関数を定義する必要があります。名前 "mylib" を "#" の前
196
- 部分と ".vim" を追加して、スクリプトの名前に使用するというのが一目瞭然です。
193
+ Vim は埋め込まれた "#" 文字によって関数名を認識し、まだ定義されていない場合は
194
+ "autoload/mylib.vim" というスクリプトを 'runtimepath' から探します。そのスクリ
195
+ プトは "mylib#myfunction()" 関数を定義している必要があります。言うまでもなく、
196
+ "mylib" という名前は "#" の前の部分であり、".vim" を追加してスクリプト名として
197
+ 使用されます。
197
198
198
- mylib.vim スクリプト内に他に多数の関数を置ことができ 、ライブラリスクリプト内の
199
- 構成が自由です。しかし '#' の前部分がスクリプト名に一致する関数名を使用する必
200
- 要があります。そうでないと 、Vim はロードするスクリプトが何であるか分らなくなり
201
- ます。この点がインポート/エクスポートメカニズムとの違いになります 。
199
+ mylib.vim スクリプト内に他の多くの関数を置ことができ 、ライブラリスクリプト内の
200
+ 構成は自由です。ただし、 '#' の前部分がスクリプト名に一致する関数名を使用する必
201
+ 要があります。そうしないと 、Vim はロードするスクリプトを認識できません。この点
202
+ がインポート/エクスポートのメカニズムとの違いになります 。
202
203
203
204
実際に夢中になり多数のライブラリスクリプトを書くのであれば、サブディレクトリを
204
205
使用したいでしょう。例: >
205
206
206
207
netlib#ftp#read('somefile')
207
208
208
- 関数名の最後の "#" より上からスクリプト名が取れます。途中にある "#" はスラッ
209
- シュに置き換え、最後の1つは ".vim" にします。つまり、"netlib/ftp.vim" が得られ
210
- ます。Unix の場合、これに使用されるライブラリスクリプトは次のようになります:
209
+ ここでは、スクリプト名は、関数名から最後の "#" までが取得されます。途中の "#"
210
+ はスラッシュで置き換えられ、最後の "#" は."vim" で置き換えられます。したがっ
211
+ て、"netlib/ftp.vim" となります。Unixの場合、これに使われるライブラリスクリプ
212
+ トは次のようになります:
211
213
212
214
~/.vim/autoload/netlib/ftp.vim
213
215
214
- ここで関数の定義はこうなります : >
216
+ ここで、関数はこのように定義されています : >
215
217
216
218
def netlib#ftp#read(fname: string)
217
219
# Read the file fname through ftp
218
220
enddef
219
221
220
- 関数の名前は呼び出して利用する関数の名前と厳密に同じに定義されていることに注意
221
- しましょう。そして最後の '#' の前部分がサブディレクトリとスクリプト名と厳密に
222
- 一致します 。
222
+ 関数が定義されている名前は、関数を呼び出すときに使われる名前と全く同じであるこ
223
+ とに注意してください。また、最後の '#' の前の部分は、サブディレクトリとスクリ
224
+ プト名に完全に一致しています 。
223
225
224
226
変数にも同じメカニズムが使用できます: >
225
227
@@ -237,22 +239,23 @@ mylib.vim スクリプト内に他に多数の関数を置ことができ、ラ
237
239
*52.4* 使用する他のメカニズム
238
240
239
241
複数のファイルを使用するのが面倒で、すべてを1つのスクリプトにまとめておくのを
240
- 好む人もいます。その結果として起動が遅くなるのを回避するため、小さく一部を定義
241
- し残りを実際に使用するまで遅延するメカニズムがあります 。
242
+ 好む人もいます。その結果として、起動が遅くなるのを回避するため、小さな部分のみ
243
+ を定義し、残りは実際に使用されるまで延期するメカニズムがあります 。
242
244
*write-plugin-quickload*
243
245
244
- 基本的なアイデアはプラグインを2回ロードするというものです。初回は機能を呼び出
245
- すユーザーコマンドとマッピングを定義します。2回目では機能を実装している関数を
246
- 定義する 。
246
+ 基本的な考え方は、プラグインは2回ロードされるということです。初回は、機能を提
247
+ 供するためのユーザーコマンドとマッピングが定義されます。2回目は、その機能を実
248
+ 装する関数が定義されます 。
247
249
248
- 高速ロードがスクリプトの2回ロードを意味するのは意外に思えるかもしません。これ
249
- は初回は素早く、2回目は延期したスクリプトのかたまりのロードを意味し、実際に使
250
- 用する時のみ起きます。常に機能を使用のであれば実際のところ遅くなってしまいます!
250
+ 高速ロードがスクリプトを2回ロードすることを意味するのは意外に思われるかもしれ
251
+ ません。つまり、初回は素早く読み込み、2回目にスクリプトの大部分を読み込ませる
252
+ ということです。この機能は、実際に使用するときにのみ発生します。常に機能を使用
253
+ する場合、実際には遅くなります!
251
254
252
- これには FuncUndefined 自動コマンドを使用します。これは上で説明した | autoload |
253
- の機能とは違った動きです 。
255
+ これは、 FuncUndefined 自動コマンドを使用しています。上で説明した | autoload | 機
256
+ 能とは異なる動作をします 。
254
257
255
- 如何の例ではどのようにすべきかを示しています : >
258
+ 以下の例は、その方法を示しています : >
256
259
257
260
" Vim global plugin for demonstrating quick loading
258
261
" Last Change: 2005 Feb 25
@@ -282,27 +285,27 @@ mylib.vim スクリプト内に他に多数の関数を置ことができ、ラ
282
285
マンドが実行されます。これは | :finish | コマンドで終わり、残りのスクリプトは実
283
286
行されません。
284
287
285
- スクリプトの2回目ロード時は "s:did_load" は存在し "endif" 以降のコマンドが実行
286
- されます 。これは(長い可能性のある) BufNetRead() と BufNetWrite() 関数を定義し
287
- ます 。
288
+ スクリプトの2回目ロード時は "s:did_load" は存在し、 "endif" 以降のコマンドが実
289
+ 行されます 。これは(長い可能性のある) BufNetRead() と BufNetWrite() 関数を定義
290
+ します 。
288
291
289
292
あなたのプラグインディレクト内にスクリプトを置くと Vim は初期化時に実行します。
290
293
このような流れでイベントが発生します:
291
294
292
- 1. スクリプトが初期化時にソースされ "BNRead" コマンドが定義され <F19> キーに
293
- マッピングされます 。| FuncUndefined | 自動コマンドが定義されます 。":finish"
294
- コマンドによりスクリプトは早期に終了します 。
295
+ 1. 起動時にスクリプトがソースされた時、 "BNRead" コマンドが定義され、 <F19> キー
296
+ がマッピングされる 。| FuncUndefined | 自動コマンドが定義される 。":finish" コ
297
+ マンドは、スクリプトを早期に終了させる 。
295
298
296
- 2. ユーザーが BNRead コマンドをタイプするか <F19> キーを押します。 BufNetRead()
297
- かBufNetWrite () 関数が呼ばれます 。
299
+ 2. ユーザーが BNRead コマンドをタイプするか <F19> キーを押す。 BufNetRead()
300
+ か BufNetWrite () 関数が呼ばれる 。
298
301
299
- 3. Vim は関数を見付けることができず 、| FuncUndefined | 自動コマンドイベントが発
300
- 生します。関数呼び出しが "BufNet*" パターンにマッチしたのなら、コマンドとし
301
- て "source fname" が実行されます 。"fname" はスクリプトの名前に等しく、どこ
302
- にあるかは問題ないです、なぜなら " <sfile> " を展開して取っているからです
303
- ( | expand() | を参照) 。
302
+ 3. Vim は関数を見つけることができず 、| FuncUndefined | 自動コマンドイベントが発
303
+ 生する。パターン "BufNet*" は呼び出された関数と一致するため、コマンド
304
+ "source fname" が実行される 。"fname" は、" <sfile> " ( | expand() | を参照) を展
305
+ 開したものであるため、スクリプトがどこにあるかに関係なく、スクリプトの名前
306
+ と等しくなる 。
304
307
305
- 4. スクリプトは再度ソースされて 、"s:did_load" 変数は存在し関数が定義されます 。
308
+ 4. スクリプトは再度ソースされ 、"s:did_load" 変数は存在し、関数が定義される 。
306
309
307
310
ロードされた後の関数が | FuncUndefined | 自動コマンドのパターンにマッチすること
308
311
に注意してください。他のプラグインで定義するパターンにマッチする関数がないよう
@@ -318,11 +321,11 @@ mylib.vim スクリプト内に他に多数の関数を置ことができ、ラ
318
321
import 'myNicePlugin.vim'
319
322
call myNicePlugin.NiceInit('today')
320
323
321
- これは Vim9 script からエクスポートされた "NiceInit" 関数を見付けそれをスクリ
322
- プトローカルなアイテム "myNicePlugin.NiceInit" として利用可能にします。"s:" を
323
- 指定しなくても `:import ` は常にスクリプトの名前空間を使います。もし
324
- "myNicePlugin.vim" がすでに読み込み済みであれば再度読み込まれることはありませ
325
- ん 。
324
+ これは、 Vim9 script ファイル内でエクスポートされた関数 "NiceInit" を見つけ、ス
325
+ クリプトローカルな項目 "myNicePlugin.NiceInit" として使用できるようにします。
326
+ `:import ` は、"s:" が指定されていない場合でも、常にスクリプトの名前空間を使用
327
+ します。 "myNicePlugin.vim" がすでに読み込まれていた場合、再度読み込まれること
328
+ はありません 。
326
329
327
330
その上アイテムがグローバルの名前空間に置かれるのを防ぎ (名前の衝突が不測の問題
328
331
になり得ます)、そしてたとえ何度もアイテムをインポートしても、スクリプトの読み
0 commit comments