|
3 | 3 | helpname: 'usr_52'
|
4 | 4 | ---
|
5 | 5 | <div id='vimCodeElement'>
|
6 |
| -<a class="Constant" href="usr_52.html" name="usr_52.txt">usr_52.txt</a> For <span class="Identifier">Vim バージョン 9.1.</span> Last change: 2024 May 16<br> |
| 6 | +<a class="Constant" href="usr_52.html" name="usr_52.txt">usr_52.txt</a> For <span class="Identifier">Vim バージョン 9.1.</span> Last change: 2024 May 31<br> |
7 | 7 | <br>
|
8 | 8 | VIM USER MANUAL - by Bram Moolenaar<br>
|
9 | 9 | <br>
|
|
19 | 19 | <a class="Identifier" href="usr_52.html#52.3">52.3</a> インポート/エクスポートなしのオートロード<br>
|
20 | 20 | <a class="Identifier" href="usr_52.html#52.4">52.4</a> 他に使えるメカニズム<br>
|
21 | 21 | <a class="Identifier" href="usr_52.html#52.5">52.5</a> 旧来のスクリプトから Vim9 script を使う<br>
|
| 22 | +<a class="Identifier" href="usr_52.html#52.6">52.6</a> Vim9 script サンプル: comment パッケージ, highlight-yank プラグイン<br> |
22 | 23 | <br>
|
23 | 24 | 次章: <a class="Identifier" href="usr_90.html">usr_90.txt</a> Vim のインストール<br>
|
24 | 25 | 前章: <a class="Identifier" href="usr_51.html">usr_51.txt</a> プラグインを作る<br>
|
|
345 | 346 | call g:NicePluginTest()</div>
|
346 | 347 | <br>
|
347 | 348 | <span class="PreProc">==============================================================================</span><br>
|
| 349 | +<a class="Constant" href="usr_52.html#52.6" name="52.6">52.6</a> Vim9 script サンプル: comment パッケージ, highlight-yank プラグイン<br> |
| 350 | +<br> |
| 351 | +☆<span class="Statement">comment パッケージ</span><br> |
| 352 | +<br> |
| 353 | +Vim には、Vim9 script で記述されたコメントプラグイン <a class="Identifier" href="usr_05.html#comment-install">comment-install</a> が付属<br> |
| 354 | +しています。<br> |
| 355 | +$VIMRUNTIME/pack/dist/opt/comment/ にあるパッケージを確認してください。<br> |
| 356 | +<br> |
| 357 | +☆<span class="Statement">highlight-yank プラグイン</span><br> |
| 358 | +<br> |
| 359 | +ヤンクされた領域をハイライトする例を以下に示します。これは、Vim 9.1.0446 以降<br> |
| 360 | +で使用可能な <a class="Identifier" href="builtin.html#getregionpos()">getregionpos()</a> 関数を使用します。<br> |
| 361 | +<br> |
| 362 | +以下の例を新しいファイルにコピーしてプラグインディレクトリに配置すると、次回<br> |
| 363 | +Vim を起動したときにアクティブになります <a class="Identifier" href="usr_05.html#add-plugin">add-plugin</a>: ><br> |
| 364 | +<br> |
| 365 | +<div class="helpExample"> vim9script</div> |
| 366 | +<br> |
| 367 | +<div class="helpExample"> def HighlightedYank(hlgroup = 'IncSearch', duration = 300, in_visual = true)<br> |
| 368 | + if v:event.operator ==? 'y'<br> |
| 369 | + if !in_visual && visualmode() != null_string<br> |
| 370 | + visualmode(1)<br> |
| 371 | + return<br> |
| 372 | + endif<br> |
| 373 | + var [beg, end] = [getpos("'["), getpos("']")]<br> |
| 374 | + var type = v:event.regtype ?? 'v'<br> |
| 375 | + var pos = getregionpos(beg, end, {type: type})<br> |
| 376 | + var end_offset = (type == 'V' || v:event.inclusive) ? 1 : 0<br> |
| 377 | + var m = matchaddpos(hlgroup, pos->mapnew((_, v) => {<br> |
| 378 | + var col_beg = v[0][2] + v[0][3]<br> |
| 379 | + var col_end = v[1][2] + v[1][3] + end_offset<br> |
| 380 | + return [v[0][1], col_beg, col_end - col_beg]<br> |
| 381 | + }))<br> |
| 382 | + var winid = win_getid()<br> |
| 383 | + timer_start(duration, (_) => m->matchdelete(winid))<br> |
| 384 | + endif<br> |
| 385 | + enddef</div> |
| 386 | +<br> |
| 387 | +<div class="helpExample"> autocmd TextYankPost * HighlightedYank()</div> |
| 388 | +<<br> |
| 389 | +<span class="PreProc">==============================================================================</span><br> |
348 | 390 | <br>
|
349 | 391 | 次章: <a class="Identifier" href="usr_90.html">usr_90.txt</a> Vim のインストール<br>
|
350 | 392 | <br>
|
|
0 commit comments