-
Notifications
You must be signed in to change notification settings - Fork 65
/
Copy pathoptions.jax
9902 lines (8978 loc) · 580 KB
/
options.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
*options.txt* For Vim バージョン 9.1. Last change: 2025 Mar 12
VIMリファレンスマニュアル by Bram Moolenaar
オプション *options*
1. オプションの設定 |set-option|
2. オプションの自動設定 |auto-setting|
3. オプションの要約 |option-summary|
オプションの概要については、quickref.txt |option-list| を参照。
Vimには、特別な働きをさせるための多くの内部変数とスイッチがある。それらのオプ
ションには3種類ある。
*boolean* *toggle*
切替 boolean オプション オンかオフかのどちらかの値をとる
数値 number オプション 数値の値を取る
文字列 string オプション 文字列の値を取る
{訳注: このヘルプの中で多く出てくる語句で、分かりにくいものを説明する。
- ローカルな:
あるバッファまたはウィンドウにのみ適用されるような、という意味。
- ローカルオプション:
あるバッファまたはウィンドウ内の設定のみを変え、その他のバッファまたは
ウィンドウの設定に影響しないようなオプション。
- ウィンドウについてローカルな:
あるウィンドウにのみ適用されるような、という意味。バッファについてロー
カルな、も同様な意味を持つ。
- グローバルな:
Vim全体に適用されるような、または、Vim全体で共通の値を使うような、とい
う意味。
上の4項目については |option-summary| も参照。
- non-printable, unprintable:
文字が画面に表示可能なフォントに対応していないこと。具体的には <CTRL>
などを押しながら入力した文字や <ESC> が例である。主に制御に利用される。
訳語で、さらに相応しいものがあればご提案を下さい。}
==============================================================================
1. オプションの設定 *set-option* *E764*
*:se* *:set*
:se[t][!] 既定値と違う値のオプションを全て表示する。
[!] がある場合、それぞれのオプションは独立した行に表示
される。
:se[t][!] all ターミナルオプション以外の全てのオプションを表示する。
[!] がある場合、それぞれのオプションは独立した行に表示
される。
:se[t] termcap ターミナルオプションを全て表示する。Note GUIバージョン
では、キーコードは表示されないので注意。なぜなら、キー
コードは内部的に生成され、変更が不可能だからだ。それに、
GUIバージョンでターミナルコードを変更するのは便利とは
言えない...
オプションの形式は t_AB である。|terminal-options| を
参照。
:se[t]! termcap 同様だが、複数列を使用しない。
*E518* *E519*
:se[t] {option}? {option} の値を表示する。
:se[t] {option} 切替オプション: セット、すなわちオンに切り替える。
数値オプション: 値を表示する。
文字列オプション: 値を表示する。
:se[t] no{option} 切替オプション: リセット、すなわちオフに切り替える。
*:set-!* *:set-inv*
:se[t] {option}! または
:se[t] inv{option} 切替オプション: オンとオフを切り替える。
*:set-default* *:set-&* *:set-&vi* *:set-&vim*
:se[t] {option}& オプションを既定値に設定する。オプション 'compatible'
のその時点の値によって違うかもしれない。
:se[t] {option}&vi オプションをViの既定値に設定する。
:se[t] {option}&vim オプションをVimの既定値に設定する。
:se[t] all& 全てのオプションを既定値に設定する。ただし以下のオプ
ションについては変更しない。
t_ で始まる端末用のオプション全部
'columns'
'cryptmethod'
'encoding'
'key'
'lines'
'term'
'ttymouse'
'ttytype'
警告: これにはたくさんの副作用があるだろう。
*:set-args* *:set=* *E487* *E521*
:se[t] {option}={value} または
:se[t] {option}:{value}
数値および文字列オプションの値を {value} に設定する。
数値オプションの値は、10進数、(0x を頭に付けて) 16進数、
または ('0' か '0o' を頭に付けて) 8進数で指定できる。
オプション 'wildchar' で指定された文字 (既定では
<Tab>、オプション 'compatible' がオンならば CTRL-E)
を打ち込むと、古い値を挿入できる。固定された構文と名前
を持つ多くの文字列オプションは、既知の値の補完もサポー
トしている。|cmdline-completion| と
|complete-set-option| を参照。
{option} と '=' の間には空白を入れることができる。それ
らは無視される。'=' と {value} の間に空白を入れてはい
けない。
{value} 内での空白や '\' の使用に関しては、
|option-backslash| を参照 {訳注: 文書先頭も参照}。
:se[t] {option}+={value} *:set+=*
数値オプションに対しては {value} だけその値を増す。文
字列オプションに対しては後ろに {value} を追加する。オ
プションがコンマ区切りのリストのときは、値が空でない限
り、元の値と {value} の間にコンマが付け加えられる。
オプションがフラグのリストであるときは、冗長なフラグは
取り除かれる。すでに入っているフラグを加えようとしたと
きは、そのオプションの値は変わらない。
上の |:set-args| も参照。
:se[t] {option}^={value} *:set^=*
数値オプションに対してはその値を {value} 倍する。文字
列オプションに対しては前に {value} を追加する。オプショ
ンがコンマ区切りのリストのときは、{value} と元の値の間
にコンマが付け加えられる。
上の |:set-args| も参照。
:se[t] {option}-={value} *:set-=*
数値オプションに対しては {value} だけその値を減らす。
文字列オプションに対しては {value} を (それが含まれて
いたら) 取り除く。
そのとき {value} が含まれていなくても、警告やエラーは
出ない。オプションがコンマ区切りのリストであり、取り除
くオプションが唯一の値でない限り、間のコンマも削除され
る。
オプションがフラグのリストであるときは、{value} は値の
中に現れるままに、正確に指定しなければならない。問題が
起こるのを避けるために、フラグを取り除くときは1個ずつ
指定すること。
コンマで区切られたリストやフラグのリストにある個々の値
は、'wildchar' をタイプすることで挿入できる。
|complete-set-option| を参照のこと。
上の |:set-args| も参照。
1回のコマンド ":set" に対し、複数の {option} を引数に指定できる。例: >
:set ai nosi sw=3 ts=3
引数の中にエラーがあると、エラーメッセージが現れ、エラーの元になったオプション
以降は無視される。
*:set-verbose*
オプション 'verbose' の値が非0 なら、オプションの値を表示するとき、同時に、そ
のオプションが最後に設定されたのはどこであったかも分かる。例: >
:verbose set shiftwidth cindent?
< shiftwidth=4 ~
Last set from modeline line 1 ~
cindent ~
Last set from /usr/local/share/vim/vim60/ftplugin/c.vim line 30 ~
これは特定のオプション名が指定されたときのみ機能する。コマンド ":set all" や、
引数のないコマンド ":verbose" ではメッセージが現れない。
オプションが手動で設定されていると、メッセージ "Last set" は現れない。
オプションが関数やユーザーコマンド、自動コマンド autocommand の実行中に設定さ
れたときは、それらが定義されているスクリプト名が報告される。
Note 'compatible' を設定すると副作用として他のオプションも設定されることがあ
る。
以下のような特殊なメッセージがある:
Last set from modeline line 1 ~
モードライン |modeline| の中でオプションが設定された。
Last set from --cmd argument ~
コマンドライン引数 |--cmd| または + によりオプションが設定され
た。
Last set from -c argument ~
コマンドライン引数 |-c|, +, |-S|, |-q| によりオプションが設定
された。
Last set from environment variable ~
環境変数、$VIMINIT、$GVIMINIT、$EXINIT によりオプションが設定
された。
Last set from error handler ~
オプションを評価中にエラーが発生し、クリアされた。
{|+eval| 機能付きでコンパイルされたときのみ有効}
*:set-termcap* *E522*
Termcap オプションを設定するには、{option} に "t_xx" の形式を使ってもよい。こ
れは termcap による値を上書きする。これはマッピングの中で利用することもできる。
"xx" の部分が特別な文字を含むときは、<t_xx> の形式を使うこと: >
:set <t_#4>=^[Ot
これは特殊なコードを普通のキーに変換する際にも使われる。例えば Alt-b が <Esc>b
を出力するなら、次のようにすること: >
:set <M-b>=^[b
(ここで ^[ は本物の <Esc> である。入力には CTRL-V <Esc> を使うこと)
マッピングの利点は、どんなときにも機能することである。
キーコードを定義することができる。例: >
:set t_xy=^[foo;
未知のキーコード名を使っても警告は表示されない。これらのキーコードに対してマッ
プを定義できる: >
:map <t_xy> something
< *E846*
キーコードが設定されていない場合、それは存在しないのと同じである。その値を取得
しようとするとエラーになる: >
:set t_kb=
:set t_kb
< E846: Key code not set: t_kb ~
セキュリティ上の理由から、t_xx 形式のオプションを |modeline| または |sandbox|
内で設定することはできない。
コマンド ":set" によるリスト表示の外見は、Viとは違う。長い文字列オプションはリ
ストの終わりに現れる。オプションの数も極めて多い。コマンド "set all" による表
示は、画面に収まらないだろう。そうしたとき、Vimは「継続」プロンプト
|more-prompt| を出す。
*option-backslash*
文字列オプションの値に空白を含めるには、空白の前に '\' を置く必要がある。値に
'\' を含めるには、2個繰り返す。結果的には、オプションの値の中の '\' の数は半分
になる (端数は切り捨て)。
オプション 'path', 'cdpath', および 'tags' では、オプションがコンマかスペース
で区切られるバージョン 3.0 との互換性のために、スペースの前にバックスラッシュ
を 3 つ置く必要がある。
'backupdir' や 'tags' のようなコンマで区切られたオプションでは、コンマを 2 つ
のバックスラッシュでエスケープする必要があるが、'makeprg' のようなコンマで区切
られていないオプションでは必要ない。
|:let| や |literal-string| を使ってオプションを設定する場合は、バックスラッシュ
を 1 つ少なくする必要がある。
例をいくつか挙げる: >
:set makeprg=make\ file 結果は "make file"
:let &makeprg='make file' (同上)
:set makeprg=make\\\ file 結果は "make\ file"
:set tags=tags\ /usr/tags 結果は "tags" と "/usr/tags"
:set tags=tags\\\ file 結果は "tags file"
:let &tags='tags\ file' (同上)
:set makeprg=make,file 結果は "make,file"
:set makeprg=make\\,file 結果は "make\,file"
:set tags=tags,file 結果は "tags" と "file"
:set tags=tags\\,file 結果は "tags,file"
:let &tags='tags\,file' (同上)
文字 "|" によって、コマンド ":set" を後に続くコマンドと分けることができる。文
字列オプションの値に "|" を含めるには、代わりに "\|" を使うこと。次の例ではオ
プション 'titlestring' の値を "hi|there" に設定している: >
:set titlestring=hi\|there
しかし次の例では、2個のオプション 'titlestring', 'iconstring' をそれぞれ "hi",
"there" に設定している: >
:set titlestring=hi|set iconstring=there
また、旧来のスクリプトではダブルクォート文字はコメントを開始する。オプションの
値に '"' を含めるには '\"' と書くこと。次の例は 'titlestring' を 'hi "there"'
に設定する: >
:set titlestring=hi\ \"there\"
|Vim9| script ではもっとシンプルで、コメントは '#' 文字で始まり、かつ前に空白
文字があるときだけである。バックスラッシュが必要になる頻度は少なくなる: >
vim9script
set titlestring=hi\ "there"
set titlestring=hi#there#
set titlestring=hi\ \#there#
Win32では、ファイル名の中の '\' は大抵は取り除かれない。正確に言うと、値にファ
イル名を取るオプション (環境変数が展開されるもの) では、通常のファイル名に使わ
れる文字の前の '\' は取り除かれない。しかし、特別な文字 (空白、'\' そのもの、
コンマ等) の前の '\' は、上で説明した通りの働きをする。
オプションの値が "\\" で始まるときは、特別な状態になる: >
:set dir=\\マシン名\パス の結果は "\\マシン名\パス"
:set dir=\\\\マシン名\\パス の結果は "\\マシン名\パス"
:set dir=\\パス\\ファイル の結果は "\\パス\ファイル" (間違い!)
最初の例では、始まりの部分の '\' はそのまま保たれている。しかし2番目の例では、
'\' の数は半分になっている。つまり、'\' をそのまま保ちたいときでも、半分にした
いときでも、どちらがよいか指定できることが分かる。3番目の結果は、おそらく希望
通りのものではないだろう。このやり方は避けること。
*add-option-flags* *remove-option-flags*
*E539* *E550* *E551* *E552*
値がフラグのリストからなるオプションもある。そういったオプションにフラグを追加
したいとき、既存の値を変更したくないならば、こうすること: >
:set guioptions+=a
オプションからフラグを取り除くには、こうすること: >
:set guioptions-=a
これはオプション 'guioptions' からフラグ 'a' を取り除く。
Note フラグは1個ずつ追加したり取り除いたりするよう注意。オプション
'guioptions' が "ab" という値であるとき、"set guioptions-=ba" は機能しない。な
ぜなら、"ba" という文字列は現れていないからである。
*:set_env* *expand-env* *expand-environment-var*
特定の文字列オプションでは環境変数が展開される。'$' とそれに続く環境変数名が、
その値に置き換えられる (その環境変数が存在するとき)。環境変数が存在しないとき、
'$' とそれに続く変数名は変更を受けない。識別子に使えない non-id 文字 (英字、数
字、'_' 以外) なら、どれでも環境変数名の後に続けることができる。識別子に使えな
い文字とそれに続く文字は、環境変数の値の後ろにそのまま追加される。例: >
:set term=$TERM.new
:set path=/usr/$INCLUDE,$HOME/include,.
コマンド ":set opt-=値" でオプションから文字列を取り除いたり、コマンド ":set
opt+=値" でオプションに文字列を追加したりするときには、環境変数の展開が行われ
てからそうした操作がなされる。
ローカルオプションの扱い *local-options*
Note: 以下は |global-local| オプションにも適用される。
いくつかのオプションは、1つのウィンドウや1つのバッファのみに適用される。それぞ
れのウィンドウやバッファは、そうしたオプションの独自のコピーを保持しているため、
独自の値を持つことができる。これにより、あるウィンドウ内では 'list' オプション
をオンにするが、他のウィンドウではオフにする、ということが可能になる。またオプ
ション 'shiftwidth' を、あるバッファ内では 3 にし、他では 4 にすることもできる。
以降では、特定の状況下でそれらのローカルオプションがどうなるかを説明する。実際
には、それらを全て知る必要はない。なぜなら、Vimはおそらくユーザーが予想する通
りにオプションの値を使うからである。残念ながら、ユーザーの予想通りに働くのは、
いくらか複雑なことである...
ウィンドウを分割すると、ローカルオプションは新しいウィンドウにコピーされて引き
継がれる。そのため、ウィンドウを分割した直後には、2つのウィンドウの内容は同じ
ように見える。
新しいバッファを編集するとき、そのバッファのローカルオプションは初期化されなけ
ればならない。その以前のカレントバッファのローカルオプションは、そのバッファの
みに適用すべきものかもしれないので、新しいバッファには適用されない。その代わり、
バッファについてローカルなオプションにはそれぞれグローバルな値があり、新しいバッ
ファにはそれが適用される。コマンド ":set" によって、ローカルな値とグローバルな
値の両方が変更される。コマンド "setlocal" はローカルな値のみを変更するので、そ
れで指定した値は新しいバッファには適用されない。
すでに編集されているバッファを編集するときは、最後に閉じられたウィンドウ内のロ
ーカルオプションが再び使われる。このバッファがこのウィンドウ内ですでに編集され
ていたなら、そのときの値が再び用いられる。そうでなければ、そのバッファが最後に
編集されて閉じられたウィンドウ内の値が用いられる。
特定のバッファの種類についてウィンドウ内のローカルオプションを設定することも可
能である。同じウィンドウ内で別のバッファを編集するときは、ウィンドウについてロー
カルなオプションを使い続けたくはないだろう。そのためVimはウィンドウについてロー
カルなオプションのグローバルな値を記憶しており、別のバッファの編集時にはそれを
用いる。ウィンドウはそれぞれ、それらの値の独自のコピーを持っている。そのため、
それらのオプションはウィンドウについてはローカルであるが、そのウィンドウ内の全
てのバッファについてグローバルである。それらを用いて、次のようなことが可能であ
る: >
:e 一つ目
:set list
:e 二つ目
こうするとオプション 'list' はバッファ "二つ目" にも適用される。コマンド
":set list" により、グローバルな値もオンになったからである。 >
:set nolist
:e 一つ目
:setlocal list
:e 二つ目
今度はバッファ "二つ目" ではオプション 'list' はオフである。なぜならコマンド
":set nolist" がグローバルな値をオフにしたが、コマンド ":setlocal list" はバッ
ファ "一つ目" についてローカルな値をオンにしただけで、":e 二つ目" ではグローバ
ルな値が適用されるからである。 Note 次にこうすると: >
:e 一つ目
最後にバッファ "一つ目" を編集したときの通りにオプション 'list' の値が戻る。
ウィンドウについてローカルなオプションはバッファ毎に記憶される。バッファがロー
ドされていなくても同様に記憶されている。ただし、バッファが破棄 (|:bwipe|) され
たときは設定は消える。
特別なローカルウィンドウオプション *local-noglobal*
以下のローカルウィンドウオプションは、新しいウィンドウが作成されたときにコピー
されないため、若干異なる動作をする:
オプション 理由 ~
'previewwindow' 1つしか存在できない
'scroll' 既存のウィンドウに固有のもの
'winfixbuf' 既存のウィンドウに固有のもの
'winfixheight' 既存のウィンドウに固有のもの
'winfixwidth' 既存のウィンドウに固有のもの
特別なローカルバッファオプション
以下のローカルバッファオプションは、新しいバッファが作成されるときにコピーされ
ないため、若干異なる動作をする:
オプション 理由 ~
'filetype' 自動コマンドによって明示的に設定される
'syntax' 自動コマンドによって明示的に設定される
'bufhidden' |special-buffers| である
'buftype' |special-buffers| である
'readonly' 自動的に検出される
'modified' 自動的に検出される
*:setl* *:setlocal*
:setl[ocal][!] ... コマンド ":set" と似ているが、カレントバッファ/ウィン
ドウについてローカルな値のみを設定する。全てのオプショ
ンがローカルな値を持つわけではない。オプションがローカ
ルな値を持たないときは、グローバルな値が設定される。
引数が "all" のとき: 全てのローカルオプションのローカ
ルな値を表示する。
引数がないとき: 全てのローカルオプションのローカルな値
で、既定値と異なるものを表示する。
特定のローカルオプションを表示するときは、ローカルな値
も表示する。グローバルまたはローカルな切替オプションに
対しては、グローバルな値が表示される場合には、オプショ
ン名の前に "--" が表示される。
グローバルオプションに対しては、グローバルな値が表示さ
れる (しかし、これは将来変更されるかもしれない)。
:se[t] {option}< {option} の実効値をそのグローバル値に設定する。
文字列の |global-local| オプションの場合、ローカル値は
削除され、グローバル値が使用されるようになる。
他のすべてのオプションの場合、グローバル値がローカル値
にコピーされる。
:setl[ocal] {option}< {option} の実効値をそのグローバル値に設定する。
数値および真偽値の |global-local| オプションの場合、
ローカル値が削除され、グローバル値が使用される。
文字列の |global-local| オプションを含む他のすべてのオ
プションでは、グローバル値がローカル値にコピーされる。
Note |global-local| オプションの挙動は、文字列ベースのオプションと数値ベースの
オプションでは若干異なることに注意。
*:setg* *:setglobal*
:setg[lobal][!] ... コマンド ":set" と似ているが、ローカルオプションのグロー
バルな値のみを設定し、ローカルな値は変更しない。
オプションの値を表示するときは、グローバルな値が表示さ
れる。
引数が "all" のとき: 全てのローカルオプションのグロー
バルな値を表示する。
引数がないとき: 全てのローカルオプションのグローバルな
値で、既定値と異なるものを表示する。
バッファ/ウィンドウについてローカルなオプションに対して:
コマンド グローバルな値 ローカルな値 条件 ~
:set option=value set set
:setlocal option=value - set
:setglobal option=value set -
:set option? - display ローカル値設定あり
:set option? display - ローカル値設定なし
:setlocal option? - display
:setglobal option? display -
ローカルな値を持つグローバルオプション *global-local*
オプションがグローバルであるというのは、一つの値を全てのバッファとウィンドウに
用いるような場合である。いくつかのグローバルオプションでは、ローカルな別の値を
持てると便利である。ローカルな値は、コマンド ":setlocal" で設定できる。すると
コマンド ":setlocal" を実行したバッファとウィンドウではローカルな値が用いられ
るが、他のバッファでは引き続きグローバルな値が用いられる。
例えば、あなたは2つのウィンドウを開き、両方でC言語のソースファイルを編集してい
るとする。グローバルなオプション 'makeprg' は両方に適用される。そこでウィンド
ウの片方で >
:set makeprg=gmake
とすると、別のウィンドウでも同じ値が用いられる。別のウィンドウに移って
オプション 'makeprg' を設定する必要はない。
しかし、新しいウィンドウでPerlのソースファイルの編集を始めると、'makeprg' に別
の値を設定したくなる。しかしCソースに適用された値を変えたくはない。そんなとき
には次のようにする: >
:setlocal makeprg=perlmake
次のようにローカルな値を空にすると、グローバルな値に戻る: >
:setlocal makeprg=
ただし、この方法は文字列オプションにしか使えない。数値または切替オプションに
は、次のように "<" フラグを使う必要がある: >
:setlocal autoread<
Note: 非切替かつ非数値オプションの変更で "<" を使うと、グローバルな値がローカ
ルな値にコピーされるが、それはグローバルな値を使うようにするのとは少し違うこと
に注意 (これは後でグローバルな値が変更されたときに問題になる。{訳注: グローバ
ルな値が変更されても、"<" でコピーした値までは変更されない。あくまでもローカル
な値だから})。次を使うこともできる: >
:set path<
これは 'path' のローカルな値を空にし、グローバルな値が使われるようにする。すな
わち、次と同じことをする: >
:setlocal path=
Note: 将来的に、より多くのグローバルオプションが |global-local| になる可能性が
ある。そうなるとグローバルオプションに対する ":setlocal" の動作が変わるかもし
れない。
*option-value-function*
いくつかのオプション ('completefunc', 'findfunc', 'imactivatefunc',
'imstatusfunc', 'omnifunc', 'operatorfunc', 'quickfixtextfunc', 'tagfunc'
および 'thesaurusfunc') は関数名もしくは関数への参照もしくはラムダ関数を設定す
る。ラムダを使う場合は内部名へ変換される、例えば "<lambda>123"。
例:
>
set opfunc=MyOpFunc
set opfunc=function('MyOpFunc')
set opfunc=funcref('MyOpFunc')
set opfunc={a\ ->\ MyOpFunc(a)}
スクリプトローカル関数を設定: >
set opfunc=s:MyLocalFunc
set opfunc=<SID>MyLocalFunc
|Vim9| script では、関数がスクリプト内に存在する場合、"s:" や "<SID>" を省略で
きる: >
set opfunc=MyLocalFunc
関数への参照の変数を用いて設定: >
let Fn = function('MyTagFunc')
let &tagfunc = Fn
ラムダ式を用いて設定: >
let &tagfunc = {t -> MyTagFunc(t)}
ラムダ式を含む変数を用いて設定: >
let L = {a, b, c -> MyTagFunc(a, b , c)}
let &tagfunc = L
Vim9 script において、コンパイル済み関数内では、ラムダを使うことができるが、ク
ロージャは動作しない。なぜなら、関数が定義された位置のコンテキストを持たずに呼
ばれることになるためである。
ファイルタイプの設定
:setf[iletype] [FALLBACK] {filetype} *:setf* *:setfiletype*
オプション 'filetype' に対して {filetype} を設定する。
ただし autocommand の中 (入れ子になっているときは、外
側も含めて) でまだ実行されていないときのみ有効である。
これは以下のコマンドの略である: >
:if !did_filetype()
: setlocal filetype={filetype}
:endif
< このコマンドは filetype.vim の中で使われ、オプション
'filetype' が2度設定されて別の設定や構文ファイルが読み
込まれることがないようにしている。
任意の引数 FALLBACK が存在すると、後の :setfiletype コ
マンドは 'filetype' を上書きする。これはファイルタイプ
の決定を正確に推測するために使われる。|did_filetype()|
はこのコマンドの後では false を返すだろう。
*option-window* *optwin*
:bro[wse] se[t] *:set-browse* *:browse-set* *:opt* *:options*
:opt[ions] 全てのオプションを表示したり設定するためのウィンドウを
開く。
オプションは機能ごとにまとめられている。
ここではオプションの短い説明が読める。その上で <CR> を
打ち込むと、そのオプションについてのヘルプウィンドウが
開き、詳しい説明が読める。
表示されている値を修正した後に "set" 行の上で <CR> を
打ち込むと、新しい値を設定できる。ウィンドウやバッファ
固有のオプションについては、変更した値は最後に使用した
ウィンドウに適用される。そのウィンドウがヘルプウィンド
ウだったときは、変更した値はヘルプウィンドウの (オプショ
ンウィンドウを抜かして) 1つ下のウィンドウに適用される。
{|+eval| 機能付きでコンパイルされたときのみ有効}
*$HOME*
"~" は "$HOME" と同様に扱われるが、こちらは値の先頭にあるか、空白かコンマの後
にあるときのみ認識される。
Unix系のシステムでは "~user" も使える。これは "user" というユーザーのホームディ
レクトリに置き換えられる。例: >
:set path=~mool/include,/usr/include,.
Unix系のシステムでは "${HOME}" という形式も使える。ここで {} の間には識別子に
使えない文字 {訳注: 上を参照} が入ってもよい。 Note これをコマンド "gf" のため
に使いたいなら、文字 '{' と '}' をオプション 'isfname' に追加する必要がある。
NOTE: 環境変数と "~/" の展開はコマンド ":set" のときのみ行われる。":let" でオ
プションに値を代入するときは展開されない。
*$HOME-windows*
MS-Windows では、$HOME 環境変数が定義されていない場合は Vim の起動時に
$HOMEDRIVE$HOMEPATH という値で定義される。
もしも $HOMEDRIVE が設定されていなければ $USERPROFILE が使われる。
この展開された値は環境変数にはエクスポートされない。これは外部コマンドを動作し
ているときに問題となる: >
:echo system('set | findstr ^HOME=')
そして >
:echo luaeval('os.getenv("HOME")')
は、exists(’$HOME’) が真であるにもかかわらず何も出力しないだろう (空文字列)。
$HOME に空ではない何らかの文字列を設定すると、それはサブプロセスにエクスポート
されるだろう。
Note 展開されるオプションの値の長さ制限に注意。システムごとに異なるが、大抵は
256文字や1024文字等の長さである {訳注: これは半角の場合で、全角では半分}。
*:fix* *:fixdel*
:fix[del] ターミナルオプション 't_kD' {訳注: デリートキー} の値
を設定する。
't_kb' が のとき 't_kD' は ~
CTRL-? CTRL-H
CTRL-?以外 CTRL-?
(CTRL-? は8進数で 0o177、16進数で 0x7f)
ターミナルのデリートキーのキーコードが違っているが、バッ
クスペースのキーコードは正しいときは、次のコマンドをファ
イル .vimrc に加えればよい: >
:fixdel
< これはバックスペースのキーコードが実際に何であっても有
効である。
バックスペースのキーコードが違っていたら、以下のように
する: >
:if &term == "termname"
: set t_kb=^V<BS>
: fixdel
:endif
< ここで "^V" は CTRL-V、"<BS>" はバックスペースを表す
(実際に「^」「V」などのキーを押さないこと)。"termname"
にはユーザーの使うターミナル名を当てはめる。
<Delete> キーが奇妙なキーコード列 (CTRL-? でも CTRL-H
でもない) を送るときは、コマンド ":fixdel" ではなく以
下の方法を使う: >
:if &term == "termname"
: set t_kD=^V<Delete>
:endif
< ここで "^V" は CTRL-V、"<BS>" はデリートキーを表す
(実際に「^」「V」などのキーを押さないこと)。"termname"
にはあなたの使うターミナルの種類を当てはめる。
*Linux-backspace*
Note Linuxについての注意: 既定ではバックスペースキーは
CTRL-? を送るが、これは違っている。これを修正するには、
ファイル rc.local に次の行を加える: >
echo "keycode 14 = BackSpace" | loadkeys
<
*NetBSD-backspace*
Note NetBSDについての注意: バックスペースキーが正しい
キーコードを送らないとき、これを試すこと: >
xmodmap -e "keycode 22 = BackSpace"
< 有効だったら、ファイル .Xmodmap に次の行を加えること: >
keysym 22 = BackSpace
< これを有効にするには、再起動する必要がある。
==============================================================================
2. オプションの自動設定 *auto-setting*
コマンド ":set" によるオプションの設定の他に、3通りの方法で、1つまたは複数のファ
イルに自動的にオプションを設定できる。
1. Vimを起動したとき、様々な場所から初期化設定を読み込ませることができる。
|initialization| を参照。多くの設定は編集セッション全てに適用されるが、いく
つかはVimを起動したディレクトリによって異なる。初期化設定ファイルはコマンド
|:mkvimrc|, |:mkview|, |:mksession| で生成できる。
2. 新しいファイルの編集を始めたとき、自動的に実行されるコマンドがある。
これを使うと、特定のパターンにマッチするファイルに対してオプションを設定し
たり、様々なことが可能である。|autocommand| を参照。
3. 新しいファイルの編集を始めたときオプション 'modeline' がオンなら、ファイル
の先頭と末尾の数行ずつがモードラインとして読み込まれる。それをここで説明す
る。
*modeline* *vim:* *vi:* *ex:* *E520*
モードラインには2つの形式がある。1つ目の形式は次の通りである。
[text{white}]{vi:|vim:|ex:}[white]{options}
[text{white}] 空または、1個以上の余白 (<Space> または <Tab>) が続く
任意のテキスト; "ex:" は常に少なくとも1個の空白が必要
{vi:|vim:|ex:} "vi:" か "vim:" か "ex:" という文字列
[white] 空白、なくても良い
{options} オプション設定が、空白か ':' で区切られて並んだもので、
':' の間の部分はコマンド ":set" の引数である(空でもよい)
例:
vi:noai:sw=3 ts=6 ~
vim: tw=77 ~
2つ目の形式は次の通りである (Viのバージョンによってはこの形式と互換性がある)。
[text{white}]{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
[text{white}] 空または、1個以上の余白 (<Space> または <Tab>) が続く
任意のテキスト; "ex:" は常に少なくとも1個の空白が必要
{vi:|vim:|Vim:|ex:} "vi:" か "vim:" か "Vim:" か "ex:" という文字列
[white] 空白、なくても良い
se[t] "set " または "se " という文字列 (終わりの空白に注意);
"Vim" が使われているときは "set" でなければならない
{options} オプション設定が空白で区切られて並んだもので、コマンド
":set" の引数である
: コロン
[text] 任意のテキスト、なくても良い
例:
/* vim: set ai tw=75: */ ~
/* Vim: set ai tw=75: */ ~
{vi:|vim:|Vim:|ex:} の前には空白が必要である。これが "lex:" 等の普通の言葉を誤
認する可能性を低めている。ただし例外があり、"vi:" と "vim:" は行頭に来てもよい
(バージョン3.0との互換性のため)。"ex:" が行頭に来ると、モードラインとは見なさ
れない ("example:" の略かもしれないから)。
モードラインの中でモードラインを無効にした場合、後続のモードラインは無視され
る。これはファイルごとにモードラインをオフにできるようにするためである。これは
行がモードラインに見えるがそうでない時に便利である。例えば "vim:" のような文字
列を含む YAML ファイルは次のように始めるとよい
# vim: nomodeline ~
これはモードラインの誤検出を回避する。モードラインが無効化後も、同じ行の後続の
オプションがあれば依然として評価される(通常は何もないだろうが)。
*modeline-local*
オプションは ":setlocal" を使った時のように設定される。つまり設定した値は、そ
のバッファとそれを開いているウィンドウにのみ適用される。モードラインからグロー
バルオプションを設定することは不可能ではないが、普通そういうことはしない。2つ
のウィンドウを開いていて、それぞれのファイルが同じグローバルオプションを違う値
に設定しようとしたときは、後に開かれたウィンドウが優先される。
既に読み込まれているファイルを開くときは、モードラインからはウィンドウローカル
なオプションだけが設定される。つまり、ファイルを開いた後に手動でバッファローカ
ルなオプションを変更したら、そのバッファを別なウィンドウで開いてもそのオプショ
ンは変更されないが、ウィンドウローカルなオプションは変更される。
*modeline-version*
モードラインの内容が、Vimのバージョンによって使用可能だったり不可能だったりす
る場合には、"vim:" または "Vim:" のところでバージョンを指定できる。
vim{vers}: バージョン {vers} 以降 (そのバージョンを含む)
vim<{vers}: バージョン {vers} より前
vim={vers}: バージョン {vers} のみ
vim>{vers}: バージョン {vers} より後 (そのバージョンを含まない)
{vers} に 700 を指定するとVim 7.0を表す (メジャー・バージョンナンバーの100倍足
すマイナー・バージョンナンバー)。
例えば、Vim 7.0でのみモードラインを使うにはこうする:
/* vim700: set foldmethod=marker */ ~
Vim 7.2より新しいバージョンでのみモードラインを使うにはこうする:
/* vim>702: set cole=2: */ ~
"vim" と ":" の間に空白があってはならない。
モードラインを探す行数はオプション 'modelines' で設定できる。オプション
'modeline' がオフであるかオプション 'modelines' の値が 0 だと、モードラインを
探さない。
Note 1番目の形式では、行全体がオプション指定に使われることに注意。そのため次の
ようにすると、行末の "*/" のためにエラーメッセージが現れる。
/* vi:ts=4: */ ~
その代わり、こうすればよい。
/* vi:set ts=4: */ ~
エラーが発見されると、その行の残りは無視される。
コマンド "set" の引数に ':' を含めたいときは、その前に '\' を置くこと。':' の
前の '\' は取り除かれる。例:
/* vi:set fillchars=stl\:^,vert\:\|: */ ~
これはオプション 'fillchars' を "stl:^,vert:\|" に変更する。':' の前に '\' が
置かれたとき、取り除かれるのは1個だけである。だからオプションの値に "\:" を含
めたいなら "\\:" を指定すること。
*E992*
安全上の理由から、コマンド "set" 以外は使用できない (誰かがテキストファイルで
「トロイの木馬」を作るかもしれないから)。また、すべてのオプションを設定できる
わけではない。一部のオプションではフラグが設定されているため、値が使用されると
|sandbox| が有効になる。'modelineexpr' が設定されている場合、一部のオプション
はモードラインからしか設定できない。(デフォルトはオフ)
しかしそれでもモードラインが問題を引き起こす可能性はわずかに残る。例えば、悪意
のある誰かが 'textwidth' を5にすると、ファイルの全ての行が予期せず折り返されて
しまう。そのため、信用できないファイルを編集する前にはモードラインを無効にする
こと。例えばmail ftpluginはそれを行っている。
ヒント: ファイルを読み込みときにオプション設定以外を行いたいなら、ファイル内の
特定の文字列を調べる autocommand を定義すればよい。例: >
au BufReadPost * if getline(1) =~ "VAR" | call SetVar() | endif
そして "VAR" を含む行に何かを行うための SetVar() 関数を定義すればよい。
==============================================================================
3. オプションの要約 *option-summary*
以下のリストでは、全てのオプションが、正確な名前と (あれば) 略名で示されている。
どちらの形を使ってもよい。
この文書内では、切替オプションを「オンに」するというのは ":set オプション" を
実行することを表す。切り替えオプションを「オフに」するというのは
":set noオプション" を実行することを表す。
いくつかのオプションには、既定値が2種類あるものがある: 1つ目は "Vim default"
つまりVimの既定値で、オプション 'compatible' がオフになっているときに使われる。
2つ目は "Vi default" つまりViの既定値で、オプション 'compatible' がオンになっ
ているときに使われる。
ほとんどのオプションは全てのウィンドウやバッファで共通である。さてその中には、
テキストがウィンドウ内でどのように表示されるかを定めるものもある。そういったオ
プションは、ウィンドウごとに違う値にできる。例えばオプション 'list' は、あるウィ
ンドウ内でオンにしても、同じテキストを編集している別のウィンドウ内ではオフに
することができる。すると同時に違った表示方法が使える。また、ファイルごとに特定
の値にできるオプションもある。そういったオプションは、ファイルごとまたはバッファ
ごとに違う値にできる。例えばオプション 'textwidth' は、通常のテキストファイル
には78にし、Cプログラムのファイルには0にするようにできる。
グローバル:
一つのオプションが全てのバッファやウィンドウに対して適用される
ウィンドウについてローカル:
ウィンドウがそれぞれ、そのオプションのコピーを独自に持つ
バッファについてローカル:
バッファがそれぞれ、そのオプションのコピーを独自に持つ
{訳注: 上の項目については、文書先頭も参照}
新しいウィンドウを開くとき、ウィンドウ固有のオプションには、その前にアクティブ
だったウィンドウでの値がまず使われる。バッファ固有のオプションは、オプション
'cpoptions' のフラグ 's' とフラグ 'S' によって違ってくる。フラグ 's' が含まれ
ていると (既定ではこうなっている)、新しいバッファが最初にアクティブになったと
きに、その前にアクティブだったバッファでの値がコピーされる。フラグ 'S' が含ま
れていると、バッファがアクティブになる度に値がコピーされる。これはグローバルオ
プションであるようなものである。フラグ 's' もフラグ 'S' も含まれていないときは、
バッファが作られるときに、その前にアクティブだったバッファでの値がコピーされる。
隠しオプション *hidden-options*
全てのオプションが全てのバージョンでサポートされているわけではない。これは有効
にされている機能とシステムにもよる。これに関しての注意は以下の波括弧の中にある。
もしあるオプションがサポートされていなくても、そのオプションへの設定はエラーに
ならず成功する。これを隠しオプションと呼ぶ。しかし隠しオプションの値は保持され
ていないため、取得することはできない。
オプション "foo" が ":set" で設定できるかどうか判定するにはこのようにする: >
if exists('&foo')
これは隠しオプションに対してもtrueを返す。オプション "foo" が本当にサポートさ
れているかを判定するにはこのようにする: >
if exists('+foo')
<
*E355*
|Q_op| にはオプションの短い説明付きの表があり、そこからヘルプにジャンプできる。
*'aleph'* *'al'* *aleph* *Aleph*
'aleph' 'al' 数値 (既定値はMS-Windowsでは128、それ以外では224)
グローバル
{|+rightleft| 機能付きでコンパイルされたときのみ有効}
ヘブライ語アルファベットの最初の文字を表すASCIIコード。挿入モード(オプ
ション 'hkmap' がオンのとき) と コマンドラインモード (CTRL-_ を打ち込
んだとき) の両方において、ヘブライモードのキーボード配列をマッピングす
るルーチンは、[aleph..aleph+26] の範囲のヘブライ文字を出力する。
'aleph'=128 はPCコード、'aleph'=224 は ISO 8859-8 に使われる。
|rileft.txt| を参照。
*'allowrevins'* *'ari'* *'noallowrevins'* *'noari'*
'allowrevins' 'ari' 切替 (既定ではオフ)
グローバル
{|+rightleft| 機能付きでコンパイルされたときのみ有効}
挿入モードとコマンドラインモードで CTRL-_ を使用可能にする。これは既定
ではオフになっている。ユーザーが間違って SHIFT-_ ではなく CTRL-_ を打
ち込み、右から左に書いていくモードに入って抜けられなくなる事態を防ぐた
めである。オプション 'revins' を参照。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
*'altkeymap'* *'akm'* *'noaltkeymap'* *'noakm'*
'altkeymap' 'akm' 切替 (既定ではオフ)
グローバル
{|+farsi| 機能付きでコンパイルされたときのみ有効}
このオプションはペルシア語を使うためのもので、削除された。|farsi.txt|
を参照。
*'ambiwidth'* *'ambw'*
'ambiwidth' 'ambw' 文字列 (既定では "single")
グローバル
'encoding' が "utf-8" などUnicodeエンコーディングのときのみ効果がある。
East Asian Width Class Ambiguous な文字(ユーロ、登録商標記号、著作権記
号、ギリシャ文字、キリル文字など)をどう扱うかを定める。
現在のところ、設定可能な値は次の2通りである:
"single": US-ASCIIの文字と同じ幅を使う。これはほとんどのユーザー
にとって期待どおりになる。
"double": ASCII文字の2倍の幅を使う。
*E834* *E835*
"double" は 'listchars' や 'fillchars' に指定された文字が全角幅になっ
てしまう場合は使えない。このエラーはまた setcellwidths() を呼ぶことで
も発生するかもしれない。
この値は |setcellwidths()| で指定された文字では無視される。
これらの文字のグリフの幅を、旧い/伝統的なCJKエンコーディングで何オク
テットを占めるかだけによって決めているCJKフォントがたくさんある。その
エンコーディングではユーロ、登録商標記号、ギリシャ文字、キリル文字は2
オクテットで表現されるので、それらのフォントはこれらの文字に「wideな」
グリフを当てている。これはテキストファイルで表を作るための罫線文字にも
あてはまる。そのためGUI版のVimにCJKフォントを使うときや、CJKフォント
を使うターミナル(エミュレータ)の中でVimを実行するとき(またはオプション
"-cjkwidth" つきで起動されたxtermの中でVimを実行するとき)にはこのオプ
ションを "double" にして、Vimが認識する幅をフォントのグリフの幅に合わ
せなければならない。CJKのMS-WindowsでもシステムのロケールがCJKロケール
のどれかに設定されている場合は多分 "double" にしなければならないだろ
う。
Unicode Standard Annex #11 (http://www.unicode.org/reports/tr11)を参照。
Vim が |+termresponse| 機能付きでコンパイルされ、|t_u7| にカーソル位置
取得のためのエスケープシーケンスが設定されているとき、このオプションの
値は Vim の起動時に自動的に設定される。レスポンスは |v:termu7resp| の
中に見つけることができる。
*'antialias'* *'anti'* *'noantialias'* *'noanti'*
'antialias' 'anti' 切替 (既定ではオフ)
グローバル
{VimがmacOSでGUIを有効にしてコンパイルされたときのみ有
効}
このオプションはmacOS v10.2以降の上でGUI版のVimを使うときだけ効果があ
る。これがオンであるとなめらかな(アンチエイリアスされた)フォントが使わ
れる。このフォントはある種のディスプレイ上、あるサイズでは読み易くな
る。
'guifont' が既定値(空文字列)のときこのオプションを設定すると問題が発生
することがある。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
*'arabic'* *'arab'* *'noarabic'* *'noarab'*
'arabic' 'arab' 切替 (既定ではオフ)
ウィンドウについてローカル
{|+arabic|機能付きでコンパイルされたときのみ有効}
アラビア語のテキストを編集するときにこのオプションを設定することができ
る。
このオプションを設定すると次のことが行われる:
- 'termbidi' がオンでない限り、オプション 'rightleft' をオンにする。
- 'termbidi' がオンでない限り、オプション 'arabicshape' をオンにする。
- オプション 'keymap' を "arabic" に設定する。これによって挿入モードで
CTRL-^を押すと英語とアラビア語のキーマッピングがトグルする。
- オプション 'delcombine' をオンにする。
アラビア語のテキストを編集するには 'encoding' が "utf-8" でなければな
らないことに注意。
このオプションをオフにすると次のことが行われる:
- 'rightleft' をオンにする
- 'keymap' の使用を無効にする(その値は変更しない)
'arabicshape' と 'delcombine' はオフにならない(これらはグローバルオプ
ションである)。
NOTE: このオプションは、'compatible' がオンになるとオフになるので注意。
|arabic.txt|も参照。
*'arabicshape'* *'arshape'*
*'noarabicshape'* *'noarshape'*
'arabicshape' 'arshape' 切替 (既定ではオン)
グローバル
{|+arabic| 機能付きでコンパイルされたときのみ有効}
これがオンで 'termbidi' がオフになっているとアラビア語を表示するのに必
要な文字表示補正が行われる。本質的には字形作成(shaping)が有効になる。
この用語は次の事を含む広い用語である。
a) 単語の中の位置(初期、中間、最終、孤立)によって文字を変更/変形させ
る。
b) 文字合成機能の有効化
c) ある文字の組み合わせの有効化
これが無効になっていると、表示がそれぞれの文字の本来の孤立形になる。
アラビア語は他にも設定が必要な複雑な言語である。より詳しくは
|arabic.txt|を参照。
NOTE: このオプションは、'compatible' がオンになるとオンになるので注意。
*'autochdir'* *'acd'* *'noautochdir'* *'noacd'*
'autochdir' 'acd' 切替 (既定ではオフ)
グローバル
{Vimのコンパイル時に有効にされたときのみ有効。使用で
きるかどうかは exists("+autochdir") で確認できる}
これがオンであるとファイルを開くとき、バッファを切り替えるとき、バッファ
を削除するとき、ウィンドウを開閉するときに毎回作業ディレクトリが変更さ
れる。開かれた/選択されたファイルを含んでいるディレクトリがカレント
ディレクトリになる。
無名バッファの場合、ディレクトリもないため、そのバッファに移動してもカ
レントディレクトリは変更されない。
Note: このオプションがオンになっていると動かないプラグインがある。
*'autoindent'* *'ai'* *'noautoindent'* *'noai'*
'autoindent' 'ai' 切替 (既定ではオフ)
バッファについてローカル
新しい行を開始したとき (挿入モードで <CR> を打ち込むか、コマンド "o"
や "O" を使ったとき)、新しい行のインデントを現在行と同じくする。新しい
行で <BS> か CTRL-D 以外を打ち込まずに <Esc>、CTRL-O か <CR> を打ち込
むと、その行のインデントは削除される。'cpoptions' にフラグ 'I' が入っ
ていないかぎり、カーソルを他の行に移動させても同様である。
オプション 'autoindent' がオンのときは、テキストの整形処理 (コマンド
"gq" を使ったり、挿入モードで 1行の文字数がオプション 'textwidth' で指
定した数に届いたとき) には最初の行のインデントが使われる。
オプション 'smartindent' かオプション 'cindent' がオンのときは、インデ
ントの方法は違ってくる。
オプション 'autoindent' はオプション 'paste' がセットされたらリセット
され、オプション 'paste' がリセットされたら復元される。
*'autoread'* *'ar'* *'noautoread'* *'noar'*
'autoread' 'ar' 切替 (既定ではオフ)
グローバル/バッファについてローカル |global-local|
ファイルがVimの内部では変更されてないが、Vimの外部で変更されたことが判
明したとき、自動的に読み直す。ファイルが削除されたときにはこれは行われ
ないので、削除される前のテキストが保持される。ファイルが再度現れた場
合、それを読み込む。|timestamp|
このオプションがローカルな値を持つとき、再びグローバルな値を使うように
するには次のようにする: >
:set autoread<
<
*'autoshelldir'* *'asd'* *'noautoshelldir'* *'noasd'*
'autoshelldir' 'asd' 切替 (既定ではオフ)
グローバル
オンの時、Vim は端末ウィンドウで動いているシェルのディレクトリが変更さ
れる度に、現在のワーキングディレクトリを変更する。適切な設定がされる必
要があり、シェルが pwd を変更する度に OSC 7 エスケープシーケンスを出力
しないといけない。例として、Linuxなら、あなたのシェルが bash か zsh の
場合 profile で /etc/profile.d/vte.sh を読み込むことができる。
bash の場合は、これでうまくいくはずだ (bash init ファイルに記述する): >
if [[ -n "$VIM_TERMINAL" ]]; then
PROMPT_COMMAND='_vim_sync_PWD'
function _vim_sync_PWD() {
printf '\033]7;file://%s\033\\' "$PWD"
}
fi
<
または、zsh init ファイルに記述する: >
if [[ -n "$VIM_TERMINAL" ]]; then
autoload -Uz add-zsh-hook
add-zsh-hook -Uz chpwd _vim_sync_PWD
function _vim_sync_PWD() {
printf '\033]7;file://%s\033\\' "$PWD"
}
fi
<
fish init ファイルに記述する: >
if test -n "$VIM_TERMINAL"
function _vim_sync_PWD --on-variable=PWD
printf '\033]7;file://%s\033\\' "$PWD"
end
end
<
別の方法は |terminal-autoshelldir| にある。