Skip to content

Commit 1cb83f6

Browse files
tsuyoshichoh-east
andauthored
usr_52.jax: Apply many suggestions
Co-authored-by: h_east <[email protected]>
1 parent 7c166f0 commit 1cb83f6

File tree

1 file changed

+67
-64
lines changed

1 file changed

+67
-64
lines changed

doc/usr_52.jax

Lines changed: 67 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -141,16 +141,16 @@ Vim9 script は大きな Vim script を容易に書けるようにデザイン
141141
とですが、同時に時間もかかります。そのため、その機能があまり使用されない場合
142142
は、無駄な時間がかかってしまいます。
143143

144-
代わりに `import` で必要になるまで遅延させその時にスクリプトを即時にロードする
145-
手段を持ちます。上の例を使い、plugin/theplugin.vim スクリプト内を1箇所だけ変更
146-
してしています: >
144+
`import` でスクリプトをすぐにロードするのではなく、必要になるまで延期すること
145+
ができます。上記の例を使用すると、plugin/theplugin.vim スクリプトで行う必要が
146+
ある変更は1箇所だけです: >
147147
import autoload "../lib/getmessage.vim"
148148
149-
スクリプトの残りの部分は何も変更する必要はありません。 ただし、型はチェックさ
150-
れません。既存の GetMessage() 関数と同等ではなく、使用されるまでチェックされま
151-
せん。スクリプトでより重要なのかを決定する必要があります: 高速な初期化か早期に
152-
エラーが分るか。また、全部がうまく動くかチェックした後に、 "autoload" 引数を後
153-
で追加することもできます
149+
スクリプトの残りの部分は何も変更する必要はありません。ただし、型はチェックされ
150+
ません。GetMessage() 関数が使用されるまで、その存在すらチェックされません。ス
151+
クリプトにとってどちらがより重要かを決定する必要があります: 高速な起動か早期に
152+
エラーが分かるか。すべての動作を確認した後で、"autoload" 引数を追加することも
153+
できます
154154

155155

156156
☆オートロード ディレクトリ
@@ -160,8 +160,8 @@ Vim9 script は大きな Vim script を容易に書けるようにデザイン
160160
import autload "monthlib.vim"
161161
162162
これはスクリプト "monthlib.vim" を 'runtimepath' のオートロード ディレクトリの
163-
中から検索します。Unix ではディレクトリの1つとして "~/.vim/autoload" がよくあ
164-
ります
163+
中から検索します。Unix では、ディレクトリの1つが "~/.vim/autoload" であること
164+
が多いです
165165

166166
この方法の主要な利点として、このスクリプトを他のスクリプトと共有するのが容易で
167167
あることです。Vim が 'runtimepath' 内の "autoload" ディレクトリから検索するた
@@ -172,54 +172,56 @@ Vim9 script は大きな Vim script を容易に書けるようにデザイン
172172
オートロードなしは: >
173173
import "monthlib.vim"
174174
175-
Vim は 'runtimepath' のディレクトリ内からスクリプト "monthlib.vim" をインポー
176-
トします。"autoload" の追加や削除する場合はスクリプトが見付かる場所が変わるこ
177-
とに注意してください。位置が相対および絶対のパスであるなら変化はありません
175+
Vim は 'runtimepath' のインポートディレクトリ内からスクリプト "monthlib.vim"
176+
を検索します。Note この場合、"autoload" を追加または削除すると、スクリプトが見
177+
つかる場所が変わります。相対パスまたは絶対パスでは、場所は変わりません
178178

179179
==============================================================================
180180
*52.3* インポート/エクスポートなしのオートロード
181181

182182
*write-library-script*
183-
インポート/エクスポート以前のメカニズムは依然として利用でき一部ユーザーは多少
184-
単純であると感じるかもしれません。それは特別な名前によって関数を呼ぶというアイ
185-
デアです。その関数はオートロードスクリプト内にあります。そのスクリプトのことを
186-
ライブラリスクリプトと呼びます
183+
インポート/エクスポート以前のメカニズムは依然として使用でき一部ユーザーは多少
184+
単純であると感じるかもしれません。それは特別な名前によって関数を呼び出すという
185+
アイデアです。その関数はオートロードスクリプト内にあります。そのスクリプトのこ
186+
とをライブラリスクリプトと呼びます
187187

