|
1165 | 1165 | インデックスが範囲外の場合、結果は空文字列になる。<br> |
1166 | 1166 | <br> |
1167 | 1167 | 旧来のスクリプトでは、"++var" と "--var" は何も表示されずにそのまま受け入れら<br> |
1168 | | -れ効果がない。これは Vim9 script ではのエラーである。<br> |
| 1168 | +れ効果がない。これは Vim9 script ではエラーである。<br> |
1169 | 1169 | <br> |
1170 | 1170 | 0 で始まる数値は 8 進数とはみなされず、"0o" で始まる数値のみが 8 進数として扱<br> |
1171 | 1171 | われる: "0o744"。<a class="Identifier" href="eval.html#scriptversion-4">scriptversion-4</a><br> |
1172 | 1172 | <br> |
1173 | 1173 | <br> |
1174 | 1174 | <span class="PreProc">気をつけるべきこと</span><br> |
1175 | 1175 | <a class="Constant" href="vim9.html#vim9-gotchas" name="vim9-gotchas">vim9-gotchas</a><br> |
1176 | | -Vim9 は、一般的なプログラミング言語に近づくように設計されていますが、同時に旧<br> |
1177 | | -来の Vim コマンドをサポートしようとしています。そのため、いくつかの妥協をしな<br> |
1178 | | -ければなりませんでした。ここでは、意外と知られていないことをまとめてみました。<br> |
| 1176 | +Vim9 は、広く使われているプログラミング言語に近い設計となっているが、旧来の<br> |
| 1177 | +Vim コマンドもサポートしようとしている。そのため、いくつかの妥協点が生じた。以<br> |
| 1178 | +下に、予期せぬ変更点についてまとめた。<br> |
1179 | 1179 | <br> |
1180 | | -Exコマンドの範囲指定にはコロンを前置する必要があります。<br> |
| 1180 | +Ex コマンドの範囲指定にはコロンを前置する必要がある。<br> |
1181 | 1181 | <div class="helpExample"> -> 旧来の Vim: 前の行を右にシフト<br> |
1182 | 1182 | ->func() Vim9: 継続行におけるメソッド呼び出し<br> |
1183 | 1183 | :-> Vim9: 前の行を右にシフト</div> |
|
1190 | 1190 | 'text'->func() Vim9: メソッド呼び出し<br> |
1191 | 1191 | :'t Vim9: マーク t へのジャンプ</div> |
1192 | 1192 | <br> |
1193 | | -いくつかのExコマンドは Vim9 script の代入式と紛らわしくなります:<br> |
| 1193 | +いくつかの Ex コマンドの中には、Vim9 script の代入と混同されるものがある:<br> |
1194 | 1194 | <div class="helpExample"> g:name = value # 代入<br> |
1195 | 1195 | :g:pattern:cmd # :グローバルコマンド</div> |
1196 | 1196 | <br> |
1197 | | -コマンド <a class="Comment" href="repeat.html#:global">:global</a> や <a class="Comment" href="change.html#:substitute">:substitute</a> と式や代入文が紛らわしくなるのを避けるた<br> |
1198 | | -め、これらのコマンドが一文字に省略されているとき、一部のセパレータは使うことが<br> |
1199 | | -できません: ':'、'-' と '.' が利用不可です。:<br> |
| 1197 | +<a class="Comment" href="repeat.html#:global">:global</a> コマンドや <a class="Comment" href="change.html#:substitute">:substitute</a> コマンドと式や代入との混同を避けるため、こ<br> |
| 1198 | +れらのコマンドを 1 文字に省略する場合、一部の区切り文字 ':'、'-'、'.' は使用で<br> |
| 1199 | +きない。<br> |
1200 | 1200 | <div class="helpExample"> g:pattern:cmd # 無効なコマンド - エラー<br> |
1201 | 1201 | s:pattern:repl # 無効なコマンド - エラー<br> |
1202 | 1202 | g-pattern-cmd # 無効なコマンド - エラー<br> |
1203 | 1203 | s-pattern-repl # 無効なコマンド - エラー<br> |
1204 | 1204 | g.pattern.cmd # 無効なコマンド - エラー<br> |
1205 | 1205 | s.pattern.repl # 無効なコマンド - エラー</div> |
1206 | 1206 | <br> |
1207 | | -同様に、コマンドとセパレータの間にスペースがあってはいけません:<br> |
| 1207 | +また、コマンドとセパレータの間にスペースを入れることはできない:<br> |
1208 | 1208 | <div class="helpExample"> g /pattern/cmd # 無効なコマンド - エラー<br> |
1209 | 1209 | s /pattern/repl # 無効なコマンド - エラー</div> |
1210 | 1210 | <br> |
1211 | | -<a class="Comment" href="vim9.html#:def">:def</a> で定義した関数はすべてコンパイルされます。旧来の関数は途中で脱出するこ<br> |
1212 | | -とができ、それ以降の行はパースされません:<br> |
| 1211 | +<a class="Comment" href="vim9.html#:def">:def</a>で定義された関数は、関数全体をコンパイルする。旧来の関数は途中で脱出する<br> |
| 1212 | +ことができ、以降の行はパースされない:<br> |
1213 | 1213 | <div class="helpExample"> func Maybe()<br> |
1214 | 1214 | if !has('feature')<br> |
1215 | 1215 | return<br> |
1216 | 1216 | endif<br> |
1217 | 1217 | use-feature<br> |
1218 | 1218 | endfunc</div> |
1219 | | -Vim9 関数はすべてコンパイルされます:<br> |
| 1219 | +Vim9 の関数は全体がコンパイルされる:<br> |
1220 | 1220 | <div class="helpExample"> def Maybe()<br> |
1221 | 1221 | if !has('feature')<br> |
1222 | 1222 | return<br> |
1223 | 1223 | endif<br> |
1224 | 1224 | use-feature # コンパイルエラーが発生する可能性がある<br> |
1225 | 1225 | enddef</div> |
1226 | | -応急的に、2つの関数に分けることができます:<br> |
| 1226 | +回避策として、それを 2 つの関数に分割する:<br> |
1227 | 1227 | <div class="helpExample"> func Maybe()<br> |
1228 | 1228 | if has('feature')<br> |
1229 | 1229 | call MaybeInner()<br> |
|
1234 | 1234 | use-feature<br> |
1235 | 1235 | enddef<br> |
1236 | 1236 | endif</div> |
1237 | | -また、偽として評価される定数式の条件をもった <a class="Comment" href="eval.html#:if">if</a> の配下にサポート外のコードを<br> |
1238 | | -置くことができます:<br> |
| 1237 | +または、サポートされていないコードを、偽と評価される定数式を含む <a class="Comment" href="eval.html#:if">if</a> 文の中に<br> |
| 1238 | +記述する:<br> |
1239 | 1239 | <div class="helpExample"> def Maybe()<br> |
1240 | 1240 | if has('feature')<br> |
1241 | 1241 | use-feature<br> |
1242 | 1242 | endif<br> |
1243 | 1243 | enddef</div> |
1244 | | -これには <a class="Comment" href="builtin.html#exists_compiled()">exists_compiled()</a> 関数も同様に使えます。<br> |
| 1244 | +これには <a class="Comment" href="builtin.html#exists_compiled()">exists_compiled()</a> 関数も同様に使える。<br> |
1245 | 1245 | <a class="Constant" href="vim9.html#vim9-user-command" name="vim9-user-command">vim9-user-command</a><br> |
1246 | | -関数のコンパイルによる他の副作用として、ユーザーコマンドの存在がコンパイルの時<br> |
1247 | | -点でチェックされます。ユーザーコマンドが後で定義されている場合、エラーとなりま<br> |
1248 | | -す。これはOKです:<br> |
| 1246 | +関数をコンパイルする際のもう一つの副作用は、コンパイル時にユーザーコマンドの存<br> |
| 1247 | +在がチェックされることである。ユーザーコマンドが後から定義されている場合、エ<br> |
| 1248 | +ラーが発生する。これは動作する:<br> |
1249 | 1249 | <div class="helpExample"> command -nargs=1 MyCommand echom <q-args><br> |
1250 | 1250 | def Works()<br> |
1251 | 1251 | MyCommand 123<br> |
1252 | 1252 | enddef</div> |
1253 | | -これは "MyCommand" が定義されていないというエラーが発生します:<br> |
| 1253 | +これは "MyCommand" が定義されていないというエラーになる:<br> |
1254 | 1254 | <div class="helpExample"> def Works()<br> |
1255 | 1255 | command -nargs=1 MyCommand echom <q-args><br> |
1256 | 1256 | MyCommand 123<br> |
1257 | 1257 | enddef</div> |
1258 | | -回避策は、<a class="Comment" href="eval.html#:execute">:execute</a> を使用して間接的にコマンドを呼び出すことです:<br> |
| 1258 | +回避策は、<a class="Comment" href="eval.html#:execute">:execute</a> を使用してコマンドを間接的に呼び出すことである:<br> |
1259 | 1259 | <div class="helpExample"> def Works()<br> |
1260 | 1260 | command -nargs=1 MyCommand echom <q-args><br> |
1261 | 1261 | execute 'MyCommand 123'<br> |
1262 | 1262 | enddef</div> |
1263 | 1263 | <br> |
1264 | | -<span class="Todo">Note</span> 認識されていないコマンドを "|" でつなぐと、その後のコマンドは認識されませ<br> |
1265 | | -ん。次のような記述は <a class="Comment" href="eval.html#:endif">endif</a> がないというエラーになります:<br> |
| 1264 | +<span class="Todo">Note</span> 認識されないコマンドの場合、"|" とそれに続くコマンドのチェックは行われな<br> |
| 1265 | +いことに注意。そのため、<a class="Comment" href="eval.html#:endif">endif</a> が欠落しているというエラーが発生する:<br> |
1266 | 1266 | <div class="helpExample"> def Maybe()<br> |
1267 | 1267 | if has('feature') | use-feature | endif<br> |
1268 | 1268 | enddef</div> |
1269 | 1269 | <br> |
1270 | 1270 | <span class="PreProc">その他の変更点</span><br> |
1271 | 1271 | <br> |
1272 | | -パターンは、明示的に上書きされない限り <a class="Type" href="options.html#'magic'">'magic'</a> が設定されている状態と同様に作<br> |
1273 | | -用します。<br> |
1274 | | -オプション <a class="Type" href="options.html#'edcompatible'">'edcompatible'</a> の値は使用されません。<br> |
1275 | | -オプション <a class="Type" href="options.html#'gdefault'">'gdefault'</a> の値は使用されません。<br> |
| 1272 | +パターンは、明示的に上書きされない限り <a class="Type" href="options.html#'magic'">'magic'</a> が設定されているかのように作用<br> |
| 1273 | +する。<br> |
| 1274 | +<a class="Type" href="options.html#'edcompatible'">'edcompatible'</a> オプションの値は使用されない。<br> |
| 1275 | +<a class="Type" href="options.html#'gdefault'">'gdefault'</a> オプションの値は使用されない。<br> |
1276 | 1276 | <br> |
1277 | | -また、このwikiも参考になるでしょう。これは Vim9 script のアーリーアダプターに<br> |
1278 | | -よって書かれました: <span class="Constant"><a href="https://github.com/lacygoill/wiki/blob/master/vim/vim9.md">https://github.com/lacygoill/wiki/blob/master/vim/vim9.md</a></span><br> |
| 1277 | +こちらの Wiki も参考になるかもしれない。これは Vim9 script のアーリーアダプター<br> |
| 1278 | +によって書かれたものである:<br> |
| 1279 | +<span class="Constant"><a href="https://github.com/lacygoill/wiki/blob/master/vim/vim9.md">https://github.com/lacygoill/wiki/blob/master/vim/vim9.md</a></span><br> |
1279 | 1280 | <br> |
1280 | 1281 | <a class="Constant" href="vim9.html#:++" name=":++">:++</a> <a class="Constant" href="vim9.html#:--" name=":--">:--</a><br> |
1281 | | -++ と -- コマンドが追加されました。1 を足し引きするのとそっくりです:<br> |
| 1282 | +++ と -- コマンドが追加された。これらは、1 を足したり引いたりするのと非常によ<br> |
| 1283 | +く似ている:<br> |
1282 | 1284 | <div class="helpExample"> ++var<br> |
1283 | 1285 | var += 1<br> |
1284 | 1286 | --var<br> |
1285 | 1287 | var -= 1</div> |
1286 | 1288 | <br> |
1287 | | -式中で ++var や --var を使うことはまだサポートされていません。<br> |
| 1289 | +式中で ++var や --var を使うことはまだサポートされていない。<br> |
1288 | 1290 | <br> |
1289 | 1291 | <br> |
1290 | 1292 | <span class="PreProc">==============================================================================</span><br> |
|
0 commit comments