5
5
巨大なプラグインを作る
6
6
7
7
8
- プラグインがシンプル以上のことをするのであれば、巨大になる傾向があります。この
9
- ファイルでは ロードが高速であることを確認する方法とそのために小い部分への分割
10
- の方法について解説します 。
8
+ プラグインが単純なこと以上のことを行うと、大きくなる傾向があります。このファイ
9
+ ルは、それらが高速に読み込まれるようにする方法と、それらを小さなパーツに分割す
10
+ る方法を説明しています 。
11
11
12
12
| 52.1 | エクスポートとインポート
13
13
| 52.2 | オートロード
@@ -27,12 +27,13 @@ Vim9 script は大きな Vim script を容易に書けるようにデザイン
27
27
パイルされ素早く実行できます。これにより Vim9 script はとても速く、最大100倍に
28
28
なります。
29
29
30
- 基本的な考え方はスクリプトファイルにあるアイテムをプライベートとし、そのスクリ
31
- プトファイル内からのみ利用し、そしてアイテムをエクスポートし、それをインポート
32
- するスクリプトで利用できます。これは定義された位置を非常に明確にできます。
30
+ 基本的な考え方は、スクリプトファイルには、スクリプトファイル内でのみ使用される
31
+ プライベートな項目と、それらをインポートするスクリプトで使用できるエクスポート
32
+ される項目があるということです。これにより、何がどこで定義されているかが非常に
33
+ 明確になります。
33
34
34
- さあサンプルから始めてみましょう、このスクリプトが1つの関数をエクスポートし、
35
- もう1つのプライベートな関数があります : >
35
+ 1つの関数をエクスポートし、1つのプライベート関数を持つスクリプトの例から始めま
36
+ しょう : >
36
37
37
38
vim9script
38
39
@@ -56,18 +57,18 @@ Vim9 script は大きな Vim script を容易に書けるようにデザイン
56
57
`export ` は | Vim9 | script でのみ動くので `vim9script ` コマンドが必要です。
57
58
58
59
`export def GetMessage(...` の行は `export ` から始まっていて、この関数が他のス
59
- クリプトから呼ぶことができることを意味します。行 `def GetReply(...` は
60
- `export ` で始まっておらず、これがスクリプトローカルの関数で、このスクリプトファ
61
- イル内でのみ使えます 。
60
+ クリプトから呼び出すことができることを意味します。 `def GetReply(...` の行は
61
+ `export ` で始まっておらず、これはスクリプトローカル関数であり、このスクリプト
62
+ ファイル内でのみ使用できます 。
62
63
63
64
次にインポートされるスクリプトについて説明します。この例の中ではこの配置を使用
64
65
しており、これは "pack" ディレクトリ下のプラグインに適しています:
65
66
.../plugin/theplugin.vim
66
67
.../lib/getmessage.vim
67
68
68
- "..." ディレクトリは 'runtimepath' に追加されていると仮定すれば 、Vim はプラグ
69
- インの "plugin" ディレクトリを見ることができ、 "theplugin.vim" をソースします。
70
- Vim は "lib" を識別せず、ここに任意のスクリプトを置くことができます 。
69
+ "..." ディレクトリが 'runtimepathd' に追加されていると仮定すると 、Vim は
70
+ "plugin" ディレクトリとソース "theplugin.vim" 内でプラグインを探します。Vim は
71
+ "lib" ディレクトリを認識しません、そこに任意のスクリプトを置くことができます 。
71
72
72
73
上のスクリプトは lib/getmessage.vim 内にある GetMessage() をエクスポートしま
73
74
す。GetMessage() 関数は plugin/theplugin.vim 内にて使用されます: >
@@ -77,21 +78,22 @@ Vim は "lib" を識別せず、ここに任意のスクリプトを置くこと
77
78
import "../lib/getmessage.vim"
78
79
command -nargs=1 ShowMessage echomsg getmessage.GetMessage(<f-args>)
79
80
80
- `import ` コマンドは相対パス -ここでは1つ上のディレクトリの意味する "../" から
81
- 始まっているもの- を使用します。パスの他の種類については `:import ` コマンドを
82
- 参照してください 。
81
+ `import ` コマンドは "../" で始まる相対パスを使用しています。これは、1つ上のディ
82
+ レクトリに移動することを意味します。他の種類のパスについては、 `:import ` コマン
83
+ ドを参照してください 。
83
84
84
- このようにプラグインが提供するコマンドを試せます : >
85
+ プラグインが提供するコマンドを試す方法 : >
85
86
ShowMessage 1
86
87
< To 1 we say no ~
87
88
>
88
89
ShowMessage 22
89
90
< To 22 we say maybe ~
90
91
91
- 関数 GetMessage() はインポートしたスクリプト名 "getmessage" が前置されることに
92
- 注意してください。使用するすべてのインポートした関数について、どのスクリプトか
93
- らインポートしたか分かるようにそうなっています。いくつかのスクリプトをインポー
94
- トした場合にそれぞれで GetMessage() 関数を定義できます: >
92
+ 関数 GetMessage() には、インポートしたスクリプト名 "getmessage" がプレフィック
93
+ スとして付けられていることに注意してください。こうすることで、使用されるすべて
94
+ のインポートされた関数について、それがどのスクリプトからインポートされたかが分
95
+ かります。複数のスクリプトをインポートする場合、それぞれで GetMessage() 関数を
96
+ 定義できます: >
95
97
96
98
vim9script
97
99
@@ -113,11 +115,11 @@ Vim は "lib" を識別せず、ここに任意のスクリプトを置くこと
113
115
素は最初に作成された以降そのままです。これはインポートコマンドが他のスクリプト
114
116
であるか、再ソースした同じスクリプト内であるかは関係ありません。
115
117
116
- これはプラグインの時に効果的ですが、しかしプラグインの開発まではインポート済み
117
- の "lib/getmessage.vim" を変更しても効果がないことを意味します 。Vim を終了と再
118
- 度開始する必要があります。(理由: スクリプト内で定義された要素はコンパイルされ
119
- た関数内で利用されるので、スクリプトの再ソースで関数を壊してしまうことがあるた
120
- めです)
118
+ これはプラグインを使用する場合は効率的ですが、プラグインを開発中の場合は、イン
119
+ ポート後に "lib/getmessage.vim" を変更しても効果がありません 。Vim を終了し、再
120
+ 起動する必要があります。(理論的根拠: スクリプトで定義された項目は、コンパイル
121
+ された関数で使用できます。スクリプトを再度ソースすると、これらの関数が壊れる可
122
+ 能性があります)。
121
123
122
124
123
125
☆グローバルの利用
0 commit comments