-
Notifications
You must be signed in to change notification settings - Fork 65
/
Copy pathsyntax.jax
5251 lines (4028 loc) · 264 KB
/
syntax.jax
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
*syntax.txt* For Vim バージョン 8.0. Last change: 2017 Feb 06
VIMリファレンスマニュアル by Bram Moolenaar
構文ハイライト *syntax* *syntax-highlighting* *coloring*
Vimは構文ハイライトによってテキストの一部を別のフォントや色で表示することがで
きる。ハイライトされるテキストは、特定のキーワードや正規表現パターンにマッチす
るテキストである。動作を速く保つため、ファイル全体を構文解析するわけではないか
ら、このハイライト方法には限界が存在する。単語(レキシカル)ハイライトと呼ぶのが
より正しいが、皆が構文ハイライトと呼ぶのでそう呼び続けている。
Vimは全ての端末で構文ハイライトをサポートしている。しかし、多くの普通の端末に
はごく限られたハイライト手段しか提供されていないので、GUI版のgvimで動作させた
ときに見栄えが最もよくなる。
ユーザーマニュアルにおける記述:
|usr_06.txt| 構文ハイライトの紹介。
|usr_44.txt| 構文ファイルの記述方法の紹介。
1. クイックスタート |:syn-qstart|
2. 構文ファイル |:syn-files|
3. 構文ファイル読込の手順 |syntax-loading|
4. 構文ファイルの覚書 |:syn-file-remarks|
5. 構文を定義する |:syn-define|
6. :syntaxの引数 |:syn-arguments|
7. syntaxのパターン |:syn-pattern|
8. クラスタ |:syn-cluster|
9. 構文ファイルのインクルード |:syn-include|
10. 表示のシンクロナイズ |:syn-sync|
11. 構文アイテムのリストを表示する |:syntax|
12. ハイライトコマンド |:highlight|
13. グループのリンク |:highlight-link|
14. 構文の消去 |:syn-clear|
15. 関数名などのハイライト |tag-highlight|
16. ウィンドウローカル構文 |:ownsyntax|
17. カラー対応xterm |xterm-color|
18. シンタックスが遅い時には |:syntime|
{Vi にはこれらのコマンドはない}
コンパイル時に|+syntax|機能を無効にした場合には構文ハイライトは利用することは
できない。
==============================================================================
1. クイックスタート *:syn-qstart*
*:syn-enable* *:syntax-enable*
次のコマンドで構文ハイライトが有効になる: >
:syntax enable
このコマンドにより実際には次のコマンドが実行される >
:source $VIMRUNTIME/syntax/syntax.vim
環境変数VIMが設定されていない場合は、Vimは別の方法(|$VIMRUNTIME|参照)でパスの
検索を試みる。通常はこれでうまくいく。うまく動作しない場合は、環境変数VIMにVim
の構成ファイルが置いてあるディレクトリの設定を試みる。例えば、構文ファイルがディ
レクトリ "/usr/vim/vim50/syntax" にあるならば、$VIMRUNTIMEに "/usr/vim/vim50"
を設定する。これはVimを起動する前に、シェルで設定しておかなければならない。
*:syn-on* *:syntax-on*
コマンド ":syntax enable" は現在の色設定を変更しない。そのため、このコマンドを
使用する前後にコマンド ":highlight" で好みの色を設定することができる。現在の設
定を破棄して、デフォルトの色を設定させたい場合は次のコマンドを使用する: >
:syntax on
<
*:hi-normal* *:highlight-normal*
GUIを使用している場合は、次のコマンドで黒地に白文字を設定できる: >
:highlight Normal guibg=Black guifg=White
カラー端末については|:hi-normal-cterm|を参照。
自分自身で色を設定する方法については|syncolor|を参照。
NOTE: MS-DOSとWindowsの構文ファイルは改行コードが<CR><NL>である。UNIXでは<NL>
である。自分のシステムに合った改行コードのファイルを使わなければならない。しか
し、MS-DOSとWindowsではオプション 'fileformats' が空でなければ正しい形式が自動
的に選択される。
NOTE: 反転表示("gvim -fg white -bg black")を使用する場合、|gvimrc|が読込まれた
後、GUIウィンドウが開かれるまでは 'background' のデフォルト値が設定されない。
そのせいで誤ったデフォルトのハイライトが使用されてしまう。ハイライト表示を有効
化する前に 'background' のデフォルト値を設定するには、|gvimrc|にコマンド
":gui" を含めればよい: >
:gui " ウィンドウを開き、'background' にデフォルト値を設定する
:syntax on " ハイライトを有効化し、'background' にもとづいて色を設定する
NOTE: |.gvimrc|の中で ":gui" を使用すると "gvim -f" によりフォアグラウンドで開
始することができなくなる。その際は ":gui -f" を使用すること。
*g:syntax_on*
次のコマンドで構文ハイライトの有効・無効を切換えることができる: >
:if exists("g:syntax_on") | syntax off | else | syntax enable | endif
これをキーマップに設定するには、以下のように書く: >
:map <F7> :if exists("g:syntax_on") <Bar>
\ syntax off <Bar>
\ else <Bar>
\ syntax enable <Bar>
\ endif <CR>
[全ての文字をそのまま入力すること]
詳細
コマンド ":syntax" はファイルをsourceすることで実装されている。その際にsource
されるファイルの中身を見れば、このコマンドがどのように動作しているのか正確に知
ることができる。
コマンド ファイル ~
:syntax enable $VIMRUNTIME/syntax/syntax.vim
:syntax on $VIMRUNTIME/syntax/syntax.vim
:syntax manual $VIMRUNTIME/syntax/manual.vim
:syntax off $VIMRUNTIME/syntax/nosyntax.vim
|syntax-loading|も参照。
NOTE: 長い行があって表示が遅く、構文ハイライトをオフにしたくなるような場合は、
'synmaxcol' をもっと小さい値にすることも考えてみること。
==============================================================================
2. 構文ハイライトファイル *:syn-files*
ある1つの言語用の構文とハイライト色定義コマンドは通常1つのファイル(以下構文ファ
イル)に格納される。名前は "{name}.vim" と付ける慣習になっている。{name}はその
言語の名前か短縮名となる(DOSファイルシステムで要求される、8.3文字の形式にあわ
せることが望ましい)。
例:
c.vim perl.vim java.vim html.vim
cpp.vim sh.vim csh.vim
構文ファイルには、vimrcファイルと同様にExコマンドを記述できる。しかし1つのファ
イルには、1つの言語のためのコマンドだけを記述するよう取り決めている。ある言語
が別の言語のスーパーセットである時には、他のファイルを内包していても良く、例え
ば、ファイルcpp.vimはファイルc.vimを取り込むようになっている: >
:so $VIMRUNTIME/syntax/c.vim
通常これらの構文ファイルはオートコマンドにより読込まれる。例: >
:au Syntax c source $VIMRUNTIME/syntax/c.vim
:au Syntax cpp source $VIMRUNTIME/syntax/cpp.vim
このようなコマンドはファイル$VIMRUNTIME/syntax/synload.vimに書かれている。
独自構文ファイルの作成 *mysyntaxfile*
独自の構文ファイルを作成し、":syntax enable" をしたとき自動的にそのファイルが
使われるようにするには、以下のようにする:
1. ユーザーランタイムディレクトリを作成する。通常はオプション 'runtimepath' に
示される最初のディレクトリを使用する。UNIXの例では: >
mkdir ~/.vim
2. "syntax" という名のディレクトリを作成する。UNIXでは: >
mkdir ~/.vim/syntax
3. Vimの構文ファイルを作成する。もしくはインターネットからダウンロードする。そ
のファイルはディレクトリsyntaxに置く。構文 "mine" の例では: >
:w ~/.vim/syntax/mine.vim
これで独自構文ファイルを手動で使うことはできるようになっている: >
:set syntax=mine
このコマンドを実行するためにVimを再起動する必要はない。
このファイルタイプが認識されるようにするには、|new-filetype|を参照。
システム管理者としてユーザー全てに独自構文ファイルを使わせるには、各ユーザーに
同じ構文ファイルをインストールさせる必要はなく、全ユーザー共通の 'runtimepath'
ディレクトリにインストールすればよい。
既存の構文ファイルに設定を追加する *mysyntaxfile-add*
既存の構文ファイルでほぼ満足だが、いくつかの設定を追加したりハイライト手法を変
更したい場合には、以下の手順に従う:
1. 上同様、'runtimepath' に示されるユーザーディレクトリを作成する。
2. "after/syntax" というディレクトリを作成する。UNIXの例: >
mkdir ~/.vim/after
mkdir ~/.vim/after/syntax
3. 追加設定を行うコマンドを含む Vim script ファイルを作成する。例として、C言語
のコメントの色を変更するには: >
highlight cComment ctermfg=Green guifg=Green
4. その設定ファイルをディレクトリ "after/syntax" に置く。名前には構文名に
".vim" を追加して使用する。Cの構文を拡張するならば: >
:w ~/.vim/after/syntax/c.vim
以上。次回Cのファイルを編集する時にはコメントが異なった色で表示される。Vimを再
起動する必要はない。
構文ファイルが複数になるときは、ファイルタイプの名前のディレクトリに置くとよい。
そのディレクトリの中の全ての "*.vim" ファイルが読み込まれるようになる。例: >
~/.vim/after/syntax/c/one.vim
~/.vim/after/syntax/c/two.vim
既存の構文ファイルを置き換える *mysyntaxfile-replace*
標準の構文ファイルが気に入らない場合や、新しいバージョンをダウンロードした際に
は、上で述べた|mysyntaxfile|に従えば良い。ただ 'runtimepath' で、前の方に記され
たディレクトリに構文ファイルを置くように気をつければ良い。Vimは適合する構文ファ
イルのうち最初に見つけた1つだけを読込む (それが b:current_syntax を設定すると
想定している)。
名前付けの慣習 *group-name* *{group-name}* *E669* *W18*
構文グループとは、同じ種類の構文アイテムをグループ化したものである。構文グルー
プから強調グループにリンクされ、強調グループに対して色が設定される。構文グルー
プそれ自体は、色や属性を指定するものではない。
ハイライトや構文グループの名前はASCII文字、数字、アンダースコアだけでつけなけ
ればならない。正規表現では: "[a-zA-Z0-9_]*" しかしそれ以外の文字を使ってもVim
はエラーを出力しない。
各ユーザーが好みの色セットを使用できるように、多くの言語に共通するハイライトグ
ループには優先名が与えられている。推奨されているグループ名は以下のとおり(構文
ハイライトがちゃんと機能していれば、"Ignore" 以外はそのグループに設定された色
で表示されるだろう):
*Comment o コメント
*Constant o 定数
String o 文字列定数: "これは文字列です"
Character o 文字定数: 'c', '\n'
Number o 数値定数: 234, 0xff
Boolean o ブール値の定数: TRUE, false
Float o 浮動小数点数の定数: 2.3e10
*Identifier o 変数名
Function o 関数名(クラスメソッドを含む)
*Statement o 命令文
Conditional o if, then, else, endif, switch, その他
Repeat o for, do, while, その他
Label o case, default, その他
Operator o "sizeof", "+", "*", その他
Keyword o その他のキーワード
Exception o try, catch, throw
*PreProc o 一般的なプリプロセッサー命令
Include o #include プリプロセッサー
Define o #define プリプロセッサー
Macro o Defineと同値
PreCondit o プリプロセッサーの #if, #else, #endif, その他
*Type o int, long, char, その他
StorageClass o static, register, volatile, その他
Structure o struct, union, enum, その他
Typedef o typedef宣言
*Special o 特殊なシンボル
SpecialChar o 特殊な文字定数
Tag o この上で CTRL-] を使うことができる
Delimiter o 注意が必要な文字
SpecialComment o コメント内の特記事項
Debug o デバッグ命令
*Underlined o 目立つ文章, HTMLリンク
*Ignore o (見た目上)空白, 不可視 |hl-Ignore|
*Error o エラーなど、なんらかの誤った構造
*Todo o 特別な注意が必要なもの; 大抵はTODO FIXME XXXなど
のキーワード
マーク(*)されている名前が優先グループ、その他はマイナーグループである。優先グ
ループには、"syntax.vim" によりデフォルトのハイライト手法が定義されている。マ
イナーグループは優先グループにリンクされ、リンクした先と同じハイライト手法にな
る。ファイル "syntax.vim" が読込まれた後でコマンド ":highlight" を使えば、その
デフォルトを上書することができる。
ハイライトグループ名には大文字小文字の区別がないことに注意。"String" と
"string" はどちらも同じグループを意味する。
以下の名前は予約されているのでグループ名として使用することはできない:
NONE ALL ALLBUT contains contained
*hl-Ignore*
Ignore グループを使うときは、conceal 機能も使うと便利かもしれない。
|conceal| 参照。
==============================================================================
3. 構文ファイル読込の手順 *syntax-loading*
ここではコマンド ":syntax enable" を実行した時に何が起こるかの詳細を説明する。
Vimは初期化の時に、ランタイムファイルの在り処を自動的に発見する。ここでは変数
|$VIMRUNTIME|にその場所が格納されているとする。
":syntax enable" と ":syntax on" では以下のことが起こる:
$VIMRUNTIME/syntax/syntax.vimを読込む
|
+- $VIMRUNTIME/syntax/nosyntax.vimを読込んで古い構文を削除する
|
+- 'runtimepath' からsyntax/synload.vimを読込む
| |
| +- 構文ハイライトの色を設定する。
| | カラースキームが定義されている場合は ":colors {name}" で再度読込む。
| | そうでない場合は ":runtime! syntax/syncolor.vim" が使用される。
| | ":syntax on" は既存の色設定を上書設定し、":syntax enable" はまだ設
| | 定されていないグループのみを設定する。
| |
| +- 適切な構文ファイルをオプション 'syntax' が設定される時に読込む自動
| | 実行コマンドを設定する。 *synload-1*
| |
| +- ユーザーによる追加ファイルを変数|mysyntaxfile|から読込む。これは
| Vim 5.xとの互換性のためだけに存在する。 *synload-2*
|
+- ":filetype on" を実行し ":runtime! filetype.vim" が実行される。これは
| 見つけることのできる全てのfiletype.vimを読込む。
| $VIMRUNTIME/filetype.vimは常に読込まれ、以下のことが実行される。
| |
| +- 拡張子に基づいてオプション 'filetype' を設定するオートコマンドをイ
| | ンストールする。これにより既知のファイル形式に付いて、ファイル名と
| | 当該形式との関連付けが成される。 *synload-3*
| |
| +- ユーザーによる追加ファイルを変数 *myfiletypefile* から読込む。これは
| | Vim 5.xとの互換性のためだけに存在する。 *synload-4*
| |
| +- ファイル形式が検出されなかった時にscripts.vimを読込むための自動実
| | 行コマンドをインストールする。 *synload-5*
| |
| +- 構文メニュー設定のため$VIMRUNTIME/menu.vimを読込む。 |menu.vim|
|
+- ファイル形式が検出された時にオプション 'syntax' を設定するための
| FileTypeオートコマンドを設定する。 *synload-6*
|
+- 既に読込まれているバッファに対して構文ハイライトを行うために、関連した
オートコマンドを実行する。
ファイルを読込む時には、Vimは以下のように関連した構文ファイルを見つける:
ファイルを読込むとBufReadPostオートコマンドが起動する。
|
+- |synload-3|(既知ファイル形式)か|synload-4|(ユーザー定義ファイル形式)の自
| 動実行コマンドがヒットした場合、オプション 'filetype' にそのファイル形
| 式名が設定される。
|
+- |synload-5|のオートコマンドが実行される。まだファイル形式が決定され
| ていない場合は、'runtimepath' からscripts.vimが検索される。これは常に
| 以下のことを行う$VIMRUNTIME/scripts.vimを読込む。
| |
| +- ユーザーによる追加ファイルを変数 *myscriptsfile* から読込む。これは
| | Vim 5.xとの互換性のためだけに存在する。
| |
| +- 未だにファイル形式が決定できない場合、ファイルの内容を検査する。検
| 査は "getline(1) =~ pattern" のように認識できるファイル形式かどう
| か行われ、認識できるならば 'filetype' を設定する。
|
+- ファイル形式が決定されて 'filetype' が設定された時に、上記|synload-6|
| のFileTypeオートコマンドが実行される。決定したファイル形式名がそれによ
| り 'syntax' へ設定される。
|
+- 上記でオプション 'syntax' が設定されると、|synload-1|(と|synload-2|)の
| 自動実行コマンドが実行される。これにより次のコマンドでメインとなる構文
| ファイルが 'runtimepath' から読込まれる。
| runtime! syntax/<name>.vim
|
+- ユーザーがインストールしたその他のFileTypeおよびSyntaxオートコマンドが
実行される。これは特定の構文のハイライトを変更するのに使うことができる。
==============================================================================
4. 構文ファイルの覚書 *:syn-file-remarks*
*b:current_syntax-variable*
Vimはロードした構文の名前を変数 "b:current_syntax" に記憶している。ある構文が
有効な場合だけある設定を行うにはこの変数が利用できる。例: >
:au BufReadPost * if b:current_syntax == "csh"
:au BufReadPost * do-some-things
:au BufReadPost * endif
2HTML *2html.vim* *convert-to-HTML*
これは構文ファイルではなくて、現在のウィンドウの内容をHTMLに変換するスクリプト
である。Vimは新しいウィンドウを作成しそこにHTMLファイルを構築する。
変換結果を保存すればブラウザーでそれを表示できる。Vim での表示と同じ色で表示さ
れるはずである。|g:html_line_ids| を有効化すると、ブラウザーのアドレスバーで
URL の末尾に (例えば) #L123 や #123 と付け加えることで、その行にジャンプできる。
また、|g:html_dynamic_folds| を有効化すると、Vim の折り畳みを表示したり隠したり
できる。
使う際にはオプション 'filetype' や 'syntax' に "2html" を設定してはならない!
現在のファイルをコンバートするためにはこのスクリプトを読込む: >
:runtime! syntax/2html.vim
<
2html.vim に影響する変数はたくさんある。下記参照。下記の on/off オプションは指
定された値を明示的に設定することで有効化/無効化できる。また、|:unlet| で変数を
削除することで初期設定に戻すことができる。
覚書き:
- いくつかの本当に古いブラウザーでは背景色が表示されないことがある。
- 大半のブラウザーでは(なんとカラーで)印刷することができる!
- このバージョンの TOhtml はおそらく古い Vim でも動作するが、例えば conceal サ
ポートのようないくつかの機能は動作しない。また、GUI サポート無しでコンパイル
された古い Vim では色がおかしくなるかもしれない。
例えば次の Unix シェルスクリプトですべての .c と .h ファイルを変換できる: >
for f in *.[ch]; do gvim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" $f; done
<
*g:html_start_line* *g:html_end_line*
変換の範囲を指定するには、|:TOhtml| コマンドに範囲を指定するか、
"g:html_start_line" と "g:html_end_line" に変換したい範囲の最初と最後の行を設
定する。例えば、最後に選択された範囲だけを変換するには: >
:let g:html_start_line = line("'<")
:let g:html_end_line = line("'>")
:runtime! syntax/2html.vim
<
*:TOhtml*
[range]TOhtml ":TOhtml" コマンドは標準プラグインで定義されている。
このコマンドは |2html.vim| を実行する。範囲が指定され
た場合は |g:html_start_line| と |g:html_end_line| をそ
の範囲に設定する。範囲省略時はファイル全体が対象とな
る。
もしカレントウィンドウが |diff| の一部で、
|g:html_diff_one_file| が設定されていない場合、:TOhtml
はカレントタブ内の diff を表示しているすべてのウィンド
ウを変換して <table> 要素で並べた HTML を生成する。
|g:html_line_ids| が有効なら、(例えば) #W1L42 で 1 番
目のウィンドウの 42 行目、#W3L87 で 3 番目の 87 行目に
ジャンプできる。
例: >
:10,40TOhtml " convert lines 10-40 to html
:'<,'>TOhtml " convert current/last visual selection
:TOhtml " convert entire buffer
<
*g:html_diff_one_file*
初期設定: 0
0 なら、|:TOhtml| を使うとカレントタブ内の |diff| を表示しているすべてのウィン
ドウが変換され、<table> 要素で並べられた HTML が生成される。
1 なら、カレントバッファのみが変換される。
例: >
let g:html_diff_one_file = 1
<
*g:html_whole_filler*
初期設定: 0
0 なら、もし |g:html_diff_one_file| が 1 なら、3 行以上の連続した詰め行は 3 行
で表示され、真ん中の行に挿入された行数の合計が表示される。
1 なら、|g:html_diff_one_file| が設定されていないときのように、常に挿入された
行が表示される。
*TOhtml-performance* *g:html_no_progress*
初期設定: 0
0 なら、2html.vim の変換過程の各段階で進行状況のプログレスバーをステータスライ
ンに表示する。
1 なら、プログレスバーを表示しない。若干スピードは速くなるが、変換がいつごろ終
わるかを知ることはできない。大きなファイルならとても時間がかかるのに!
例: >
let g:html_no_progress = 1
Vim を非対話で実行すれば、スクリプトでバッファやウィンドウなどを走査するごとに
表示を更新しなくてもよくなるので、速度はもっと速くなる: >
vim -E -s -c "let g:html_no_progress=1" -c "syntax on" -c "set ft=c" -c "runtime syntax/2html.vim" -cwqa myfile.c
<
Note -s フラグは .vimrc とプラグインの読み込みを抑制する。したがって、HTML 変
換に必要な設定などは明示的に読み込まなければならない。詳細は |-E| と |-s-ex|
を参照。このように各コマンドを指定して実行するよりは、上記の -c で設定している
ようなことがらをすべてスクリプトファイルに書き込み、-u フラグで読み込んで実行
するといいだろう。
*g:html_number_lines*
初期設定: 現在の 'number' の設定
0 なら、バッファのテキストは行番号なしで HTML に表示される。
1 なら、生成される HTML に行番号が付加される。色は Vim の行番号表示と同じ
(|hl-LineNr|)。
'number' がオフでも強制的に行番号を表示するなら: >
:let g:html_number_lines = 1
強制的に行番号を表示しないようにするなら: >
:let g:html_number_lines = 0
'number' の設定に従うように戻すには: >
:unlet g:html_number_lines
<
*g:html_line_ids*
初期設定: 1。|g:html_number_lines| が設定されていないときは 0。
この設定が 1 なら、各行番号に HTML の id 属性を付ける。行番号が表示されていな
いときは空の <span> 要素を挿入して id を付ける。この ID 属性は、HTML が単一の
バッファから生成されたときは L123 のような形になる。diff 表示から生成されたと
きは W2L123 のような形になる。これを使って (特定の diff ウィンドウの) 特定の行
にジャンプできる。指定された行にジャンプする前にその行の折り畳みを開くための
Javascript が挿入される (|g:html_dynamic_folds|)。javascript はウィンドウ ID
や行番号前の L を省略できる機能も提供する。
例: >
page.html#L123 単一バッファファイルの 123 行目にジャンプ
page.html#123 同上
diff.html#W1L42 diff の 1 番目のウィンドウの 42 行目にジャンプ
diff.html#42 同上
<
*g:html_use_css*
初期設定: 1
1 なら、CSS1 で装飾された HTML 4.01 準拠の HTML が生成される。最新のブラウザー
とほとんどの古いブラウザーでサポートされている。
0 なら、<font> タグで装飾された時代遅れの HTML が生成される。これは推奨されて
いないが、古いブラウザー、あるいはメーラーや掲示板の投稿など、CSS が使えない場
合には必要だろう。
例: >
:let g:html_use_css = 0
<
*g:html_ignore_conceal*
初期設定: 0
0 なら、Conceal されたテキストは HTML には表示されず、'conceallevel' の現在の
設定に応じて |:syn-cchar| や 'listchars' の文字が代わりに表示される。
1 なら、Conceal されていてもされていなくても、すべてのテキストが HTML に表示さ
れる。
次のコマンドでバッファ内のすべてのテキストを HTML に表示することができる (折り
畳まれてなければ): >
:let g:html_ignore_conceal = 1
:setl conceallevel=0
<
*g:html_ignore_folding*
初期設定: 0
0 なら、折り畳みで閉じられたテキストは Vim で折り畳み表示されているテキストに
置き換えられる (|fold-foldtext|)。Vim で折り畳みを開けるのと同じように、HTML
でも開けるようにしたい場合は |g:html_dynamic_folds| を参照。
1 なら、バッファのすべてのテキストを HTML に含める。テキストが折り畳まれている
かどうかは無視される。|g:html_dynamic_folds| は機能しない。
次のコマンドでバッファ内のすべてのテキストを HTML に表示することができる
(Conceal されてなければ): >
zR
:let g:html_ignore_folding = 1
<
*g:html_dynamic_folds*
初期設定: 0
0 なら、折り畳まれたテキストは HTML に含まれない。
1 なら、Vim の動作と同じように折り畳みを開いたり閉じたりするための、javascript
が生成される。
この変数を 1 に設定すると、|g:html_use_css| の設定に関わらず、2html.vim は常に
CSS を使うようになる。
この変数は |g:html_ignore_folding| が設定されているときは無視される。
>
:let g:html_dynamic_folds = 1
<
*g:html_no_foldcolumn*
初期設定: 0
0 なら、もし |g:html_dynamic_folds| が 1 なら、Vim の foldcolumn
(|fold-foldcolumn|) に似たテキストを生成する。ユーザーはそれをクリックすること
で折り畳みを開いたり閉じたりできる。生成されるテキスト幅の最小値は現在の
'foldcolumn' の設定で決まる。
1 なら、その列を生成しない。代わりに、マウスを折り畳みの上にもっていくことで折
り畳みが開くようになる (|g:html_hover_unfold| が設定されたときのように)。
>
:let g:html_no_foldcolumn = 1
<
*TOhtml-uncopyable-text* *g:html_prevent_copy*
初期設定: 空文字列
このオプションは、例えば生成された HTML をブラウザーで開いて全体を選択してコ
ピーしたときに、特定の範囲がコピーされないようにできる。これは foldcolumn や行
番号が表示されていても、ソーステキストのみコピーできるようにしたい場合に便利で
ある。範囲の指定は次のようにする:
f: foldcolumn
n: 行番号 (折り畳みテキスト内のも)
t: 折り畳みテキスト
d: 差分詰め文字
例えば、foldcolumn と行番号をコピーできないようにするには: >
:let g:html_prevent_copy = "fn"
<
この機能は現在、コピー抑制エリアに読み込み専用の <input> 要素を挿入することで
実装されている。これはすべての場合で機能するわけではない。他の、HTML を解釈す
るアプリケーションにペーストすると、<input> 要素もペーストされる。しかしプレー
ンテキストとしてのペーストなら常に機能するだろう。
*g:html_no_invalid*
初期設定: 0
0 なら、もし |g:html_prevent_copy| が空でなければ、コピー抑制エリアのための
<input> エレメントに不正な属性が意図的に挿入される。これによって、<input> 要素
がペーストされてしまうような場合でもいくつかのアプリケーションは対応可能とな
る。特に、Microsoft Word は不正な属性を持つ <input> 要素をペーストしない。
1 なら、不正な属性は挿入されない。正しいページが生成される。ただ
し、|g:html_prevent_copy| が空でないときに、Microsoft Word にペーストするには
注意が必要である。<input> 要素がペーストされないようにするのは困難だ。
*g:html_hover_unfold*
初期設定: 0
0 なら、2html.vim で |g:html_dynamic_folds| 付きで生成された HTML の折り畳みを
開く方法は、生成された折り畳み列をクリックする方法だけになる。
1 なら、CSS 2.0 を使って、マウスを折り畳みの上にもっていくことで折り畳みを開け
るようにする。javascript を無効にしていても折り畳みを開けるようにしたい場合に
便利である。
Note 古いブラウザー (特に Internet Explorer 6) はこの機能をサポートしていない。
通常の CSS1 を使った IE6 用のマークアップが挿入され、IE6 でも表示できるように
はなっているが、foldcolumn がないとそれを開くことはできない。
>
:let g:html_hover_unfold = 1
<
*g:html_id_expr*
初期設定: ""
動的折り畳みや行 ID によるジャンプが機能するにはドキュメント内における一意の
ID が必要である。例えば生成された HTML を他のドキュメント内にコピーしたりする
と、その ID は一意性が保証されなくなる。g:html_id_expr に式が設定されている
と、Vim は一意な文字列を得るためにその式を評価して、ドキュメント内で使用される
ID に付加する。その完全な ID であれば、他のドキュメントにコピーされた場合でも
一意に定めることができる。例えば、 _ とバッファ番号を ID に付加するには: >
:let g:html_id_expr = '"_".bufnr("%")'
<
ID の末尾に "_mystring" を付加するには: >
:let g:html_id_expr = '"_mystring"'
<
NOTE: diff ビューを HTML に変換するときは、この式は diff の 1 番目のウィンドウ
に対してのみ評価される。そしてその結果は他のすべてのウィンドウに対して使用され
る。
*TOhtml-wrap-text* *g:html_pre_wrap*
初期設定: 現在の 'wrap' の設定
0 なら、もし |g:html_no_pre| が 0 または未設定なら、生成された HTML のテキスト
はブラウザーの端で折り返されない。
1 なら、もし |g:html_use_css| が 1 なら、CSS 2.0 の "white-space:pre-wrap" が
使われ、テキストはブラウザーの端で折り返される。
明示的に折り返しを有効にするには: >
:let g:html_pre_wrap = 1
明示的に折り返しを無効にするには: >
:let g:html_pre_wrap = 0
初期設定に戻し、'wrap' の設定が反映されるようにするには: >
:unlet g:html_pre_wrap
<
*g:html_no_pre*
初期設定: 0
0 なら、テキストは <pre>...</pre> タグで囲まれる。スペース文字の連続はそのまま
Vim 内での表示と同じように表示され、タブ文字もそのまま含むことができる
(|g:html_expand_tabs| 参照)。
1 なら (非推奨)、<pre> タグは使われず、代わりに <div> タグが使われる。スペース
文字は 文字参照に変換され、改行には <br> が使われる。これは HTML で折り
返し (|g:html_pre_wrap|) をするためのもう一つの方法で、古いブラウザーでも動作
するが、Vim の表示とは違うページが生成されるかもしれない。
>
:let g:html_no_pre = 1
<
*g:html_expand_tabs*
初期設定: 'tabstop' が 8 で 'expandtab' が 0 で foldcolumn と行番号がない場合
は 1。
そうでない場合は 0。
0 なら、<Tab> 文字は同等のスペース文字、または (|g:html_no_pre| が 1 の
場合) に置換される。
1 なら、もし |g:html_no_pre| が 0 または未設定なら、<Tab> 文字はそのまま HTML
に出力される。これはブラウザーで表示したときに、もとのテキストのままコピー &
ペーストできるようにしたい場合に便利である。Note これはテキストの整列やインデ
ントが崩れやすい (初期設定として設定された場合は別)。
強制的に <Tab> 文字を維持したい場合は: >
:let g:html_expand_tabs = 0
<
強制的にタブ文字を展開したい場合は: >
:let g:html_expand_tabs = 1
<
*TOhtml-encoding-detect* *TOhtml-encoding*
ウェブサーバーにコンテンツを置くような場合は、使用したいエンコーディング名を
|g:html_use_encoding| で指定することを強く推奨する。
エンコーディングが指定されていない場合は、'fileencoding' が設定されていれば
'fileencoding' の値から、設定されていなければ 'encoding' の値から、適切な IANA
名が使用される。特定の 'buftype' に対しては 'encoding' が常に使用される。
'fileencoding' は選択されたドキュメントエンコーディングに合うように設定され
る。
自動設定は |encoding-names| に挙げられたエンコーディング名に対して機能するが、
TOhtml は多くのブラウザーでサポートされているエンコーディングのみ自動設定する。
自動設定の対象外のエンコーディングを使用したい場合は明示的にそれを設定すること
ができる (下記オプション参照)。IANA 名については
http://www.iana.org/assignments/character-sets を参照。
Note 初期設定ではすべての Unicode エンコーディングは BOM なし UTF-8 として
HTML 生成される (W3C 推奨):
http://www.w3.org/International/questions/qa-choosing-encodings
http://www.w3.org/International/questions/qa-byte-order-mark
*g:html_use_encoding*
初期設定: なし。上述のとおり、'fileencoding' の値に応じて IANA 名が使われる。
文字セットの自動設定を上書きするには、g:html_use_encoding に使用したい文字セッ
トの名前を設定する。ウェブサーバーに上げるような場合には、UTF-8 のような広くサ
ポートされている文字セットを設定することが推奨される: >
:let g:html_use_encoding = "UTF-8"
文字セット指定の行を含めたくない場合は g:html_use_encoding に空文字を設定する
(非推奨): >
:let g:html_use_encoding = ""
自動的に判断する設定に戻すには変数 |g:html_use_encoding| を削除する: >
:unlet g:html_use_encoding
<
*g:html_encoding_override*
初期設定: なし。|encoding-names| で挙げられているエンコーディングに対しては
autoload/tohtml.vim で既定の変換が定義されている。
自動設定されない文字セットを |g:html_use_encoding| で明示的に設定したときに、
それに対応する 'fileencoding' を指定することができる。
これは文字セット-エンコーディング組の辞書で、TOhtml が使用する組を置き換えたり
追加したりできる。
例えば HTML 文字セットの "windows-1252" を "8bit-cp1252" エンコーディングに対
応させるなら: >
:let g:html_encoding_override = {'windows-1252': '8bit-cp1252'}
<
*g:html_charset_override*
初期設定: なし。|encoding-names| で挙げられているエンコーディングに対しては
autoload/tohtml.vim で既定の変換が定義されている。それは多くの
ブラウザーでサポートされている。
|2html.vim| が 'fileencoding' や 'encoding' から適切な HTML 文字セットを自動的
に決定できない場合に設定する。既定のエンコーディング-文字セット組を上書きする
こともできる。例えば、TOhtml はすべての Unicode/UCS エンコーディングに対しては
UTF-8 を使用するが、代わりに UTF-16 や UTF-32 を使うようにするには次のように設
定する: >
:let g:html_charset_override = {'ucs-4': 'UTF-32', 'utf-16': 'UTF-16'}
Note: UTF-32 か UTF-16 でエンコードされたドキュメントはいくつかのメジャーブラ
ウザーで互換性の問題があることが知られている。
*g:html_font*
初期設定: "monospace"
g:html_font を使って1つないしは複数のフォントを変換されたドキュメントに対して
指定できる。このオプションに文字列を設定した場合はシングルクォートで囲まれる。
またオプションにリストを設定した場合は全てのリストアイテムがシングルクォートで
囲まれ、リストはコンマで結合される。どちらの場合でも、一般的なフォントファミ
リ名、(CSSを使っての)フォントファミリ名、(CSSを使わない場合の)フォントフェイ
ス名を補う為に "monospace" が追加される。
例: >
" font-family: 'Consolas', monospace;
:let g:html_font = "Consolas"
" font-family: 'DejaVu Sans Mono', 'Consolas', monospace;
:let g:html_font = ["DejaVu Sans Mono", "Consolas"]
<
*convert-to-XML* *convert-to-XHTML* *g:html_use_xhtml*
初期設定: 0
0 なら、標準 HTML 4.01 を生成する (可能なら strict)。
1 なら、XHTML 1.0 を生成する (XML 準拠の HTML)。
>
:let g:html_use_xhtml = 1
<
ABEL *abel.vim* *ft-abel-syntax*
ABELのハイライトにはユーザーが定義できるオプションが幾つかある。それらを有効化
するにはそれぞれの変数に何か値を設定すれば良い。例: >
:let abel_obsolete_ok=1
無効化するには ":unlet" を使用する。例: >
:unlet abel_obsolete_ok
変数 ハイライト ~
abel_obsolete_ok 古いキーワードをエラーでなく命令文として扱う
abel_cpp_comments_illegal '//' をインラインコメントリーダーとして扱わない
ADA
|ft-ada-syntax|を参照。
ANT *ant.vim* *ft-ant-syntax*
ANTの構文ファイルにはデフォルトでJavaScriptとPythonの構文ハイライトが含まれて
いる。関数AntSyntaxScript()の第1引数にタグ名を、第2引数にファイル名を指定する
ことでその他のスクリプト言語用構文ハイライトをインストールすることができる。
例: >
:call AntSyntaxScript('perl', 'perl.vim')
これは次のようなANTのコードにPerlの構文ハイライトをインストールするものである >
<script language = 'perl'><![CDATA[
# everything inside is highlighted as perl
]]></script>
スクリプト言語を永続的にインストールするには|mysyntaxfile-add|を参照。
APACHE *apache.vim* *ft-apache-syntax*
apacheの構文ファイルはApache HTTPサーバーのバージョンに基づいた構文ハイライト
を提供する(デフォルトでは1.3.x)。他のバージョン用の構文ハイライトを利用するに
は "apache_version" にApacheのバージョンを文字列としてセットする。例: >
:let apache_version = "2.0"
<
*asm.vim* *asmh8300.vim* *nasm.vim* *masm.vim* *asm68k*
アセンブリ言語 *ft-asm-syntax* *ft-asmh8300-syntax* *ft-nasm-syntax*
*ft-masm-syntax* *ft-asm68k-syntax* *fasm.vim*
"*.i" にマッチする名前のファイルのタイプはProgressかアセンブリである。自動検出
が動作しない場合や、Progressを編集しないことが判っている場合には、起動設定ファ
イルvimrcに次のコマンドを書くことができる: >
:let filetype_i = "asm"
"asm" には使用するアセンブリ言語の種類を指定する。
同じ拡張子を使用しているアセンブリ言語はたくさんある。そのため、ユーザーは自分
が使っている種類を選択するか、もしくはアセンブリファイルそのものにVimがそれ
と判断できるような行を追加しなければならない。現在は以下の構文ファイルが利用
可能:
asm GNUアセンブラ(デフォルト)
asm68k モトローラ680x0アセンブラ
asmh8300 日立H-8300用GNUアセンブラ
ia64 インテルItanium 64
fasm Flat アセンブラ (http://flatassembler.net)
masm マイクロソフトアセンブラ(たぶん80x86汎用)
nasm ネットワイドアセンブラ
tasm ターボアセンブラ(80x86,Pentium,MMXの命令コードを含む)
pic PICアセンブラ(現在はPIC16F84用)
アセンブリファイルに次のような行を書き加えるのが一番柔軟である: >
asmsyntax=nasm
ここで、"nasm" は実際に使用するアセンブリ構文の名前に置き換えること。この記
述はファイルの先頭 5 行以内に書いてなければならない。この文字列の前後に非空
白文字があってはならない。Note asmsyntax=foo を指定するのはモードライン
(|modeline|) で ft=foo と設定するのと同じであり、設定がぶつかったときはモード
ラインの設定が先に処理される (特に、例えばモードラインで ft=asm と設定すると、
asmsyntax があっても GNU 構文強調表示が使われることになる)。
構文の種類はバッファ変数b:asmsyntaxを設定することで常にそちらが優先される: >
:let b:asmsyntax = "nasm"
自動にしろ手動にしろb:asmsyntaxが設定されていないときには、グローバル変数
asmsyntaxが使用される。これによりデフォルトのアセンブリ言語を設定することがで
きる: >
:let asmsyntax = "nasm"
最後の手段として、何も設定されていない場合には、"asm" 構文が使用される。
ネットワイドアセンブラ(nasm.vim)の補助ハイライト ~
機能を有効化するには: >
:let {variable}=1|set syntax=nasm
無効化するには: >
:unlet {variable} |set syntax=nasm
変数 ハイライト内容 ~
nasm_loose_syntax 非オフィシャルな拡張構文をエラーとしない
(パーサー依存; 非推奨)
nasm_ctx_outside_macro マクロ外のコンテキストをエラーとしない
nasm_no_warn 潜在的に危険な構文をToDoとしてハイライトしない
ASPPERL and ASPVBS *ft-aspperl-syntax* *ft-aspvbs-syntax*
*.aspと*.asaという名のファイルはどちらもPerlもしくはVisual Basicのスクリプトた
りえる。Vimにとってこれを判別するのは難しいので、グローバル変数を設定すること
でどちらを使用するのか宣言することができる。どちらでもPerlスクリプトを使用する
なら: >
:let g:filetype_asa = "aspperl"
:let g:filetype_asp = "aspperl"
Visual Basicを使用するなら次のように設定する: >
:let g:filetype_asa = "aspvbs"
:let g:filetype_asp = "aspvbs"
BAAN *baan.vim* *baan-syntax*
baan.vim は リリース BaanIV から SSA ERP LN まで、3 GL と 4 GL プログラミング
両方に対応した構文を定義している。たくさんの標準的な定義/定数がサポートされて
いる。
次を |.vimrc| に書いておくと、ある種のコーディング標準違反を教えてくれる: >
let baan_code_stds=1
*baan-folding*
以下の変数によって、様々なレベルで構文折り畳みを有効にできる (これらはユーザー
の |.vimrc| で設定すること)。ソースブロックと SQL についてより複雑な折り畳みを
行うと CPU に負荷がかかる。
折り畳みを有効にし、関数レベルで折り畳みをするにはこうする: >
let baan_fold=1
次の設定を行うと、if, while, for ... のようなソースブロックレベルの折り畳みが
有効になる。キーワード begin/end の前のインデントが等しくなければならない (ス
ペースとタブは異なるとみなされる)。 >
let baan_fold_block=1
次を設定すると SELECT, SELECTDO, SELECTEMPTY ... のような埋め込み SQL ブロック
の折り畳みが有効になる。キーワード begin/end の前のインデントが等しくなければ
ならない (スペースとタブは異なるとみなされる)。 >
let baan_fold_sql=1
Note: ブロック折り畳みを有効にすると、小さな折り畳みがたくさんできるかもしれな
い。|.vimrc| でオプション 'foldminlines' と 'foldnestmax' を |:set| するか、
.../after/syntax/baan.vim 内で |:setlocal| をする (|after-directory| を参照)
とよいかもしれない。例: >
set foldminlines=5
set foldnestmax=6
BASIC *basic.vim* *vb.vim* *ft-basic-syntax* *ft-vb-syntax*
Visual Basicも「通常の」BASICも、どちらも拡張子には ".bas" が使用される。どち
らが使用されているか判別するのに、Vimはファイルの先頭5行以内に "VB_Name" とい
う文字列が存在するかどうかを検査する。存在しなければ、ファイル形式は "basic"
となり、そうでなければ "vb" となる。拡張子が ".frm" のファイルは常にVisual
Basicとして扱われる。
C *c.vim* *ft-c-syntax*
Cには幾つかの補助的なハイライト方法がある。それらを有効化するには対応した変数
に値を設定する。例: >
:let c_comment_strings = 1
これを無効化するには ":unlet" を使う。例: >
:unlet c_comment_strings
変数 ハイライト内容 ~
*c_gnu* GNU gcc固有の要素
*c_comment_strings* コメント内の文字列と数値
*c_space_errors* 行末の空白文字とタブ文字前のスペース文字
*c_no_trail_space_error* ... 但し行末の空白文字は除外
*c_no_tab_space_error* ... 但しタブ文字前のスペース文字は除外
*c_no_bracket_error* []の中の{}をエラーとして表示しない
*c_no_curly_error* { と } が第1桁にあるときを除き、[] と () の内側の {}
をエラーとして表示しない。
デフォルトでエラーとして表示される。欠落した ")" を見
つけられないため。
*c_curly_error* 対応する { がない } をハイライトする。これを有効にする
と、ファイルの先頭から同期が始まるため、遅くなる
*c_no_ansi* ANSI標準の型と定数をハイライトしない
*c_ansi_typedefs* ... 但し標準ANSI型はハイライトする
*c_ansi_constants* ... 但し標準ANSI定数はハイライトする
*c_no_utf* 文字列中の\uと\Uをハイライトしない
*c_syntax_for_h* ファイル *.h に C++ ではなく C の構文を適用し、objcpp
ではなく objc の構文を適用する。
*c_no_if0* "#if 0" のブロックをコメントとしてハイライトしない
*c_no_cformat* 文字列中の "%" によるフォーマットをハイライトしない
*c_no_c99* C99の標準アイテムをハイライトしない
*c_no_c11* C11の標準アイテムをハイライトしない
*c_no_bsd* BSD 特有の型をハイライトしない
'foldmethod' が "syntax" に設定されていると、/* */ のコメントと { } のブロック
が折り畳まれる。コメントを折り畳みたくなければこのようにする: >
:let c_no_comment_fold = 1
"#if 0" のブロックも同様に折り畳まれる。折り畳みたくなければこのようにする: >
:let c_no_if0_fold = 1
上方向にスクロールしているときにハイライト表示がおかしくなり、それが<CTRL-L>で
再描画すると直るようなら、内部変数 "c_minlines" にもっと大きな値を設定すれば解
決できるかもしれない: >
:let c_minlines = 100
これにより構文判定のシンクロナイズ位置が表示開始行の100行手前に設定される。初
期設定の値は50行(c_no_if0を使用した場合は15行)である。ただしこれには、大きな値
を設定すると再描画が遅くなるという短所がある。
"#if 0" / "#endif" のブロックをコメントとしてハイライトしている場合には、
"#if 0" がウィンドウのトップから "c_minlines" 以内にある時にしか正しく動作しな
いことに注意する。長い "#if 0" のブロックを使用した場合には、それは正しくハイ
ライトされない。
コメント内で追加要素にマッチを行うには、クラスタcCommentGroupを使用する。
例: >
:au Syntax c call MyCadd()
:function MyCadd()
: syn keyword cMyItem contained Ni
: syn cluster cCommentGroup add=cMyItem
: hi link cMyItem Title
:endfun
ANSIの定数はグループ "cConstant" でハイライトされる。これには "NULL", "SIG_IGN"
やその他のものが含まれる。しかしANSI標準でないもの、例えば "TRUE" は含まれな
い。もしもこれが紛らわしいならば、cConstant用のハイライトを削除する: >
:hi link cConstant NONE
文法上エラーではないはずの '{' と '}' がエラーとしてハイライトされてしまう場合
には、cErrInParen及びcErrInBracketのハイライトをリセットする。
Cファイルで折り畳みをするには、以下の行を 'runtimepath' 中の "after" ディレク
トリ内のファイルに加えるとよい。Unixなら~/.vim/after/syntax/c.vimに加えるとよ
いだろう: >
syn sync fromstart
set foldmethod=syntax
CH *ch.vim* *ft-ch-syntax*
C/C++ インタープリター。Ch は C に似た構文ハイライトを持ち、C の構文ファイルに
基づいている。C で利用できる設定については |c.vim| を参照。
変数を設定すれば、*.h ファイルに対して C, C++ でなく Ch の構文を使うようにする
ことができる: >
:let ch_syntax_for_h = 1
CHILL *chill.vim* *ft-chill-syntax*
Chillの構文ハイライトはCに似ている。設定に関しては|c.vim|を参照。それに加えて
次のものがある:
chill_space_errors c_space_errors と同様
chill_comment_string c_comment_strings と同様