188-
オートロードのメカニズムは関数名が "#" 文字を持っているというのが基礎になって
189-
います: >
188+
オートロードのメカニズムは、関数名が "#" 文字を含んでいることが前提となってい
189+
ます: >
190190
191191
mylib#myfunction(arg)
192192
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+
使用されます。
197198

198-
mylib.vim スクリプト内に他に多数の関数を置ことができ、ライブラリスクリプト内の
199-
構成が自由です。しかし '#' の前部分がスクリプト名に一致する関数名を使用する必
200-
要があります。そうでないと、Vim はロードするスクリプトが何であるか分らなくなり
201-
ます。この点がインポート/エクスポートメカニズムとの違いになります
199+
mylib.vim スクリプト内に他の多くの関数を置ことができ、ライブラリスクリプト内の
200+
構成は自由です。ただし、'#' の前部分がスクリプト名に一致する関数名を使用する必
201+
要があります。そうしないと、Vim はロードするスクリプトを認識できません。この点
202+
がインポート/エクスポートのメカニズムとの違いになります
202203

203204
実際に夢中になり多数のライブラリスクリプトを書くのであれば、サブディレクトリを
204205
使用したいでしょう。例: >
205206
206207
netlib#ftp#read('somefile')
207208
208-
関数名の最後の "#" より上からスクリプト名が取れます。途中にある "#" はスラッ
209-
シュに置き換え、最後の1つは ".vim" にします。つまり、"netlib/ftp.vim" が得られ
210-
ます。Unix の場合、これに使用されるライブラリスクリプトは次のようになります:
209+
ここでは、スクリプト名は、関数名から最後の "#" までが取得されます。途中の "#"
210+
はスラッシュで置き換えられ、最後の "#" は."vim" で置き換えられます。したがっ
211+
て、"netlib/ftp.vim" となります。Unixの場合、これに使われるライブラリスクリプ
212+
トは次のようになります:
211213

212214
~/.vim/autoload/netlib/ftp.vim
213215

214-
ここで関数の定義はこうなります: >
216+
ここで、関数はこのように定義されています: >
215217
216218
def netlib#ftp#read(fname: string)
217219
# Read the file fname through ftp
218220
enddef
219221
220-
関数の名前は呼び出して利用する関数の名前と厳密に同じに定義されていることに注意
221-
しましょう。そして最後の '#' の前部分がサブディレクトリとスクリプト名と厳密に
222-
一致します
222+
関数が定義されている名前は、関数を呼び出すときに使われる名前と全く同じであるこ
223+
とに注意してください。また、最後の '#' の前の部分は、サブディレクトリとスクリ
224+
プト名に完全に一致しています
223225

224226
変数にも同じメカニズムが使用できます: >
225227
@@ -237,22 +239,23 @@ mylib.vim スクリプト内に他に多数の関数を置ことができ、ラ
237239
*52.4* 使用する他のメカニズム
238240

239241
複数のファイルを使用するのが面倒で、すべてを1つのスクリプトにまとめておくのを
240-
好む人もいます。その結果として起動が遅くなるのを回避するため、小さく一部を定義
241-
し残りを実際に使用するまで遅延するメカニズムがあります
242+
好む人もいます。その結果として、起動が遅くなるのを回避するため、小さな部分のみ
243+
を定義し、残りは実際に使用されるまで延期するメカニズムがあります
242244
*write-plugin-quickload*
243245

244-
基本的なアイデアはプラグインを2回ロードするというものです。初回は機能を呼び出
245-
すユーザーコマンドとマッピングを定義します。2回目では機能を実装している関数を
246-
定義する
246+
基本的な考え方は、プラグインは2回ロードされるということです。初回は、機能を提
247+
供するためのユーザーコマンドとマッピングが定義されます。2回目は、その機能を実
248+
装する関数が定義されます
247249

