1
- *eval.txt* For Vim バージョン 8.2. Last change: 2022 May 13
1
+ *eval.txt* For Vim バージョン 8.2. Last change: 2022 Jun 03
2
2
3
3
4
4
VIMリファレンスマニュアル by Bram Moolenaar
@@ -177,10 +177,15 @@ Note: " " と "0" も空文字列ではないので、TRUE と見なされる。
177
177
178
178
1.2 関数への参照 ~
179
179
*Funcref* *E695* *E718* *E1192*
180
- 関数への参照は、関数| function() | 、関数| funcref() | またはラムダ式| expr-lambda | を
181
- 使うことで得られる。関数への参照は、式の中で関数名が要求される場所で使うと参照
182
- 先の関数を呼び出す。例: >
180
+ 関数への参照は、関数 | function() | 、関数| funcref() | 、(| Vim9 | script 内で)関数の
181
+ 名前あるいはラムダ式 | expr-lambda | による生成で得られる。関数への参照は、式の
182
+ 中で関数名が要求される場所で使うと参照先の関数を呼び出す。| Vim9 | script での例:
183
+ >
184
+
185
+ :var Fn = MyFunc
186
+ :echo Fn()
183
187
188
+ 旧来のスクリプトでは: >
184
189
:let Fn = function("MyFunc")
185
190
:echo Fn()
186
191
< *E704* *E705* *E707*
@@ -845,34 +850,37 @@ MY_VAR_6 viminfoファイル
845
850
expr5 isnot expr5 異なるリスト | List | 、辞書 | Dictionary | または
846
851
| Blob | のインスタンス
847
852
848
- | expr5 | expr6
849
- expr6 + expr6 ... 足し算、リストまたはBlobの連結
850
- expr6 - expr6 ... 引き算
851
- expr6 . expr6 ... 文字列の連結
852
- expr6 .. expr6 ... 文字列の連結
853
+ | expr5 | expr6 << expr6 ビット単位の左シフト
854
+ expr6 >> expr6 ビット単位の右シフト
853
855
854
856
| expr6 | expr7
855
- expr7 * expr7 ... 掛け算
856
- expr7 / expr7 ... 割り算
857
- expr7 % expr7 ... 剰余(割った余り)
857
+ expr7 + expr7 ... 足し算、リストまたはBlobの連結
858
+ expr7 - expr7 ... 引き算
859
+ expr7 . expr7 ... 文字列の連結
860
+ expr7 .. expr7 ... 文字列の連結
858
861
859
862
| expr7 | expr8
860
- <type> expr8 型のチェックと変換 (| Vim9 | のみ)
863
+ expr8 * expr8 ... 掛け算
864
+ expr8 / expr8 ... 割り算
865
+ expr8 % expr8 ... 剰余(割った余り)
861
866
862
867
| expr8 | expr9
863
- ! expr8 論理否定
864
- - expr8 単項のマイナス
865
- + expr8 単項のプラス
868
+ <type> expr9 型のチェックと変換 (| Vim9 | のみ)
866
869
867
870
| expr9 | expr10
868
- expr9[expr1] 文字列のバイト、またはリストの要素
869
- expr9[expr1 : expr1] 文字列の部分文字列、またはリストの部分リスト
870
- expr9.name 辞書 | Dictionary | の要素
871
- expr9(expr1, ...) | Funcref | 変数による関数呼び出し
872
- expr9->name(expr1, ...) | method | 呼び出し
871
+ ! expr9 論理否定
872
+ - expr9 単項のマイナス
873
+ + expr9 単項のプラス
874
+
875
+ | expr10 | expr11
876
+ expr10[expr1] 文字列のバイト、またはリストの要素
877
+ expr10[expr1 : expr1] 文字列の部分文字列、またはリストの部分リスト
878
+ expr10.name 辞書 | Dictionary | の要素
879
+ expr10(expr1, ...) | Funcref | 変数による関数呼び出し
880
+ expr10->name(expr1, ...) | method | 呼び出し
873
881
874
882
875
- | expr10 | number 数定数
883
+ | expr11 | number 数定数
876
884
"string" 文字列定数。バックスラッシュは特別な意味を持つ
877
885
'string' リテラル文字列定数。'を含めるには2重にする
878
886
[expr1, ...] リスト | List |
@@ -1099,16 +1107,26 @@ NOTE: |Vim9| script では 'ignorecase' を使用しない。
1099
1107
"foo\nbar" =~ "\n" 1として評価される
1100
1108
"foo\nbar" =~ "\\n" 0として評価される
1101
1109
1102
-
1103
- expr5 and expr6 *expr5* *expr6* *E1036* *E1051*
1110
+ expr5 *expr5* *bitwise-shift*
1111
+ -----
1112
+ expr6 << expr6 ビット単位の左シフト *expr-<<*
1113
+ expr6 >> expr6 ビット単位の右シフト *expr->>*
1114
+ *E1282* *E1283*
1115
+ "<<" と ">>" の演算子は左被演算子を右被演算子で示すビット数分ビット単位の左か
1116
+ 右へのシフト演算をするのに使用できる。どちらの被演算子にも正の数値を使用する。
1117
+ 最上位ビット(しばしば符号ビットと呼ばれる)を ">>" で右へシフトするとクリアされ
1118
+ る。もし右被演算子(シフトする数)が数値の最大ビット数(| v:numbersize | )より多い場
1119
+ 合、結果は0になる。
1120
+
1121
+ expr6 and expr7 *expr6* *expr7* *E1036* *E1051*
1104
1122
---------------
1105
- expr6 + expr6 足し算、リスト | List | または | Blob | の連結 *expr-+*
1106
- expr6 - expr6 引き算 *expr--*
1107
- expr6 . expr6 文字列の連結 *expr-.*
1108
- expr6 .. expr6 文字列の連結 *expr-..*
1123
+ expr7 + expr7 足し算、リスト | List | または | Blob | の連結 *expr-+*
1124
+ expr7 - expr7 引き算 *expr--*
1125
+ expr7 . expr7 文字列の連結 *expr-.*
1126
+ expr7 .. expr7 文字列の連結 *expr-..*
1109
1127
1110
- リストに対しては "+" のみ可能で、expr6は両方ともリストでなければならない。結果
1111
- は2つのリストを連結した新しいリスト 。
1128
+ リストに対しては "+" のみ可能で、expr7 は両方ともリストでなければならない。結
1129
+ 果は2つのリストを連結した新しいリスト 。
1112
1130
1113
1131
文字列の連結には ".." が推奨される。"." はあいまいで、| Dict | メンバーアクセス
1114
1132
と浮動小数点数にも使用される。
@@ -1118,9 +1136,9 @@ expr6 .. expr6 文字列の連結 *expr-..*
1118
1136
| Vim9 | script では ".." の引数の単順な型は文字列に変換される: 数値、浮動小数点
1119
1137
数、特殊値、真偽値。その他の型は | string() | を使用する必要がある。
1120
1138
1121
- expr7 * expr7 掛け算 *expr-star*
1122
- expr7 / expr7 割り算 *expr-/*
1123
- expr7 % expr7 剰余(割った余り) *expr-%*
1139
+ expr8 * expr8 掛け算 *expr-star*
1140
+ expr8 / expr8 割り算 *expr-/*
1141
+ expr8 % expr8 剰余(割った余り) *expr-%*
1124
1142
1125
1143
旧来のスクリプトでは、"." と ".." を除くすべての演算子で文字列は数値に変換され
1126
1144
る。
@@ -1163,17 +1181,17 @@ Note 旧来のスクリプトでの "+" と ".." の違い:
1163
1181
"."、".."、"%" は浮動小数点数には適用できない。 *E804* *E1035*
1164
1182
1165
1183
1166
- expr7 *expr7 *
1184
+ expr8 *expr8 *
1167
1185
-----
1168
- <type> expr8
1186
+ <type> expr9
1169
1187
1170
1188
これは | Vim9 | script でのみ使用可能である。| type-casting | を参照。
1171
1189
1172
- expr8 *expr8 *
1190
+ expr9 *expr9 *
1173
1191
-----
1174
- ! expr8 論理否定 *expr-!*
1175
- - expr8 単項マイナス *expr-unary--*
1176
- + expr8 単項プラス *expr-unary-+*
1192
+ ! expr9 論理否定 *expr-!*
1193
+ - expr9 単項マイナス *expr-unary--*
1194
+ + expr9 単項プラス *expr-unary-+*
1177
1195
1178
1196
'!' 演算子では| TRUE | は| FALSE | に、| FALSE | は| TRUE | になる。
1179
1197
'-' では数値の符号が反転される。
@@ -1193,29 +1211,29 @@ expr8 *expr8*
1193
1211
--9 == 9
1194
1212
1195
1213
1196
- expr9 *expr9 *
1197
- -----
1198
- この式は | expr10 | 、もしくは連続する以下の選択方式であり、どんな順番でもよい。
1214
+ expr10 *expr10 *
1215
+ ------
1216
+ この式は | expr11 | 、もしくは連続する以下の選択方式であり、どんな順番でもよい。
1199
1217
例として、これらはすべて可能である:
1200
- expr9 [expr1].name
1201
- expr9 .name[expr1]
1202
- expr9 (expr1, ...)[expr1].name
1203
- expr9 ->(expr1, ...)[expr1]
1218
+ expr10 [expr1].name
1219
+ expr10 .name[expr1]
1220
+ expr10 (expr1, ...)[expr1].name
1221
+ expr10 ->(expr1, ...)[expr1]
1204
1222
評価は常に左から右に行われる。
1205
1223
1206
- expr9 [expr1] 文字列またはリストの要素 *expr-[]* *E111*
1224
+ expr10 [expr1] 文字列またはリストの要素 *expr-[]* *E111*
1207
1225
*E909* *subscript* *E1062*
1208
1226
旧来の Vim script では:
1209
- expr9が数値か文字列ならば 、この値は文字列 expr9 の第 expr1 番目のバイトからな
1210
- る1バイトの文字列となる。expr9は文字列 (数値の場合は自動で文字列に変換される)、
1211
- expr1は数として扱われる 。マルチバイトのエンコーディングを認識しないため、代わ
1212
- りの方法は `byteidx ()` を参照するか、`split ()` を使って文字列を文字のリストに変
1213
- 換すれば良い 。例えばカーソルの下のバイトを得るには: >
1227
+ expr10 が数値か文字列ならば 、この値は文字列 expr10 の第 expr1 番目のバイトから
1228
+ なる1バイトの文字列となる。expr10 は文字列 (数値の場合は自動で文字列に変換され
1229
+ る)、expr1 は数として扱われる 。マルチバイトのエンコーディングを認識しないため、
1230
+ 代わりの方法は `byteidx ()` を参照するか、`split ()` を使って文字列を文字のリスト
1231
+ に変換すれば良い 。例えばカーソルの下のバイトを得るには: >
1214
1232
:let c = getline(".")[col(".") - 1]
1215
1233
1216
1234
| Vim9 | script では: *E1147* *E1148*
1217
- expr9 が文字列ならば、この値は文字列 expr9 の第 expr1 番目の文字 (合成文字があ
1218
- る場合はそれらを全て含む ) に相当する文字列となる。バイトインデックスの場合は
1235
+ expr10 が文字列ならば、この値は文字列 expr10 の第 expr1 番目の文字 (合成文字が
1236
+ ある場合はそれらを全て含む ) に相当する文字列となる。バイトインデックスの場合は
1219
1237
| strpart() | を使う。
1220
1238
1221
1239
インデックスが0の場合最初のバイトもしくは文字になる。注意: テキストの列番号は0
@@ -1227,23 +1245,24 @@ expr9 が文字列ならば、この値は文字列 expr9 の第 expr1 番目の
1227
1245
Vim9 script では負数のインデックスはリストと同様に使用され、終端からのカウント
1228
1246
になる。
1229
1247
1230
- expr9がリスト | List | ならばインデックスexpr1の要素が返る。取りうるインデックスの
1231
- 値については | list-index | を参照。インデックスが範囲を超えている場合はエラーとな
1232
- る 。例: >
1248
+ expr10 がリスト | List | ならばインデックスexpr1の要素が返る。取りうるインデックス
1249
+ の値については | list-index | を参照。インデックスが範囲を超えている場合はエラーと
1250
+ なる 。例: >
1233
1251
:let item = mylist[-1] " 最後の要素を取得
1234
1252
1235
1253
一般的には、インデックスが正でリストの長さ以上または、負でリストの長さ×-1より
1236
1254
小さいときエラーとなる。
1237
1255
1238
1256
1239
- expr9 [expr1a : expr1b] 部分文字列または部分リスト *expr-[:]*
1257
+ expr10 [expr1a : expr1b] 部分文字列または部分リスト *expr-[:]*
1240
1258
1241
- expr9が文字列ならば、バイトか文字数でexpr1aからexpr1bまでの部分文字列となる
1242
- (両端を含む)。expr9は文字列として扱われ、expr1aとexpr1bは数値として扱われる。
1259
+ expr10 が文字列ならば、バイトか文字数で expr1a から expr1b までの部分文字列と
1260
+ なる (両端を含む)。expr10 は文字列として扱われ、expr1a と expr1b は数値として
1261
+ 扱われる。
1243
1262
1244
1263
旧来の Vim script ではインデックスはバイトインデックスとなる。マルチバイトのエ
1245
1264
ンコーディングは認識しない。マルチバイト文字列のインデックスを計算する方法につ
1246
- いては | byteidx() | を参照。expr9が数値ならば最初に文字列に変換される 。
1265
+ いては | byteidx() | を参照。expr10 が数値ならば最初に文字列に変換される 。
1247
1266
1248
1267
Vim9 script ではインデックスは文字インデックスであり、合成文字を含む {訳注: 1
1249
1268
個の基底文字とその任意個の合成文字をまとめて 1 としてカウントする}。バイトイン
@@ -1269,31 +1288,31 @@ expr1aが省略されたときは0となる。expr1bが省略されたときは
1269
1288
:let s = s[:-3] " 最後の2文字を削除する
1270
1289
<
1271
1290
*slice*
1272
- expr9が | List | ならば、インデックスexpr1aとexpr1bの間の要素からなる新しい | List |
1273
- となる。すぐ上で説明した文字列の場合と同様である。部分リスト| sublist | も参照の
1274
- こと 。例: >
1291
+ expr10 が | List | ならば、インデックスexpr1aとexpr1bの間の要素からなる新しい
1292
+ | List | となる。すぐ上で説明した文字列の場合と同様である。部分リスト| sublist | も
1293
+ 参照のこと 。例: >
1275
1294
:let l = mylist[:3] " 最初の4個の要素
1276
1295
:let l = mylist[4:4] " 1個の要素からなるリスト
1277
1296
:let l = mylist[:] " リストの浅いコピー
1278
1297
1279
- expr9が | Blob | ならば、インデックスexpr1aとexpr1bのバイト数を含む新しい | Blob |
1280
- となる。
1281
- 例: >
1298
+ expr10 が | Blob | ならば、インデックス expr1a と expr1b のバイト数を含む新しい
1299
+ | Blob | となる。例: >
1282
1300
:let b = 0zDEADBEEF
1283
1301
:let bs = b[1:2] " 0zADBE
1284
1302
:let bs = b[:] " 0zDEADBEEF のコピー
1285
1303
1286
- | Funcref | に対してexpr9[expr1]やexpr9[expr1a : expr1b]を使うとエラーになる。
1304
+ | Funcref | に対して expr10[expr1] や expr10[expr1a : expr1b] を使うとエラーにな
1305
+ る。
1287
1306
1288
1307
部分リストでスコープと変数に続くコロンとの混乱に注意してください: >
1289
1308
mylist[n:] " 変数nは使える
1290
1309
mylist[s:] " スコープs:を使うとエラー!
1291
1310
1292
1311
1293
- expr9 .name 辞書| Dictionary | の要素 *expr-entry*
1312
+ expr10 .name 辞書| Dictionary | の要素 *expr-entry*
1294
1313
*E1203* *E1229*
1295
- expr9が辞書 | Dictionary | のとき、ドットをつけるとその後に書かれた名前が辞書の
1296
- キーと見なされる 。例: expr9 [name]。
1314
+ expr10 が辞書 | Dictionary | のとき、ドットをつけるとその後に書かれた名前が辞書
1315
+ のキーと見なされる 。例: expr10 [name]。
1297
1316
1298
1317
名前は変数名と同じようにアルファベットと数字だけから構成されなければならない
1299
1318
が、数字で始まってもよい。波括弧は使えない。
@@ -1310,25 +1329,25 @@ Note ドットは文字列連結にも使われる。混乱を避けるために
1310
1329
周りには必ずスペースを入れること。
1311
1330
1312
1331
1313
- expr9 (expr1, ...) | Funcref | 関数呼び出し *E1085*
1332
+ expr10 (expr1, ...) | Funcref | 関数呼び出し *E1085*
1314
1333
1315
- expr9が | Funcref | 型の変数のとき、その参照する関数を呼び出す。
1334
+ expr10 が | Funcref | 型の変数のとき、その参照する関数を呼び出す。
1316
1335
1317
1336
1318
- expr9 ->name([args]) メソッド呼び出し *method* *->*
1319
- expr9 ->{lambda} ([args])
1337
+ expr10 ->name([args]) メソッド呼び出し *method* *->*
1338
+ expr10 ->{lambda} ([args])
1320
1339
*E260* *E276* *E1265*
1321
1340
グローバル関数としても利用可能なメソッドの場合、これは次と同じである: >
1322
- name(expr9 [, args])
1323
- これらは "expr9 " 専用としても利用できる
1341
+ name(expr10 [, args])
1342
+ これらは "expr10 " 専用としても利用できる
1324
1343
1325
1344
これにより、あるメソッドが返す値を次のメソッドに渡して連鎖させることができる: >
1326
1345
mylist->filter(filterexpr)->map(mapexpr)->sort()->join()
1327
1346
<
1328
1347
ラムダの使用例: >
1329
1348
GetPercentage()->{x -> x * 100}()->printf('%d%%')
1330
1349
<
1331
- -> を使用する場合 | expr8 | 演算子が最初に適用される。したがって: >
1350
+ -> を使用する場合 | expr9 | 演算子が最初に適用される。したがって: >
1332
1351
-1.234->string()
1333
1352
は、以下と同等である: >
1334
1353
(-1.234)->string()
@@ -1356,7 +1375,7 @@ Note この最後の呼び出しでは "(getFuncRef())" 関数の解決で "args
1356
1375
ラムダ形式を使用する場合、} と ( の間に空白があってはならない。
1357
1376
1358
1377
1359
- *expr10 *
1378
+ *expr11 *
1360
1379
数
1361
1380
------
1362
1381
number 数定数 *expr-number*
@@ -1365,6 +1384,10 @@ number 数定数 *expr-number*
1365
1384
10進数、16進数(0xか0Xで始まる)、2進数(0bか0Bで始まる)、もしくは8進数(0か0oか0O
1366
1385
で始まる)の数定数。
1367
1386
1387
+ 64bitの数値が使用されている(| v:numbersize | を参照)と仮定するなら、符号なし整数
1388
+ は 0x7fffffffffffffff か 9223372036854775807 に丸められる。0xffffffffffffffff
1389
+ を得るには -1 を使用する。
1390
+
1368
1391
*floating-point-format*
1369
1392
浮動小数点数は次の2つの形式で書ける:
1370
1393
@@ -1482,7 +1505,7 @@ Note シングルクォートが使われていることに注意。
1482
1505
if a =~ '\s*'
1483
1506
1484
1507
1485
- 文字列補間 *interp-string* *E256*
1508
+ 文字列補間 *$quote* *interp-string* *E256*
1486
1509
--------------------
1487
1510
$"string" 補間された文字列定数 *expr-$quote*
1488
1511
$'string' 補間されたリテラル文字列定数 *expr-$'*
@@ -2889,7 +2912,7 @@ FuncUndefinedを使う。例: >
2889
2912
2890
2913
オートロードスクリプトの使い方 ~
2891
2914
*autoload* *E746*
2892
- これはユーザーマニュアルのセクション | 51.5 | で説明されている。
2915
+ これはユーザーマニュアルのセクション | 52.2 | で説明されている。
2893
2916
2894
2917
"autoload" ディレクトリのスクリプトを使う方法はより簡単である。しかし完全に正
2895
2918
しいファイル名を使う必要がある。オートロードされる関数は次のような名前を持つ: >
0 commit comments