Skip to content

Commit 7d34c1d

Browse files
authored
Merge pull request #1324 from vim-jp/hh2-update-term
Update term.{txt,jax}
2 parents 6a78e66 + f975991 commit 7d34c1d

File tree

2 files changed

+288
-67
lines changed

2 files changed

+288
-67
lines changed

doc/term.jax

Lines changed: 143 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
*term.txt* For Vim バージョン 9.0. Last change: 2022 Apr 23
1+
*term.txt* For Vim バージョン 9.0. Last change: 2023 Jan 15
22

33

44
VIMリファレンスマニュアル by Bram Moolenaar
@@ -42,15 +42,10 @@ Unix 以外のシステムでは、TERMCAP を定義してコンパイルした
4242
用できます。
4343

4444
*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+
照してください。
5449

5550
termcap のコードが組み込まれているときは、termcap ファイルと組み込みの termcap
5651
から、使われている端末用のキーシーケンスを取得しようとします。使われている端末
@@ -89,7 +84,14 @@ termcap のコードが組み込まれているときは、termcap ファイル
8984

9085
Note: 't_ti' が空でない場合、Vimは代替画面への切り替えが生じると想定します。こ
9186
れにより、シェルコマンドの実行時または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+
す。
9395

9496
*xterm-bracketed-paste*
9597
't_BE' がオンの場合、raw モードに入るときに 't_BE' が端末に送信され、raw モー
@@ -113,6 +115,10 @@ Note: 't_ti' が空でない場合、Vimは代替画面への切り替えが生
113115
もし Vim の実行中にこれを実行した場合、bracketed paste を無効化するため 't_BD'
114116
が端末に送信されます。
115117

118+
|t_PS| または |t_PE| が設定されていない場合、|t_BE| は使用されません。これは、
119+
貼り付けられたテキストを囲むエスケープコードが認識できない場合に、bracketed
120+
paste が有効にならないようにするためです。
121+
116122
端末が bracketed paste をサポートしているにもかかわらずオプションが自動的に設
117123
定されない場合、以下のような設定を試すことができます: >
118124
@@ -122,7 +128,11 @@ Note: 't_ti' が空でない場合、Vimは代替画面への切り替えが生
122128
exec "set t_PS=\e[200~"
123129
exec "set t_PE=\e[201~"
124130
endif
125-
<
131+
132+
terminfo エントリ "BE"、"BD"、"PS"、"PE" は、ncurses バージョン 6.4、2023 年初
133+
頭に、一部の端末用に追加されました。このバージョンであれば、端末を手動で設定す
134+
る必要はないかもしれません。
135+
126136
*tmux-integration*
127137
tmux 内で Vim を実行する際に問題が発生する場合、ここにいくつかのヒントがありま
128138
す。もし動かないならその部分はコメントアウトすることができます(これは tmux を
@@ -289,6 +299,56 @@ Vim がシーケンス |t_RV| (バージョン要求)への応答を受け取っ
289299
で始まっていれば、その端末は 8 ビットモードであると認識し、全てのキーシーケン
290300
スを 8 ビット版に変換します。
291301

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+
292352
==============================================================================
293353
2. 端末オプション *terminal-options* *termcap-options* *E436*
294354

@@ -368,8 +428,11 @@ termcap コードに対応するオプションを設定することによって
368428

369429
Vim 独自のもの (標準的なコードはないもの):
370430
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'*
373436
t_Te 取り消し線終了 *t_Te* *'t_Te'*
374437
t_Ts 取り消し線モード *t_Ts* *'t_Ts'*
375438
t_IS アイコンテキスト設定開始 *t_IS* *'t_IS'*
@@ -385,6 +448,10 @@ Vim 独自のもの (標準的なコードはないもの):
385448
t_RV 端末バージョン文字列を要求 (xterm および他の *t_RV* *'t_RV'*
386449
仮想端末用) 応答は |v:termresponse| に格納される |xterm-8bit|
387450
|'ttymouse'| |xterm-codes|
451+
t_XM マウスレポートの有効/無効 *t_XM* *'t_XM'*
452+
以下の |mouse-reporting| 参照
453+
t_RK 端末キーボートプロトコル状態を要求する *t_RK* *'t_RK'*
454+
|t_TI| の後に送信
388455
t_u7 カーソル位置を要求 (xterm 用) *t_u7* *'t_u7'*
389456
|'ambiwidth'| 参照
390457
応答は |v:termu7resp| に格納される
@@ -413,7 +480,7 @@ Vim 独自のもの (標準的なコードはないもの):
413480
t_Si アイコンテキストをスタックに保存 *t_Si* *'t_Si'*
414481
t_Ri アイコンテキストをスタックから復元 *t_Ri* *'t_Ri'*
415482
t_TE "raw" モードの終了 *t_TE* *'t_TE'*
416-
t_TI 端末を "raw" モードにする *t_TI* *'t_TI'*
483+
t_TI 端末を "raw" モードにする *t_TI* *'t_TI'*
417484
t_fe フォーカスイベント追跡を有効化する *t_fe* *'t_fe'*
418485
|xterm-focus-event|
419486
t_fd フォーカスイベント追跡を無効化する *t_fd* *'t_fd'*
@@ -436,6 +503,22 @@ t_SH は 1 つの引数を取らなければなりません:
436503
t_RS は、t_RV に対する応答を受け取った場合のみ送られます。termresponse から
437504
Terminal.app が認識され得る場合、Mac OS 上では使われません。
438505

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+
439522

440523
キーコード *terminal-key-codes*
441524
Note: 可能なかぎり <> 形式を使ってください。
@@ -496,6 +579,7 @@ Note: 可能なかぎり <> 形式を使ってください。
496579
t_%1 <Help> ヘルプキー *t_%1* *'t_%1'*
497580
t_&8 <Undo> アンドゥキー *t_&8* *'t_&8'*
498581
t_kI <Insert> インサートキー *t_kI* *'t_kI'*
582+
<kInsert> キーパッドインサートキー
499583
t_kD <Del> デリートキー *t_kD* *'t_kD'*
500584
t_kb <BS> バックスペースキー *t_kb* *'t_kb'*
501585
t_kB <S-Tab> バックタブ(シフト+タブ) *<S-Tab>* *t_kB* *'t_kB'*
@@ -528,8 +612,13 @@ Note: 可能なかぎり <> 形式を使ってください。
528612
t_KK <k8> キーパッド 8 *<k8>* *t_KK* *'t_KK'*
529613
t_KL <k9> キーパッド 9 *<k9>* *t_KL* *'t_KL'*
530614
<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 ウィンドウがフォーカスを消失 (内部のみ)
533622

534623
Note t_so と t_mrについて: termcap に "so" エントリがない場合は "mr" が使われ
535624
ます。逆に "mr" がない場合は "so" が使われます。"se" と "me" も同じ関係にあり
@@ -566,14 +655,18 @@ Vimは端末がサポートするならば、トゥルーカラーを使うこ
566655
|highlight-guibg| を流用する) をサポートします。これを機能させるには
567656
'termguicolors' オプションをセットする必要があります。
568657
トゥルーカラーをサポートする端末の一覧については
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+
ません): >
577670
let &t_8f = "\<Esc>[38:2:%lu:%lu:%lum"
578671
let &t_8b = "\<Esc>[48:2:%lu:%lu:%lum"
579672
@@ -590,7 +683,7 @@ xterm でのウィンドウサイズ変更はリソース allowWindowOps が有
590683
既定値を上書きするには、次の行を ~/.Xdefaults または ~/.Xresources に書きま
591684
す:
592685
>
593-
XTerm*allowWindowOps: true
686+
XTerm*allowWindowOps: true
594687
595688
そして "xrdb -merge .Xresources" を実行し、この設定を有効化します。コンテキス
596689
トメニュー(CTRL キーを押しながらマウス右ボタン)でこの値を確認できます。
@@ -625,9 +718,13 @@ GUIが動作している時 't_Co' は 16777216 に設定されます。
625718
Vimが挿入モードに入るときにはエスケープシーケンス 't_SI' が送られます。置換モ
626719
ードに入るときにはエスケープシーケンス 't_SR' が設定されていれば送られます。設
627720
定されていない場合には '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+
す。
631728