248-
高速ロードがスクリプトの2回ロードを意味するのは意外に思えるかもしません。これ
249-
は初回は素早く、2回目は延期したスクリプトのかたまりのロードを意味し、実際に使
250-
用する時のみ起きます。常に機能を使用のであれば実際のところ遅くなってしまいます!
250+
高速ロードがスクリプトを2回ロードすることを意味するのは意外に思われるかもしれ
251+
ません。つまり、初回は素早く読み込み、2回目にスクリプトの大部分を読み込ませる
252+
ということです。この機能は、実際に使用するときにのみ発生します。常に機能を使用
253+
する場合、実際には遅くなります!
251254

252-
これには FuncUndefined 自動コマンドを使用します。これは上で説明した |autoload|
253-
の機能とは違った動きです
255+
これは、FuncUndefined 自動コマンドを使用しています。上で説明した |autoload|
256+
能とは異なる動作をします
254257

255-
如何の例ではどのようにすべきかを示しています: >
258+
以下の例は、その方法を示しています: >
256259
257260
" Vim global plugin for demonstrating quick loading
258261
" Last Change: 2005 Feb 25
@@ -282,27 +285,27 @@ mylib.vim スクリプト内に他に多数の関数を置ことができ、ラ
282285
マンドが実行されます。これは |:finish| コマンドで終わり、残りのスクリプトは実
283286
行されません。
284287

285-
スクリプトの2回目ロード時は "s:did_load" は存在し "endif" 以降のコマンドが実行
286-
されます。これは(長い可能性のある) BufNetRead() と BufNetWrite() 関数を定義し
287-
ます
288+
スクリプトの2回目ロード時は "s:did_load" は存在し"endif" 以降のコマンドが実
289+
行されます。これは(長い可能性のある) BufNetRead() と BufNetWrite() 関数を定義
290+
します
288291

289292
あなたのプラグインディレクト内にスクリプトを置くと Vim は初期化時に実行します。
290293
このような流れでイベントが発生します:
291294

292-
1. スクリプトが初期化時にソースされ "BNRead" コマンドが定義され <F19> キーに
293-
マッピングされます|FuncUndefined| 自動コマンドが定義されます。":finish"
294-
コマンドによりスクリプトは早期に終了します
295+
1. 起動時にスクリプトがソースされた時、"BNRead" コマンドが定義され<F19> キー
296+
がマッピングされる|FuncUndefined| 自動コマンドが定義される。":finish"
297+
マンドは、スクリプトを早期に終了させる
295298

296-
2. ユーザーが BNRead コマンドをタイプするか <F19> キーを押します。 BufNetRead()
297-
かBufNetWrite() 関数が呼ばれます
299+
2. ユーザーが BNRead コマンドをタイプするか <F19> キーを押す。BufNetRead()
300+
か BufNetWrite() 関数が呼ばれる
298301

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+
と等しくなる
304307

305-
4. スクリプトは再度ソースされて、"s:did_load" 変数は存在し関数が定義されます
308+
4. スクリプトは再度ソースされ、"s:did_load" 変数は存在し、関数が定義される
306309

307310
ロードされた後の関数が |FuncUndefined| 自動コマンドのパターンにマッチすること
308311
に注意してください。他のプラグインで定義するパターンにマッチする関数がないよう
@@ -318,11 +321,11 @@ mylib.vim スクリプト内に他に多数の関数を置ことができ、ラ
318321
import 'myNicePlugin.vim'
319322
call myNicePlugin.NiceInit('today')
320323
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+
はありません
326329

327330
その上アイテムがグローバルの名前空間に置かれるのを防ぎ (名前の衝突が不測の問題
328331
になり得ます)、そしてたとえ何度もアイテムをインポートしても、スクリプトの読み

0 commit comments

Comments
 (0)