1
- *term.txt* For Vim バージョン 9.0. Last change: 2022 Apr 23
1
+ *term.txt* For Vim バージョン 9.0. Last change: 2023 Jan 15
2
2
3
3
4
4
VIMリファレンスマニュアル by Bram Moolenaar
@@ -42,15 +42,10 @@ Unix 以外のシステムでは、TERMCAP を定義してコンパイルした
42
42
用できます。
43
43
44
44
*builtin-terms* *builtin_terms*
45
- どの組み込み端末が利用できるかは、feature.h で定義されているマクロに依存します。
46
- これらはコンパイル時に設定しなければなりません:
47
- define ":version" の出力 組み込まれる端末 ~
48
- NO_BUILTIN_TCAPS -builtin_terms なし
49
- SOME_BUILTIN_TCAPS +builtin_terms 一般的なもの (デフォルト)
50
- ALL_BUILTIN_TCAPS ++builtin_terms 全て使用可能
51
-
52
- 利用可能な組み込み端末のリストを見るには ":set term=xxx" とします(GUI でないと
53
- きのみ)。| +builtin_terms | も参照。
45
+ 多くの組み込み端末が利用可能です。パッチ 9.0.0280 以降、Vim のバージョンによる
46
+ 違いはありません。利用可能な組み込み端末のリストは `:set term=xxx` のエラーメッ
47
+ セージで見ることができます (GUI を実行していない場合)。| ++builtin_terms | も参
48
+ 照してください。
54
49
55
50
termcap のコードが組み込まれているときは、termcap ファイルと組み込みの termcap
56
51
から、使われている端末用のキーシーケンスを取得しようとします。使われている端末
@@ -89,7 +84,14 @@ termcap のコードが組み込まれているときは、termcap ファイル
89
84
90
85
Note: 't_ti' が空でない場合、Vimは代替画面への切り替えが生じると想定します。こ
91
86
れにより、シェルコマンドの実行時またはVimの終了時の動作がわずかに変わる場合が
92
- あります。これを回避するには、't_TI' と 't_TE' を使用します。
87
+ あります。これを回避するには、't_TI' と 't_TE' を使用します。(ただし、上書きで
88
+ はなく追加してください)。
89
+
90
+ Vim は 't_RK' termcap エントリを使用して、端末が使用しているキーボードプロトコ
91
+ ルを検出しようとします。これは 't_TI' の後に送信されますが、何もすることがない
92
+ (typeahead も保留中のコマンドもない) 場合にのみ送信されます。これはレスポンス
93
+ がシェルコマンドで終わってしまったり、Vim が終了した後に届くのを避けるためで
94
+ す。
93
95
94
96
*xterm-bracketed-paste*
95
97
't_BE' がオンの場合、raw モードに入るときに 't_BE' が端末に送信され、raw モー
@@ -113,6 +115,10 @@ Note: 't_ti' が空でない場合、Vimは代替画面への切り替えが生
113
115
もし Vim の実行中にこれを実行した場合、bracketed paste を無効化するため 't_BD'
114
116
が端末に送信されます。
115
117
118
+ | t_PS | または | t_PE | が設定されていない場合、| t_BE | は使用されません。これは、
119
+ 貼り付けられたテキストを囲むエスケープコードが認識できない場合に、bracketed
120
+ paste が有効にならないようにするためです。
121
+
116
122
端末が bracketed paste をサポートしているにもかかわらずオプションが自動的に設
117
123
定されない場合、以下のような設定を試すことができます: >
118
124
@@ -122,7 +128,11 @@ Note: 't_ti' が空でない場合、Vimは代替画面への切り替えが生
122
128
exec "set t_PS=\e[200~"
123
129
exec "set t_PE=\e[201~"
124
130
endif
125
- <
131
+
132
+ terminfo エントリ "BE"、"BD"、"PS"、"PE" は、ncurses バージョン 6.4、2023 年初
133
+ 頭に、一部の端末用に追加されました。このバージョンであれば、端末を手動で設定す
134
+ る必要はないかもしれません。
135
+
126
136
*tmux-integration*
127
137
tmux 内で Vim を実行する際に問題が発生する場合、ここにいくつかのヒントがありま
128
138
す。もし動かないならその部分はコメントアウトすることができます(これは tmux を
@@ -289,6 +299,56 @@ Vim がシーケンス |t_RV| (バージョン要求)への応答を受け取っ
289
299
で始まっていれば、その端末は 8 ビットモードであると認識し、全てのキーシーケン
290
300
スを 8 ビット版に変換します。
291
301
302
+ *xterm-terminfo-entries*
303
+ しばらくの間、terminfo エントリは Vim が使える全ての機能を記述するには不十分で
304
+ した。その結果、xterm とよく似たいくつかの端末が、$TERM の端末名の前に
305
+ "xterm-" をつけることで、この機能を利用していました。
306
+
307
+ このような端末は xterm と 100% 互換性があるわけではないので、これは問題になり
308
+ ます。"xterm" の回避策を使用せずにこれらの機能を使用できるように、2023 年の開
309
+ 始時点で、terminfo データベースにいくつかのエントリが追加されました。(今のとこ
310
+ ろ) 以下がそのエントリです:
311
+
312
+ 名前 xterm の値 説明 ~
313
+ RV "\033[>c" リクエストバージョン | t_RV |
314
+
315
+ BE "\033[?2004h" bracketed paste モードを有効化 | t_BE |
316
+ BD "\033[?2004l" bracketed paste モードを無効化 | t_BD |
317
+ PS "\033[200~" 貼り付けテキスト開始 | t_PS |
318
+ PE "\033[201~" 貼り付けテキスト終了 | t_PE |
319
+
320
+ XM "\033[?1006;1004;1000%?%p1%{1} %=%th%el%;"
321
+ マウスの有効 / 無効 | t_XM |
322
+
323
+ "XM" エントリは、SGR スタイルのマウスレポートを有効にするために "1006" を含み
324
+ ます。これは223以上の桁をサポートします。また、フォーカスレポートを有効にする
325
+ "1004" も含まれます。t_fe および t_fd エントリは空のままでよいです (どのみち
326
+ terminfo/termcap にはエントリがありません)。
327
+
328
+ *xterm-kitty* *kitty-terminal*
329
+ Kitty 端末は特別なケースです。主な理由は、他のほとんどの端末とは動作が異なるか
330
+ らですが、デフォルトで他の端末と同じように動作するようにするのではなく、Kitty
331
+ を使用する際にアプリケーションがどのように動作する必要があるかを規定しているか
332
+ らです。このため、Vim が Kitty 端末で動作するのは非常に困難です。いくつかの例
333
+ 外はハードコーディングされていますが、ある特定の端末のために例外を作らなければ
334
+ ならないのは全く良いことではありません。
335
+
336
+ 問題の 1 つは、$TERM の値が "xterm-kitty" に設定されていることです。Vim の場
337
+ 合、これは端末が xterm 互換であることを示すもので、組み込みの xterm termcap エ
338
+ ントリを使用する必要があります。他の多くの端末はこれに依存しています。しかし、
339
+ Kitty は完全な xterm 互換ではありません。作者は "xterm-" という接頭辞を無視し
340
+ てとにかく terminfo エントリを使うことを提案しました。そのため、現状、組み込み
341
+ の xterm termcap エントリは使われないということが起きています。しかし、t_RV は
342
+ 設定されます。そうしないと、自動的に 'ttymouse' を "sgr" に設定するなど、他の
343
+ ことがうまくいきません (少なくとも | t_XM | がこれに使われるまでは)。
344
+
345
+ なぜ kitty が $TERM を "xterm-kitty" に設定するのかは不明です。"kitty" の方が
346
+ 適切ですが、この名前の terminfo エントリは普及していません。
347
+
348
+ Note kitty キーボードプロトコルの使用は別の機能であることに注意してください。
349
+ | kitty-keyboard-protocol | を参照。
350
+
351
+
292
352
==============================================================================
293
353
2. 端末オプション *terminal-options* *termcap-options* *E436*
294
354
@@ -368,8 +428,11 @@ termcap コードに対応するオプションを設定することによって
368
428
369
429
Vim 独自のもの (標準的なコードはないもの):
370
430
t_AU 下線色を設定する (ANSI) *t_AU* *'t_AU'*
371
- t_Ce 下波線終了 *t_Ce* *'t_Ce'*
372
- t_Cs 下波線モード *t_Cs* *'t_Cs'*
431
+ t_Ce 下波線および下線終了 *t_Ce* *'t_Ce'*
432
+ t_Cs 下波線 (波線の下線) モード *t_Cs* *'t_Cs'*
433
+ t_Us 2 重下線モード *t_Us* *'t_Us'*
434
+ t_ds 点線下線モード *t_ds* *'t_ds'*
435
+ t_Ds 破線下線モード *t_Ds* *'t_Ds'*
373
436
t_Te 取り消し線終了 *t_Te* *'t_Te'*
374
437
t_Ts 取り消し線モード *t_Ts* *'t_Ts'*
375
438
t_IS アイコンテキスト設定開始 *t_IS* *'t_IS'*
@@ -385,6 +448,10 @@ Vim 独自のもの (標準的なコードはないもの):
385
448
t_RV 端末バージョン文字列を要求 (xterm および他の *t_RV* *'t_RV'*
386
449
仮想端末用) 応答は | v:termresponse | に格納される | xterm-8bit |
387
450
| 'ttymouse' | | xterm-codes |
451
+ t_XM マウスレポートの有効/無効 *t_XM* *'t_XM'*
452
+ 以下の | mouse-reporting | 参照
453
+ t_RK 端末キーボートプロトコル状態を要求する *t_RK* *'t_RK'*
454
+ | t_TI | の後に送信
388
455
t_u7 カーソル位置を要求 (xterm 用) *t_u7* *'t_u7'*
389
456
| 'ambiwidth' | 参照
390
457
応答は | v:termu7resp | に格納される
@@ -413,7 +480,7 @@ Vim 独自のもの (標準的なコードはないもの):
413
480
t_Si アイコンテキストをスタックに保存 *t_Si* *'t_Si'*
414
481
t_Ri アイコンテキストをスタックから復元 *t_Ri* *'t_Ri'*
415
482
t_TE "raw" モードの終了 *t_TE* *'t_TE'*
416
- t_TI 端末を "raw" モードにする *t_TI* *'t_TI'*
483
+ t_TI 端末を "raw" モードにする *t_TI* *'t_TI'*
417
484
t_fe フォーカスイベント追跡を有効化する *t_fe* *'t_fe'*
418
485
| xterm-focus-event |
419
486
t_fd フォーカスイベント追跡を無効化する *t_fd* *'t_fd'*
@@ -436,6 +503,22 @@ t_SH は 1 つの引数を取らなければなりません:
436
503
t_RS は、t_RV に対する応答を受け取った場合のみ送られます。termresponse から
437
504
Terminal.app が認識され得る場合、Mac OS 上では使われません。
438
505
506
+ *mouse-reporting*
507
+ 多くの端末はマウスのクリックを報告し、いくつかの端末はマウスの動きやドラッグを
508
+ 報告することができます。Vim はこのためにどんなコードが使われているかを知る必要
509
+ があります。
510
+
511
+ これには "XM" terminfo/termcap エントリを使います。また、Vim には 'ttymouse'
512
+ オプションがあり、使用されているマウスプロトコルを指定することができます。指定
513
+ 可能な値はオプションを参照してください。
514
+
515
+ Vimが "XM" terminfo/termcap エントリを読み込むことができれば、マウス報告の有
516
+ 効/無効を指定するのに使われます。このエントリがない場合は、'ttymouse' の値が使
517
+ われます。
518
+
519
+ "XM" エントリが存在し、最初の数字が "1006" である場合、既に以前に設定されてい
520
+ ない限り、"ttymouse" は "sgr" に設定されます。
521
+
439
522
440
523
キーコード *terminal-key-codes*
441
524
Note: 可能なかぎり <> 形式を使ってください。
@@ -496,6 +579,7 @@ Note: 可能なかぎり <> 形式を使ってください。
496
579
t_%1 <Help> ヘルプキー *t_%1* *'t_%1'*
497
580
t_&8 <Undo> アンドゥキー *t_&8* *'t_&8'*
498
581
t_kI <Insert> インサートキー *t_kI* *'t_kI'*
582
+ <kInsert> キーパッドインサートキー
499
583
t_kD <Del> デリートキー *t_kD* *'t_kD'*
500
584
t_kb <BS> バックスペースキー *t_kb* *'t_kb'*
501
585
t_kB <S-Tab> バックタブ(シフト+タブ) *<S-Tab>* *t_kB* *'t_kB'*
@@ -528,8 +612,13 @@ Note: 可能なかぎり <> 形式を使ってください。
528
612
t_KK <k8> キーパッド 8 *<k8>* *t_KK* *'t_KK'*
529
613
t_KL <k9> キーパッド 9 *<k9>* *t_KL* *'t_KL'*
530
614
<Mouse> マウスコードの先頭部分 *<Mouse>*
531
- t_PS bracketed paste の開始 | xterm-bracketed-paste | *t_PS* *'t_PS'*
532
- t_PE bracketed paste の終了 | xterm-bracketed-paste | *t_PE* *'t_PE'*
615
+
616
+ t_PS <PasteStart> bracketed paste の開始 *t_PS* *'t_PS'*
617
+ | xterm-bracketed-paste |
618
+ t_PE <PasteEnd> bracketed paste の終了 *t_PE* *'t_PE'*
619
+ | xterm-bracketed-paste |
620
+ <FocusGained> Vim ウィンドウがフォーカスを取得 (内部のみ)
621
+ <FocusLost> Vim ウィンドウがフォーカスを消失 (内部のみ)
533
622
534
623
Note t_so と t_mrについて: termcap に "so" エントリがない場合は "mr" が使われ
535
624
ます。逆に "mr" がない場合は "so" が使われます。"se" と "me" も同じ関係にあり
@@ -566,14 +655,18 @@ Vimは端末がサポートするならば、トゥルーカラーを使うこ
566
655
び | highlight-guibg | を流用する) をサポートします。これを機能させるには
567
656
'termguicolors' オプションをセットする必要があります。
568
657
トゥルーカラーをサポートする端末の一覧については
569
- https://gist.github.com/XVilka/8346728 を参照してください。
570
-
571
- 場合によっては 'termguicolors' を設定するだけでは不十分で、| t_8f | と | t_8b | オ
572
- プションを明示的に設定しなければならないことがあります。これらのオプションのデ
573
- フォルトはそれぞれ "^[[38;2;%lu;%lu;%lum" と "^[[48;2;%lu;%lu;%lum" で、
574
- `$TERM ` が `xterm ` の時にだけ設定されます。幾つかの端末は同じシーケンスを受け
575
- 付けますが、全てのセミコロンをコロンで置き換える必要があります (実際にはコチラ
576
- のほうが互換性の高い方法ですが、広くはサポートされていません): >
658
+ https://github.com/termstandard/colors を参照してください。
659
+
660
+ 使用する RGB カラーを端末に伝えるために、| t_8f | と | t_8b | termcap エントリが使
661
+ 用されます。これらは、ほとんどの端末で動作する値にデフォルトで設定されていま
662
+ す。使用している端末で動作しない場合は、手動で設定することができます。デフォル
663
+ ト値は以下のように設定されています: >
664
+ let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
665
+ let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
666
+
667
+ 端末によっては、セミコロンをすべてコロンに置き換えた同じシーケンスを受け付ける
668
+ ものもあります (この方が実際には互換性が高いですが、あまり広くサポートされてい
669
+ ません): >
577
670
let &t_8f = "\<Esc>[38:2:%lu:%lu:%lum"
578
671
let &t_8b = "\<Esc>[48:2:%lu:%lu:%lum"
579
672
@@ -590,7 +683,7 @@ xterm でのウィンドウサイズ変更はリソース allowWindowOps が有
590
683
既定値を上書きするには、次の行を ~/.Xdefaults または ~/.Xresources に書きま
591
684
す:
592
685
>
593
- XTerm*allowWindowOps: true
686
+ XTerm*allowWindowOps: true
594
687
595
688
そして "xrdb -merge .Xresources" を実行し、この設定を有効化します。コンテキス
596
689
トメニュー(CTRL キーを押しながらマウス右ボタン)でこの値を確認できます。
@@ -625,9 +718,13 @@ GUIが動作している時 't_Co' は 16777216 に設定されます。
625
718
Vimが挿入モードに入るときにはエスケープシーケンス 't_SI' が送られます。置換モ
626
719
ードに入るときにはエスケープシーケンス 't_SR' が設定されていれば送られます。設
627
720
定されていない場合には 't_SI' が送られます。挿入モード及び置換モードを抜けると
628
- きには 't_EI' が送られます。これらは挿入や置換モードにおいてカーソルの形や色を
629
- 変えるのに利用できます。またこれらは標準的な termcap/terminfo エントリではない
630
- ので、自分で設定する必要があります。
721
+ きには 't_EI' が送られます。
722
+ Note: 't_EI' が設定されていない場合、't_SI' と 't_SR' は送信されません。また、
723
+ 't_SI' または 't_SR' が設定されていないときは、't_EI' は一度だけ送られます。
724
+
725
+ これは、挿入モードや置換モードでカーソルの形や色を変更するために使用できます。
726
+ これらは標準の termcap/terminfo 項目ではないので、自分で設定する必要がありま
727
+ す。
631
728
632
729
以下は xterm でカーソルの色を変える例です: >
633
730
if &term =~ "xterm"
@@ -637,6 +734,18 @@ Vimが挿入モードに入るときにはエスケープシーケンス 't_SI'
637
734
endif
638
735
NOTE: Vim を終了するとき、ノーマルモードでのカーソル設定がそのまま残ります。
639
736
Vim を起動する前のカーソル設定は復元されません。
737
+
738
+ Windows Terminalの場合は、次のような使い方ができます: >
739
+ " Note: これは `set termguicolors` または `set t_Co=256` の後に設定する。
740
+ if &term =~ 'xterm' || &term == 'win32'
741
+ " DECSCUSR エスケープシーケンスを使用する
742
+ let &t_SI = "\e[5 q" " バー点滅
743
+ let &t_SR = "\e[3 q" " 下線点滅
744
+ let &t_EI = "\e[1 q" " ブロック点滅
745
+ let &t_ti ..= "\e[1 q" " ブロック点滅
746
+ let &t_te ..= "\e[0 q" " デフォルト (端末に依存するが、通常はブロック点滅)
747
+ endif
748
+
640
749
{| +cursorshape | つきでコンパイルしたときのみ利用可能}
641
750
642
751
*termcap-title*
@@ -746,8 +855,9 @@ Amiga 上では端末名が "amiga" または "builtin_amiga" であればアミ
746
855
747
856
お使いの端末が領域のスクロールをサポートしていないが、行の挿入・削除コマンドを
748
857
サポートしている場合、複数のウィンドウを開いた状態でスクロールすると、行が上下
749
- するかもしれません。これが好ましくない場合は 'ttyfast' をオンにしてください。
750
- するとウィンドウをスクロールするのでなく再描画するようになります。
858
+ するかもしれません。これは、'ttyfast' オプションがリセットされている場合に起こ
859
+ ります。それを確認してください: >
860
+ verbose set ttyfast?
751
861
752
862
お使いの端末におけるスクロールが非常に遅いが再描画は遅くないという場合は、
753
863
'ttyscroll' を 3 などの小さな値にしてください。すると、3 行より多くスクロール
@@ -978,6 +1088,8 @@ MS-Windows と xterm ではダブルクリックの間隔は 'mousetime' で設
978
1088
されるようになります。これはボタンが離されるまで続き、ボタンを離すと文字単位に
979
1089
戻ります。
980
1090
1091
+ マウスによるスクロールについては | scroll-mouse-wheel | を参照。
1092
+
981
1093
*gpm-mouse*
982
1094
GPM マウスは | +mouse_gpm | 機能を有効にしてコンパイルしたときのみサポートされま
983
1095
す。GPM マウスドライバ(Linux コンソール)はクアドラプルクリックに対応していませ
0 commit comments