632729
以下は xterm でカーソルの色を変える例です: >
633730
if &term =~ "xterm"
@@ -637,6 +734,18 @@ Vimが挿入モードに入るときにはエスケープシーケンス 't_SI'
637734
endif
638735
NOTE: Vim を終了するとき、ノーマルモードでのカーソル設定がそのまま残ります。
639736
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+
640749
{|+cursorshape| つきでコンパイルしたときのみ利用可能}
641750

642751
*termcap-title*
@@ -746,8 +855,9 @@ Amiga 上では端末名が "amiga" または "builtin_amiga" であればアミ
746855

747856
お使いの端末が領域のスクロールをサポートしていないが、行の挿入・削除コマンドを
748857
サポートしている場合、複数のウィンドウを開いた状態でスクロールすると、行が上下
749-
するかもしれません。これが好ましくない場合は 'ttyfast' をオンにしてください。
750-
するとウィンドウをスクロールするのでなく再描画するようになります。
858+
するかもしれません。これは、'ttyfast' オプションがリセットされている場合に起こ
859+
ります。それを確認してください: >
860+
verbose set ttyfast?
751861
752862
お使いの端末におけるスクロールが非常に遅いが再描画は遅くないという場合は、
753863
'ttyscroll' を 3 などの小さな値にしてください。すると、3 行より多くスクロール
@@ -978,6 +1088,8 @@ MS-Windows と xterm ではダブルクリックの間隔は 'mousetime' で設
9781088
されるようになります。これはボタンが離されるまで続き、ボタンを離すと文字単位に
9791089
戻ります。
9801090

1091+
マウスによるスクロールについては |scroll-mouse-wheel| を参照。
1092+
9811093
*gpm-mouse*
9821094
GPM マウスは |+mouse_gpm| 機能を有効にしてコンパイルしたときのみサポートされま
9831095
す。GPM マウスドライバ(Linux コンソール)はクアドラプルクリックに対応していませ

0 commit comments

Comments
 (0)