vim-jp / vimdoc-ja / term

term - Vim日本語ドキュメント

メインヘルプファイルに戻る
*term.txt*      For Vim バージョン 8.0.  Last change: 2016 Sep 02


                VIMリファレンスマニュアル    by Bram Moolenaar


端末情報                                                *terminal-info*

Vim はユーザーが使っている端末の情報にもとづいて、ユーザーがどのキーを押したか
を認識します。この情報が正しくないと、スクリーンは乱れ、キーが認識されなくなっ
てしまいます。スクリーンに対する操作は、キーコードのシーケンスを出力することで
実現されています。特殊なキーを押すとコードのシーケンスが出力されます。これらの
シーケンスは端末オプションに保存されています。|terminal-options|を参照。

NOTE|GUI| で実行しているときは、このドキュメントのほとんどの事柄は関係ありま
せん。

1. 起動                         |startup-terminal|
2. 端末オプション               |terminal-options|
3. ウィンドウサイズ             |window-size|
4. 端末の速度                   |slow-fast-terminal|
5. マウスの使用                 |mouse-using|

==============================================================================
1. 起動                                                 *startup-terminal*

Vim の起動時はデフォルトの端末タイプ向けの設定になっています。これは Amiga で
は標準の CLI ウィンドウ、MS-DOS では PC の端末、Unix では ANSI 端末です。
他に 2, 3 の端末が常に使用可能です。後述の |builtin-terms| を参照。

Vim の引数 '-T' により端末名を指定することができます。これが指定されない場合、
環境変数 TERM から端末名を取得しようとします。

                                *termcap* *terminfo* *E557* *E558* *E559*
Unix では terminfo データベースや termcap ファイルが使われます。全てのドキュメ
ントを通して、これのことを "termcap" と呼びます。コンパイル時に、configure に
より terminfo と termcap を使うかどうかが自動的に決定されます。":version" の出
力に |+terminfo| が含まれていれば terminfo を使用しています。|xterm-screens|
参照。

Unix 以外のシステムでは、TERMCAP を定義してコンパイルしたときのみ termcap を使
用できます。

                                        *builtin-terms* *builtin_terms*
どの組み込み端末が利用できるかは、feature.h で定義されているマクロに依存します。
これらはコンパイル時に設定しなければなりません:
    define              ":version" の出力       組み込まれる端末
NO_BUILTIN_TCAPS        -builtin_terms          なし
SOME_BUILTIN_TCAPS      +builtin_terms          一般的なもの (デフォルト)
ALL_BUILTIN_TCAPS       ++builtin_terms         全て使用可能

利用可能な組み込み端末のリストを見るには ":set term=xxx" とします(GUI でないと
きのみ)。|+builtin_terms|も参照。

termcap のコードが組み込まれているときは、termcap ファイルと組み込みの
termpcap から、使われている端末用のキーシーケンスを取得しようとします。使われ
ている端末のエントリがあるならば、その両方が使われます。どちらが先に使われるか
はオプション 'ttybuiltin' に依存します。

'ttybuiltin' on         1: 組み込み termcap     2: 外部 termcap
'ttybuiltin' off        1: 外部 termcap         2: 組み込み termcap

ある端末オプションが片方にないときは、もう一方から取得します。ある端末オプショ
ンが両方にあるときは、先に見つかった方が使われます。

どの外部 termcap ファイルが使われるかはシステムによって異なり、環境変数
"TERMCAP" と "TERMPATH" に依存します。"man tgetent" を参照してください。

端末によって設定を切り替える                    *term-dependent-settings*

端末名によってオプションやマッピングを切り替えるには .vimrc で行うのがベスト
です。例:

   if &term == "xterm"
     ... xterm 用のマッピングと設定 ...
   elseif &term =~ "vt10."
     ... vt100, vt102 用のマッピングと設定 ...
   endif

                                                *raw-terminal-mode*
通常の編集に入るとき、端末は raw モードになります。このとき、't_ti' と 't_ks'
で定義されるシーケンスが端末に送信されます。これらのシーケンスにより、端末は
termcap のコードが有効になり、カーソルキーとファンクションキーが使えるようにな
ります。Vim が終了するとき、端末を起動前のモードに戻します。このとき 't_te' と
't_ke' で定義されるシーケンスが端末に送信されます。Amiga では、外部プログラム
を起動するコマンド(例: "!!")を実行するとき、一時的に端末が通常モードになります。
そのため、print キーを押してスクリーンへの出力を止めることができます。<BS> を
押すと出力が再開します。

                                                        *cs7-problem*
Note: Vim を起動した後で端末の設定を変えると、設定が一貫しない状態になるかもし
れません。Solaris 2.5 で "stty cs8 parenb" が "stty cs7 parenb" に復元されてし
まうという報告が上がっています。代わりに "stty cs8 -parenb -istrip" を使ってく
ださい。これは正しく復元されます。

't_ks' を送った後では、カーソルキーが termcap で定義されているのとは異なるコー
ドを送るという意味で、ある種の termcap エントリは正しくありません。この問題を
避けるには 't_ks' (と 't_ke')を空文字列にします。これは初期化の最中に行わねば
なりません(|initialization| を参照)。そうでないと手遅れです。

いくつかの termcap エントリは、最上位ビットが常にオフになっていると仮定してい
ます。例: Amiga のカーソル↑エントリは例えば ":ku=\E[A:" です。しかし実際には
"\233A" が送られます。これは、シリアル回線上で使っているときなど、最上位ビット
がオフならば正しく動作します。カーソルキーが使えない場合はこのエントリを
":ku=\233A:" にしてみてください。

":ku=\E[A:" というエントリをもつ termcap エントリがあります。しかし実際には
"\233A" が送られます。出力において "\E[" と "\233" はしばしば同値であり、入力
においてはそうでありません。この問題を解決するには、termcap エントリを変更する
か、:set コマンドでキーコードを変更するしかありません。

多くのカーソルキーのコードは <Esc> から始まります。Vim はこれが 1 つの <Esc> 
キーを押下したものか、カーソルキーのシーケンスのはじまりかを判定しなければなり
ません。そのため、次の文字が届くのを待ちます。1 秒以内に次のキーが届かない場合
は <Esc> が押されたとみなします。非常に遅いシステムではこれが誤判定され、カー
ソルキーが使えなくなることがあります。この問題に出会った場合は 'timeout' をオ
フにしてください。Vim は <Esc> の後に届く文字を待ちます。1 つの <Esc> を入力す
るには 2 回押さなければなりません。'esckeys' をオフにすると、挿入モードでのこ
の問題を解決できます。しかし挿入モードでカーソルキーとファンクションキーが使え
なくなってしまいます。

Amiga でウィンドウリサイズを認識するには、端末名が "amiga" か "builtin_amiga"
でなければなりません。

ある種の端末ではカーソルキーに混乱を招きやすいコードを割り当てています。
televideo 925 はその一例です。televideo 925 はカーソル左キーで CTRL-H を送りま
す。そのためバックスペースとカーソル左を区別することは不可能です。この問題のた
め CTRL-H は常にカーソル左と認識されます。

                                        *vt100-cursor-keys* *xterm-cursor-keys*
vt100 や xterm などの端末ではカーソルキーを押すと <Esc>OA や <Esc>OB などが送
られます。不運なことに、これらは「挿入を終了し、上に新規行を作成して 'A' や
'B' を挿入する」という挿入モードでのコマンドでもあります。
このコマンドを実行するのでなく、カーソルキーのシーケンスが入力されたのだと誤認
識してしまうかもしれません。これを防ぎ、意図通りの動作をさせるには次の設定を使
います:
        :set notimeout          " マッピングについてタイムアウトしない
        :set ttimeout           " 端末のキーコードについてタイムアウトする
        :set timeoutlen=100     " 100 ミリ秒後にタイムアウトする
この設定をすると、キーコードが 100 ミリ秒以内に送られた場合のみカーソルキーと
認識されます。ユーザーが普通に入力するときはそんなに速くないので、たとえまった
く同じキーコードのシーケンスを送信しても、個々のコマンドと認識されます。

                                *vt100-function-keys* *xterm-function-keys*
xterm は vt100 互換モードと非互換モードの両方のモードで F1 から F4 のファンク
ションキーを送信できます。Vim は xterm がどちらのコードを送信するかわからない
ので、両方のタイプのキーを認識するようになっています。<Home> と <End> について
も同様です。
                        通常                    vt100
        <F1>    t_k1    <Esc>[11~       <xF1>   <Esc>OP     *<xF1>-xterm*
        <F2>    t_k2    <Esc>[12~       <xF2>   <Esc>OQ     *<xF2>-xterm*
        <F3>    t_k3    <Esc>[13~       <xF3>   <Esc>OR     *<xF3>-xterm*
        <F4>    t_k4    <Esc>[14~       <xF4>   <Esc>OS     *<xF4>-xterm*
        <Home>  t_kh    <Esc>[7~        <xHome> <Esc>OH     *<xHome>-xterm*
        <End>   t_@7    <Esc>[4~        <xEnd>  <Esc>OF     *<xEnd>-xterm*

Vim が起動したときに <xF1> が <F1>へ、<xF2> が <F2> へマッピングされます。これ
により、デフォルトではどちらのコードも同じ動作になります。<xF2> へのマッピング
を作ると、デフォルトのマッピングが上書きされます。そして <F2> と <xF2> に別の
動作をさせることができます。

                                                        *xterm-shifted-keys*
新しいバージョンの xterm はシフトキーとファンクションキー、特殊キーの組み合わ
せをサポートしています。Vim はこれらのほとんどを認識します。":set termcap" に
よりどれがサポートされているか、そのコードは何かを調べることができます。大抵の
場合、これらは termcap には入っていません。builtin_xterm の termcap でのみサ
ポートされています。

                                                        *xterm-modifier-keys*
新しいバージョンの xterm は Alt と Ctrl キーとほとんどのファンクションキーの組
み合わせをサポートしています。全てのキーに対する Alt、Ctrl、Shift の組み合わせ
全てを termcap に追加しなくてもいいように、termcap エントリの最後に ";*X" とい
う特殊なシーケンスを追加することができます。この "X" はどんな文字でもよく、'~'
がよく使われます。";*" は省略可能な修飾キー引数を意味します。";2" は
Shift、";3" は Alt、";5" はCtrl、";9" は Meta (Alt と異なる場合)。これらを組み
合わせることができます。例:
        :set <F8>=^[[19;*~
        :set <Home>=^[[1;*H
これらのコードのもう1つの特殊な性質は、他のコードで上書きできないことです。
xterm から直接得られたコードが |t_RV| それらを上書きするのを避けるためです。

                                                        *xterm-scroll-region*
Sun などのプラットフォームのデフォルトの xterm 用の termcap エントリには領域の
スクロール用のエントリが入っていません。/etc/termcap の xterm エントリに
":cs=\E[%i%d;%dr:" を追加すれば全てうまく動作するでしょう。

                                                        *xterm-end-home-keys*
いくつかのシステム(少なくとも FreeBSD と XFree86 3.1.2)では、<End> と <Home>
キーが送信するキーに <NUL> 文字が含まれています。これらのキーが適切なキーコー
ドを送信するようにするために、次の行を ~/.Xdefaults に追加してください:

*VT100.Translations:            #override \n\
                <Key>Home: string("0x1b") string("[7~") \n\
                <Key>End: string("0x1b") string("[8~")

                                                *xterm-8bit* *xterm-8-bit*
xterm は 8 ビットエスケープシーケンスを使うモードで動作させることができます。
このモードでは <Esc>[ の代わりに CSI コードが使われます。この利点は、挿入モー
ドで <Esc> が即座に認識されることです。なぜなら、特殊キーの開始と紛らわしくな
いためです。
組み込みの termcap エントリでは、オプション 'term' のどこかに "8bit" が含まれ
ていないか確認されます。含まれていると、termcap エントリ、マウス等に 8 ビット
文字が使われます。シェルにおいて $TERM を "xterm-8bit" に設定しておくと、Vim 
はそれに気づいて自動的に 8 ビットの設定を使うようになります。
Vim がシーケンス |t_RV| (バージョン要求)への応答を受け取ったとき、それが CSI 
で始まっていれば、その端末は 8 ビットモードであると認識し、全てのキーシーケン
スを 8 ビット版に変換します。

==============================================================================
2. 端末オプション               *terminal-options* *termcap-options* *E436*

端末オプションは普通のオプションとまったく同じように設定できます。しかし端末オ
プションは ":set all" コマンドでは表示されないので、代わりに ":set termcap" を
使ってください。

termcap コードに対応するオプションを設定することによって、そのシーケンスを変更
することができます。例:
        :set t_ce=^V^[[K        (CTRL-V, <Esc>, [, K)

{Vi: 端末オプションは存在しない。Vi を終了し、termcap エントリを編集して再起動
しなければならない}

端末オプションの一覧を後で載せます。対応する termcap のコードと、それに対応す
るオプション名の最後の2文字が等しくなっています。絶対に必要な termcap コードは
カーソルを移動させる 't_cm' の1つだけです。

オプション 't_da''t_db''t_ms''t_xs''t_xn' は termcap におけるフラグに
対応しています。termcap にこれらのフラグが存在すると、対応するオプションに "y"
が設定されます。空でない文字列を設定するとオンになり、空文字列を設定するとオフ
になります。't_CS' もこれと同様ですが、termcap フラグではありません。

出力コード
        option  意味

        t_AB    背景色を設定 (ANSI)                             *t_AB* *'t_AB'*
        t_AF    文字色を設定 (ANSI)                             *t_AF* *'t_AF'*
        t_AL    指定数の空行を追加する                          *t_AL* *'t_AL'*
        t_al    空行を追加する                                  *t_al* *'t_al'*
        t_bc    バックスペース文字                              *t_bc* *'t_bc'*
        t_cd    スクリーンの最後までクリア                      *t_cd* *'t_cd'*
        t_ce    行末までクリア                                  *t_ce* *'t_ce'*
        t_cl    画面をクリア                                    *t_cl* *'t_cl'*
        t_cm    カーソル移動 (必須!)                      *E437* *t_cm* *'t_cm'*
        t_Co    色数                                            *t_Co* *'t_Co'*
                                                                *t_CS* *'t_CS'*
        t_CS    空でなければスクロール範囲に対する相対アドレスでカーソルを移動
        t_cs    スクロール範囲を定義                            *t_cs* *'t_cs'*
        t_CV    縦スクロール範囲を定義                          *t_CV* *'t_CV'*
        t_da    空でない場合は上の行からスクロールダウンする    *t_da* *'t_da'*
        t_db    空でない場合は下の行からスクロールアップする    *t_db* *'t_db'*
        t_DL    複数行を削除                                    *t_DL* *'t_DL'*
        t_dl    行を削除                                        *t_dl* *'t_dl'*
        t_fs    ウィンドウタイトルの終端を設定(ステータスラインから) *t_fs* *'t_fs'*
        t_ke    キーパッド使用終了                              *t_ke* *'t_ke'*
        t_ks    キーパッド使用開始                              *t_ks* *'t_ks'*
        t_le    カーソルを1文字分左へ移動                       *t_le* *'t_le'*
        t_mb    点滅モード                                      *t_mb* *'t_mb'*
        t_md    太字モード                                      *t_md* *'t_md'*
        t_me    通常モード (t_mr, t_mb, t_md, 色設定を解除)     *t_me* *'t_me'*
        t_mr    反転モード                                      *t_mr* *'t_mr'*
                                                                *t_ms* *'t_ms'*
        t_ms    空でない場合は強調・反転モードでカーソルを移動できる
        t_nd    非破壊スペース{訳注: カーソルを1文字分右に移動} *t_nd* *'t_nd'*
        t_op    元の色のペアに戻す                              *t_op* *'t_op'*
        t_RI    カーソルを指定数右へ移動                        *t_RI* *'t_RI'*
        t_Sb    背景色を設定                                    *t_Sb* *'t_Sb'*
        t_Sf    文字色を設定                                    *t_Sf* *'t_Sf'*
        t_se    強調終了                                        *t_se* *'t_se'*
        t_so    強調モード                                      *t_so* *'t_so'*
        t_sr    逆スクロール                                    *t_sr* *'t_sr'*
        t_te    "termcap" モードから抜ける                      *t_te* *'t_te'*
        t_ti    端末を "termcap" モードにする                   *t_ti* *'t_ti'*
        t_ts    (ステータスラインに)ウィンドウタイトル設定開始  *t_ts* *'t_ts'*
        t_ue    下線終了                                        *t_ue* *'t_ue'*
        t_us    下線モード                                      *t_us* *'t_us'*
        t_Ce    下波線終了                                      *t_Ce* *'t_Ce'*
        t_Cs    下波線モード                                    *t_Cs* *'t_Cs'*
        t_ut    現在の背景色を使ってクリア                      *t_ut* *'t_ut'*
        t_vb    ビジュアルベル                                  *t_vb* *'t_vb'*
        t_ve    カーソル表示                                    *t_ve* *'t_ve'*
        t_vi    カーソル非表示                                  *t_vi* *'t_vi'*
        t_vs    カーソル強調表示                                *t_vs* *'t_vs'*
                                                                *t_xs* *'t_xs'*
        t_xs    空でない場合は強調が上書きによって消されない(hpterm)
                                                                *t_xn* *'t_xn'*
        t_xn    空ではない場合、画面の右端のセルに書いた文字はスクロールを
                発生させない
        t_ZH    斜体モード                                      *t_ZH* *'t_ZH'*
        t_ZR    斜体終了                                        *t_ZR* *'t_ZR'*

Vim 独自のもの (標準的なコードはないもの):
        t_IS    アイコンテキスト設定開始                        *t_IS* *'t_IS'*
        t_IE    アイコンテキスト設定終了                        *t_IE* *'t_IE'*
        t_WP    ウィンドウ位置 (Y, X) をピクセルで指定          *t_WP* *'t_WP'*
        t_WS    ウィンドウサイズ (height, width) を文字数で指定 *t_WS* *'t_WS'*
        t_SI    挿入モード開始 (バー型のカーソル)               *t_SI* *'t_SI'*
        t_SR    置換モードの開始 (下線型のカーソル)             *t_SR* *'t_SR'*
        t_EI    挿入または置換モード終了(ブロック型カーソル)    *t_EI* *'t_EI'*
                |termcap-cursor-shape|
        t_RV    端末バージョン文字列を要求 (xterm 用)           *t_RV* *'t_RV'*
                |xterm-8bit| |v:termresponse| |'ttymouse'| |xterm-codes|
        t_u7    カーソル位置を要求 (xterm 用)                   *t_u7* *'t_u7'*
                |'ambiwidth'| 参照
        t_RB    端末の背景色を要求                              *t_RB* *'t_RB'*
        t_8f    前景色を設定する (R, G, B)                      *t_8f* *'t_8f'*
                |xterm-true-color|
        t_8b    背景色を設定する (R, G, B)                      *t_8b* *'t_8b'*
                |xterm-true-color|

キーコード
Note: 可能なかぎり <> 形式を使ってください。

        オプション名            意味

        t_ku    <Up>            カーソル上                      *t_ku* *'t_ku'*
        t_kd    <Down>          カーソル下                      *t_kd* *'t_kd'*
        t_kr    <Right>         カーソル右                      *t_kr* *'t_kr'*
        t_kl    <Left>          カーソル左                      *t_kl* *'t_kl'*
                <xUp>           カーソル上の代替                *<xUp>*
                <xDown>         カーソル下の代替                *<xDown>*
                <xRight>        カーソル右の代替                *<xRight>*
                <xLeft>         カーソル左の代替                *<xLeft>*
                <S-Up>          シフト+カーソル上
                <S-Down>        シフト+カーソル下
        t_%i    <S-Right>       シフト+カーソル右              *t_%i* *'t_%i'*
        t_#4    <S-Left>        シフト+カーソル左              *t_#4* *'t_#4'*
        t_k1    <F1>            F1                              *t_k1* *'t_k1'*
                <xF1>           もう1つの F1                    *<xF1>*
        t_k2    <F2>            F2                      *<F2>*  *t_k2* *'t_k2'*
                <xF2>           もう1つのF2                     *<xF2>*
        t_k3    <F3>            F3                      *<F3>*  *t_k3* *'t_k3'*
                <xF3>           もう1つのF3                     *<xF3>*
        t_k4    <F4>            F4                      *<F4>*  *t_k4* *'t_k4'*
                <xF4>           もう1つのF4                     *<xF4>*
        t_k5    <F5>            F5                      *<F5>*  *t_k5* *'t_k5'*
        t_k6    <F6>            F6                      *<F6>*  *t_k6* *'t_k6'*
        t_k7    <F7>            F7                      *<F7>*  *t_k7* *'t_k7'*
        t_k8    <F8>            F8                      *<F8>*  *t_k8* *'t_k8'*
        t_k9    <F9>            F9                      *<F9>*  *t_k9* *'t_k9'*
        t_k;    <F10>           F10                     *<F10>* *t_k;* *'t_k;'*
        t_F1    <F11>           F11                     *<F11>* *t_F1* *'t_F1'*
        t_F2    <F12>           F12                     *<F12>* *t_F2* *'t_F2'*
        t_F3    <F13>           F13                     *<F13>* *t_F3* *'t_F3'*
        t_F4    <F14>           F14                     *<F14>* *t_F4* *'t_F4'*
        t_F5    <F15>           F15                     *<F15>* *t_F5* *'t_F5'*
        t_F6    <F16>           F16                     *<F16>* *t_F6* *'t_F6'*
        t_F7    <F17>           F17                     *<F17>* *t_F7* *'t_F7'*
        t_F8    <F18>           F18                     *<F18>* *t_F8* *'t_F8'*
        t_F9    <F19>           F19                     *<F19>* *t_F9* *'t_F9'*
                <S-F1>          シフト+F1
                <S-xF1>         もう1つの<S-F1>                 *<S-xF1>*
                <S-F2>          シフト+F2                      *<S-F2>*
                <S-xF2>         もう1つの<S-F2>                 *<S-xF2>*
                <S-F3>          シフト+F3                      *<S-F3>*
                <S-xF3>         もう1つの<S-F3>                 *<S-xF3>*
                <S-F4>          シフト+F4                      *<S-F4>*
                <S-xF4>         もう1つの<S-F4>                 *<S-xF4>*
                <S-F5>          シフト+F5                      *<S-F5>*
                <S-F6>          シフト+F6                      *<S-F6>*
                <S-F7>          シフト+F7                      *<S-F7>*
                <S-F8>          シフト+F8                      *<S-F8>*
                <S-F9>          シフト+F9                      *<S-F9>*
                <S-F10>         シフト+F10                     *<S-F10>*
                <S-F11>         シフト+F11                     *<S-F11>*
                <S-F12>         シフト+F12                     *<S-F12>*
        t_%1    <Help>          ヘルプキー                      *t_%1* *'t_%1'*
        t_&8    <Undo>          アンドゥキー                    *t_&8* *'t_&8'*
        t_kI    <Insert>        インサートキー                  *t_kI* *'t_kI'*
        t_kD    <Del>           デリートキー                    *t_kD* *'t_kD'*
        t_kb    <BS>            バックスペースキー              *t_kb* *'t_kb'*
        t_kB    <S-Tab>         バックタブ(シフト+タブ) *<S-Tab>* *t_kB* *'t_kB'*
        t_kh    <Home>          ホームキー                      *t_kh* *'t_kh'*
        t_#2    <S-Home>        シフト+ホームキー   *<S-Home>* *t_#2* *'t_#2'*
                <xHome>         もう1つのホームキー             *<xHome>*
        t_@7    <End>           エンドキー                      *t_@7* *'t_@7'*
        t_*7    <S-End>         シフト+エンドキー *<S-End>* *t_star7* *'t_star7'*
                <xEnd>          もう1つのエンドキー             *<xEnd>*
        t_kP    <PageUp>        ページアップキー                *t_kP* *'t_kP'*
        t_kN    <PageDown>      ページダウンキー                *t_kN* *'t_kN'*
        t_K1    <kHome>         キーパッドホームキー            *t_K1* *'t_K1'*
        t_K4    <kEnd>          キーパッドエンドキー            *t_K4* *'t_K4'*
        t_K3    <kPageUp>       キーパッドページアップキー      *t_K3* *'t_K3'*
        t_K5    <kPageDown>     キーパッドページダウンキー      *t_K5* *'t_K5'*
        t_K6    <kPlus>         キーパッドプラスキー  *<kPlus>* *t_K6* *'t_K6'*
        t_K7    <kMinus>        キーパッドマイナスキー *<kMinus>* *t_K7* *'t_K7'*
        t_K8    <kDivide>       キーパッド /        *<kDivide>* *t_K8* *'t_K8'*
        t_K9    <kMultiply>     キーパッド *      *<kMultiply>* *t_K9* *'t_K9'*
        t_KA    <kEnter>        キーパッドエンターキー *<kEnter>* *t_KA* *'t_KA'*
        t_KB    <kPoint>        キーパッド .         *<kPoint>* *t_KB* *'t_KB'*
        t_KC    <k0>            キーパッド 0             *<k0>* *t_KC* *'t_KC'*
        t_KD    <k1>            キーパッド 1             *<k1>* *t_KD* *'t_KD'*
        t_KE    <k2>            キーパッド 2             *<k2>* *t_KE* *'t_KE'*
        t_KF    <k3>            キーパッド 3             *<k3>* *t_KF* *'t_KF'*
        t_KG    <k4>            キーパッド 4             *<k4>* *t_KG* *'t_KG'*
        t_KH    <k5>            キーパッド 5             *<k5>* *t_KH* *'t_KH'*
        t_KI    <k6>            キーパッド 6             *<k6>* *t_KI* *'t_KI'*
        t_KJ    <k7>            キーパッド 7             *<k7>* *t_KJ* *'t_KJ'*
        t_KK    <k8>            キーパッド 8             *<k8>* *t_KK* *'t_KK'*
        t_KL    <k9>            キーパッド 9             *<k9>* *t_KL* *'t_KL'*
                <Mouse>         マウスコードの先頭部分          *<Mouse>*

Note t_so と t_mrについて: termcap に "so" エントリがない場合は "mr" が使われ
ます。逆に "mr" がない場合は "so" が使われます。"se" と "me" も同じ関係にあり
ます。お使いの端末が反転と強調の両方をサポートしているならば、これらは別々のモー
ドとして表示されます。これらの片方しかサポートしていない場合は、どちらも同じよ
うに表示されます。

                                                        *keypad-comma*
キーパッドのキーは、何かにマップされていないときは通常のキーと等価です。ただ 1
つだけ例外があります。小数点キーがあるべき場所にコンマキーがあるキーパッドの場
合でも Vim では小数点として認識されます。これを修正するには次のマッピングを
使ってください:
        :noremap <kPoint> ,
        :noremap! <kPoint> ,
                                                        *xterm-codes*
キーコードを取得するトリックがあります。これは現在のところ xterm でだけ動作し
ます。|t_RV| が定義されていて、xterm のパッチレベルが 141 以上であることを示す
返信を受け取った場合、Vim は特別なエスケープシーケンスを使って xterm から直接
キーコードを要求します。その返信を使って様々な t_ のコードを調整します。これに
よって xterm がモード (8-bit, VT102, VT220 など) によって異なるコードを出力す
るという問題に対応することができます。そのため、<xF1> のようなコードは必要なく
なります。
Note: これは起動時にのみ行われます。Vim が起動した後で xterm のオプションが変
更された場合は、これらのエスケープシーケンスはそれ以降、認識されなくなる可能性
があります。

                                                        *xterm-true-color*
Vimは端末がサポートするならば、トゥルーカラーを使うこと (|highlight-guifg| 及
び |highlight-guibg| を流用する) をサポートします。これを機能させるには
'termguicolors' オプションをセットする必要があります。
トゥルーカラーをサポートする端末の一覧については
https://gist.github.com/XVilka/8346728 を参照してください。

場合によっては 'termguicolors' を設定するだけでは不十分で、|t_8f| と |t_8b| オ
プションを明示的に設定しなければならないことがあります。これらのオプションのデ
フォルトはそれぞれ "^[[38;2;%lu;%lu;%lum" と "^[[48;2;%lu;%lu;%lum" で、
`$TERM` が `xterm` の時にだけ設定されます。幾つかの端末は同じシーケンスを受け
付けますが、全てのセミコロンをコロンで置き換える必要があります (実際にはコチラ
のほうが互換性の高い方法ですが、広くはサポートされていません):
         let &t_8f = "\<Esc>[38:2:%lu:%lu:%lum"
         let &t_8b = "\<Esc>[48:2:%lu:%lu:%lum"

これらのオプションは printf 用の文字列を含んでおり、|printf()| (実際には `l`
modifier ゆえに C 言語のものと同等) により t_ オプションの値と、赤、青、緑を表
現する 0 から 255 の 3 つの符号なし長整数の値が組み合わせれます。

                                                        *xterm-resize*
xterm でのウィンドウサイズ変更はリソース allowWindowOps が有効なときのみ動作し
ます。システムや xterm のバージョンによっては、セキュリティ上の問題になるとの
考えにより、既定では無効になっていることがあります。それが本当に問題になるかど
うかは明らかではありません。

既定値を上書きするには、次の行を ~/.Xdefaults または ~/.Xresources に書きま
す:

        XTerm*allowWindowOps:           true

そして "xrdb -merge .Xresources" を実行し、この設定を有効化します。コンテキス
トメニュー(CTRL キーを押しながらマウス右ボタン)でこの値を確認できます。
allow-window-pos にチェックが入っているはずです。

                                                        *termcap-colors*
色についての Note't_Co' は利用できる色の数を示します。この値が 0 でなければ
't_AB' と 't_AF' の値を使って色を設定します。これらのうちどれかが存在しない場
合は 't_Sb' と 't_Sf' が使われます。色をデフォルトに戻すのには 't_me' が使われ
ます。

                                *termcap-cursor-shape* *termcap-cursor-color*
Vimが挿入モードに入るときにはエスケープシーケンス 't_SI' が送られます。置換モ
ードに入るときにはエスケープシーケンス 't_SR' が設定されていれば送られます。設
定されていない場合には 't_SI' が送られます。挿入モード及び置換モードを抜けると
きには 't_EI' が送られます。これらは挿入や置換モードにおいてカーソルの形や色を
変えるのに利用できます。またこれらは標準的な termcap/terminfo エントリではない
ので、自分で設定する必要があります。

以下は xterm でカーソルの色を変える例です:
    if &term =~ "xterm"
        let &t_SI = "\<Esc>]12;purple\x7"
        let &t_SR = "\<Esc>]12;red\x7"
        let &t_EI = "\<Esc>]12;blue\x7"
    endif
NOTE: Vim を終了するとき、ノーマルモードでのカーソル設定がそのまま残ります。
Vim を起動する前のカーソル設定は復元されません。
{|+cursorshape| つきでコンパイルしたときのみ利用可能}

                                                        *termcap-title*
文字列を送ってタイトルを変更できる端末の場合は 't_ts' と 't_fs' を使ってウィン
ドウタイトルを変更できます。これらがタイトル文字列の前後に送られます。同様に
't_IS' と 't_IE' を使ってアイコンテキストが設定されます。これらの termcap エン
トリは Vim 独自の拡張であり、外部の termcap からこれらを取得することはできませ
ん。しかし組み込みの termcap に xterm と iris-ansi 用のエントリが含まれており、
これらを自分で設定する必要はありません。
                                                        *hpterm*
もしも反転などの強調が正常に機能しない場合は、't_xs' を空でない文字列に設定し
てみてください。すると 't_ce' コードを使って行から強調を取り除くようになります。
"hpterm" に対してはこれが必要です。'weirdinvert' を設定すると 't_xs' を空でな
い値にするのと同じ効果があります。

                                                        *scroll-region*
端末が領域スクロールをサポートしているのに 'cs' エントリを含まない termcap が
あります。例えば Sun の xterm がそうです。この場合は builtin_xterm を使うか、
t_cs を自分で定義します。例:
        :set t_cs=^V^[[%i%d;%dr
^V は CTRL-V、^[ は <Esc> を表します。

t_CV (領域縦スクロール) は標準的な termcap コードではありません。Vim はこれを
GUI モードで内部的に使っています。しかし、領域縦スクロールに対応している端末が
あるなら、その端末でもこれを定義することができます。2つの引数は、スクロールを
制限する領域の左右の桁を表します。t_cs が行の上端と下端を定義するのと同じです。
t_CV を定義すると垂直分割したウィンドウのスクロールがとても速くなります。t_da
または t_db を設定したときは t_CV を設定しないでください(スクロールするときテ
キストが消去されなくなります)。

残念ながら、領域スクロールを使用しているとき、カーソルの位置がどう変わるかを
termcap から推測することは不可能です。スクリーンの始点から相対的またはスクロー
ルさせる領域の始点から相対的になります。ほとんどの端末では前者となります。よく
知られた例外は MS-DOS コンソール(pcterm)です。カーソル位置がスクロールさせる領
域の始点から相対的となる場合は 't_CS' オプションになんらかの文字列を設定しなけ
ればなりません。そうでなければ空文字列となります。'term' が "pcterm" のときは
デフォルトで "yes" になります。

xterm ユーザーへの注意: 通常、Shift + カーソルキーは使用できません。xmodmap コ
        マンドと Vim でマッピングを使えば、これらを使用できるようになります。

        以下のコマンドを xterm の中で実行します:
                xmodmap -e "keysym Up = Up F13"
                xmodmap -e "keysym Down = Down F16"
                xmodmap -e "keysym Left = Left F18"
                xmodmap -e "keysym Right = Right F19"

        そして次のマッピングを Vim の中で実行します:
                :map <t_F3> <S-Up>
                :map! <t_F3> <S-Up>
                :map <t_F6> <S-Down>
                :map! <t_F6> <S-Down>
                :map <t_F8> <S-Left>
                :map! <t_F8> <S-Left>
                :map <t_F9> <S-Right>
                :map! <t_F9> <S-Right>

Shift+カーソル上キーに対して <S-Up> 以外のコマンドを割り当てることもできます。
Note: 左側にキーがある Sun のキーボードを使っている人を助けるために、以下の
キーは使われません。
F14 (アンドゥキーと混乱するため)
F15 (ウィンドウを全面に移動するキーであるため)
F17 (ウィンドウを閉じるキーであるため)
他のシステムではこれらも使用できるでしょう。

==============================================================================
3. ウィンドウサイズ                                     *window-size*

[これは Vim 自身のウィンドウのサイズのことです。":split" コマンドで分割できる
ウィンドウのことではありません。]

Amiga 上では端末名が "amiga" または "builtin_amiga" であればアミーガ固有のウィ
ンドウリサイズ処理が有効になります。Unix ではウィンドウサイズを取得するために
3 種類の方法が試行されます:

- ioctl 呼び出し (システムによって TIOCGSIZE か TIOCGWINSZ のどちらか)
- 環境変数 "LINES" と "COLUMNS"
- termcap エントリ "li" と "co"

これら全てが失敗した場合はデフォルトの 24 行 80 桁とみなされます。ウィンドウ
サイズ変更のシグナルを受け取るとそのサイズに再設定されます。ウィンドウサイズが
正しくない場合は、オプション 'lines' と 'columns' で正しい値を設定することがで
きます。

スクリーンサイズを設定するには次のコマンドを使います:

                                                *:mod* *:mode* *E359*
:mod[e] [mode]

引数が指定されない場合はスクリーンサイズを検出し、スクリーンを再描画します。
MS-DOS ではスクリーンモードを切り替えることが可能です。[mode] は以下のうちのど
れか1つです。
        "bw40"          40 桁 白黒
        "c40"           40 桁 カラー
        "bw80"          80 桁 白黒
        "c80"           80 桁 カラー (ほとんどの場合はこれ)
        "mono"          80 桁 モノクロ
        "c4350"         43 or 50 行 EGA/VGA モード
        number          モード番号。ビデオカードに依存

==============================================================================
4. 端末の速度                                   *slow-fast-terminal*
                                                *slow-terminal*

高速な端末を使用している場合はオプション 'ruler' をオンにするとよいでしょう。
するとステータスラインにカーソル位置が表示されます。水平スクロールをオンにして
いる('wrap' をオフ)にしているなら 'sidescroll' を小さい値にするとよいでしょう。

遅い端末を使用している場合はオプション 'showcmd' をオフにするとよいでしょう。
するとコマンド文字列がステータスラインに表示されなくなります。端末のスクロール
が非常に遅いなら、'scrolljump' を5ぐらいにしてください。("j" などで)カーソルが
スクリーンから出たとき、一度に5行スクロールするようになります。もう1つの方法は、
"z{height}<CR>" でスクリーンの中で Vim が使う行数を減らすことです。

端末から文字が届く間隔が1秒以上になる場合は 'timeout' と 'ttimeout' を設定しな
おすとよいでしょう。オプションの章を参照してください |options|

お使いの端末が領域のスクロールをサポートしていないが、行の挿入・削除コマンドを
サポートしている場合、複数のウィンドウを開いた状態でスクロールすると、行が上下
するかもしれません。これが好ましくない場合は 'ttyfast' をオンにしてください。
するとウィンドウをスクロールするのでなく再描画するようになります。

お使いの端末におけるスクロールが非常に遅いが再描画は遅くないという場合は、
'ttyscroll' を 3 などの小さな値にしてください。すると、3 行より多くスクロール
する場合はスクロールでなく画面を再描画するようになります。

低速なカラー端末をお使いの場合は、次のコマンドを実行してください:
        hi NonText cterm=NONE ctermfg=NONE
すると、異なる属性を持つスペースを送信しないようになります。ほとんどの端末では
どちらにせよそれは目に見えません。

低速なシリアル回線上で Vim を使っている場合は、"screen" プログラム上で Vim を
実行するとよいかもしれません。screen は端末の入出力をほんの少し最適化します。

termcap オプションをテストする際、何が起こっているかを見たいならば 'writedelay'
をオンにするとよいかもしれません。これがゼロでない場合、一度に1つの文字が端末
に送られます(MS-DOS では機能しません)。そうすると画面の更新がとても遅くなり、
何が起こっているかが見えるようになります。

==============================================================================
5. マウスの使用                                         *mouse-using*

この節では端末や端末エミュレータ上でマウスを使う方法を説明します。GUI のウィン
ドウでマウスを使う方法については |gui-mouse| で説明されています。マウスホイー
ルでスクロールする方法については |scroll-mouse-wheel| を参照してください。

次のコマンドでマウスを有効にしてください:
        :set mouse=a
これを行わないと、Vim はどのモード('mouse' を参照)でもマウスを認識できません。

現時点では Unix の xterm、|sysmouse| つきの *BSD コンソール、Linux コンソール
(GPM マウスにも対応 |gpm-mouse|)、MS-DOS、Windows コンソールにおいてマウスがサ
ポートされています。
マウスクリックによってカーソル位置の設定、領域の選択、ペーストを行えます。

'mouse' オプションに以下の文字を含めることにより、どの状況でマウスを有効にする
かを設定します:
                n       ノーマルモード
                v       ビジュアルモード
                i       挿入モード
                c       コマンドラインモード
                h       ヘルプファイルを閲覧しているときの上記の4モード全て
                a       上記の4モード全て
                r       |hit-enter| プロンプトが出ているとき

'mouse' の既定値は空で、マウスは無効になっています。普通は次のようにしてマウス
を有効にします:
        :set mouse=a
これは 'mouse' の値を "nvich" にすることと同値です。
特定のモードでだけマウスを使いたい場合や、2つの質問のために使いたい場合は、こ
れらの文字を組み合わせます。
例:
        :set mouse=nv
上の例はノーマルモードとビジュアルモードでのみマウスを有効にします。
        :set mouse=h
上の例はヘルプファイルでのみマウスを有効にします ("g<LeftMouse>" でタグジャン
プができるようになります)

マウスで選択を開始した場合、ビジュアルモードと選択モードのどちらになるかは
'selectmode' に "mouse" が含まれているかどうかによります。

xterm において、現在有効になっているモードが 'mouse' オプションに含まれている
ときマウスをクリックすると、それは Vim によって処理されます。Shift や Ctrl
キーを押しながらクリックすると xterm に伝わります。現在有効なモードが 'mouse'
に含まれていない場合、すべてのクリックは xterm に伝わります。

                                                        *xterm-clipboard*
Athena と Motif の GUI 版では、端末の中で動作しているときも、X サーバーとの接
続があれば(DISPLAY がセットされていれば)、コピーとペーストが GUI 版と同様に動
作します。そうでないときは真ん中ボタンクリックで無名レジスタが挿入されます。こ
の場合、テキストをコピー&ペーストする方法は次の通りです:

ビジュアルモードでマウスを使ってコピー&ペーストする方法('mouse' がセットされ
ていなければなりません。上記参照):
1. コピーしたいテキストの最初の文字の上で左ボタンを押して最後の文字の上までマ
   ウスポインタを動かし、ボタンを離します。するとビジュアルモードが開始し、選
   択したテキストが強調されます。
2. "y" を押して選択したテキストを無名レジスタにヤンクします。
3. ペーストしたい位置で左ボタンをクリックします。
4. 真ん中ボタンをクリックします。

ショートカット: ペーストしたい位置が選択したテキストと同時に画面に見えている場
合は、ペーストしたい位置で真ん中ボタンをクリックすることにより、2, 3, 4 のス
テップを一度に行えます:

Note: コマンドライン引数 |-X| が指定されていると Vim は X サーバーに接続せず、
X のクリップボード(セレクション)へのコピー&ペーストは機能しません。Shift キー
を押しながらクリックすることにより、xterm に選択を行わせることができます。

                                                        *xterm-command-server*
X サーバーのクリップボードを利用できるときは、コマンドライン引数 --servername
を指定すると |x11-clientserver| で説明されているコマンドサーバーが有効になりま
す。

                                                        *xterm-copy-paste*
NOTE: 古い xterm では95桁目または223桁目を越えてカーソルを移動できない場合があ
ります。これは xterm の問題であり、Vim の問題ではありません。新しい xterm を入
手してください |color-xterm|。また |'ttymouse'| を参照してください。

xterm でコピー&ペーストする方法('mouse' に現在のモードが含まれていないとき):
1. テキストの最初の文字の上で左ボタンを押し、最後の文字までマウスポインタを動
   かしてからボタンを離します。
2. 普通の Vim のコマンドを使ってカーソルをペーストしたい位置まで動かします。
3. "a" を押して挿入モードを開始します。
4. 真ん中ボタンを押します。
5. ESC を押して挿入モードを抜けます。
('mouse' に含まれているモードにいる場合も、Shift キーを押しながらマウスを操作
することによりどの操作も同じようにできます)

Note: ペーストするときに8ビット目が失われてしまう(特殊文字が他の文字に変換され
てしまう)ときは、Vim を起動する前にシェルで "stty cs8 -istrip -parenb" としな
ければならないかもしれません。

xterm では Shift と Ctrl キーを押しながらマウスを使うことはできません。CTRL 修
飾子を必要とするマウスコマンドは、マウス操作の前に "g" を押すことでシミュレー
トできます:
        "g<LeftMouse>"  は "<C-LeftMouse>       (クリックした位置のタグへジャンプ)
        "g<RightMouse>" は "<C-RightMouse>      ("CTRL-T")

                                        *mouse-mode-table* *mouse-overview*
以下は、'mousemodel' が "extend" の場合のマウスボタンの機能の概略です:

ノーマルモード:
イベント      カーソル     選択範囲     ウィンドウ 動作
                移動                       切替
<LeftMouse>     yes          end            yes
<C-LeftMouse>   yes          end            yes    "CTRL-]" (2)
<S-LeftMouse>   yes       no change         yes    "*" (2)    *<S-LeftMouse>*
<LeftDrag>      yes     start or extend (1) no                *<LeftDrag>*
<LeftRelease>   yes     start or extend (1) no
<MiddleMouse>   yes       if not active     no     put
<MiddleMouse>   yes       if active         no     yank and put
<RightMouse>    yes     start or extend     yes
<A-RightMouse>  yes start or extend blockw. yes               *<A-RightMouse>*
<S-RightMouse>  yes        no change        yes    "#" (2)    *<S-RightMouse>*
<C-RightMouse>  no         no change        no     "CTRL-T"
<RightDrag>     yes         extend          no                *<RightDrag>*
<RightRelease>  yes         extend          no                *<RightRelease>*

挿入/置換モード:
イベント      カーソル     選択範囲     ウィンドウ 動作
                移動                       切替
<LeftMouse>     yes     (cannot be active)  yes
<C-LeftMouse>   yes     (cannot be active)  yes    "CTRL-O^]" (2)
<S-LeftMouse>   yes     (cannot be active)  yes    "CTRL-O*" (2)
<LeftDrag>      yes     start or extend (1) no     like CTRL-O (1)
<LeftRelease>   yes     start or extend (1) no     like CTRL-O (1)
<MiddleMouse>   no      (cannot be active)  no     put register
<RightMouse>    yes     start or extend     yes    like CTRL-O
<A-RightMouse>  yes start or extend blockw. yes
<S-RightMouse>  yes     (cannot be active)  yes    "CTRL-O#" (2)
<C-RightMouse>  no      (cannot be active)  no     "CTRL-O CTRL-T"

ヘルプウィンドウ:
イベント      位置         選択           変更  動作
               カーソル                   ウィンドウ
<2-LeftMouse>   yes     (cannot be active)  no     "^]" (jump to help tag)

'mousemodel' が "popup" の場合は次のように異なります:

ノーマルモード:
イベント      カーソル     選択範囲     ウィンドウ 動作
                移動                       切替
<S-LeftMouse>   yes     start or extend (1) no
<A-LeftMouse>   yes start or extend blockw. no                *<A-LeftMouse>*
<RightMouse>    no      popup menu          no

挿入/置換モード:
イベント      カーソル     選択範囲     ウィンドウ 動作
                移動                       切替
<S-LeftMouse>   yes     start or extend (1) no     like CTRL-O (1)
<A-LeftMouse>   yes start or extend blockw. no
<RightMouse>    no      popup menu          no

(1) 押してからマウスポインタが移動したときのみ
(2) 同一バッファでクリックしたときのみ

左ボタンをクリックするとカーソルが移動します。他のウィンドウ内でクリックすると
そのウィンドウがアクティブになります。コマンドラインを編集中はコマンドライン内
でカーソルが移動します。挿入モードでクリックしたときは挿入モードのままです。
'scrolloff' がセットされている場合は、ウィンドウの境界から 'scrolloff' 行数内
の範囲にカーソルが移動し、テキストがスクロールします。

選択は、左ボタンを押すと始まり、カーソルを移動してボタンを離すことで行います。
ボタンを離すまでは選択が見えるようにならない場合もあります。GUI, MS-DOS, WIN32
などいくつかのバージョンでのみドラッグが即座に表示されます。'scrolloff' がゼロ
でない場合、ウィンドウの最初/最後の行で1文字以上動かすとテキストがスクロールす
る可能性があることに注意してください。

ノーマルモード、ビジュアルモード、選択モードで右ボタンをクリックすると選択範囲
が拡大します。ただし、'mousemodel' が "popup" のときは、Shift キーを押したまま
で左ボタンをクリックします。他のバッファを開いているウィンドウの中をクリックす
るとビジュアルモードと選択モードは中止されます。

ノーマルモード、ビジュアルモード、選択モードで Alt キーを押したまま右ボタンを
クリックすると、選択範囲が矩形になります。ただし、'mousemodel' が "popup" のと
きは、Alt キーを押しながら左ボタンをクリックします。Alt キーを押しているときは
マウスイベントをウィンドウマネージャーが処理(ウィンドウ移動など)してしまうシス
テムでは機能しないことに注意してください。

                                                        *double-click*
MS-DOS、Win32、xterm (関数 gettimeofday() が使用できるとき)において、GUI が有
効なときはダブル、トリプル、クアドラプルクリックが使用できます。テキストを選択
しているときさらにクリックすると選択範囲が拡大します:
        クリック        選択範囲
        ダブル          単語または % でのマッチ *<2-LeftMouse>*
        トリプル        行                      *<3-LeftMouse>*
        クアドラプル    矩形範囲                *<4-LeftMouse>*
例外: ヘルプウィンドウでダブルクリックすると、その下にある単語のヘルプへジャン
プします。
単語の上でダブルクリックするとその単語を選択します。単語を構成する文字は
'iskeyword' によって決まります。対応する文字がある文字の上でダブルクリックする
とそのマッチまでを選択します("v%" と同様)。そのマッチが #if/#else/#endif であ
る場合、選択は行単位になります。
MS-DOS と xterm ではダブルクリックの間隔は 'mousetime' で設定できます。他のシ
ステムでは、この間隔は Vim の外部で設定されています。
例: ダブルクリックでカーソル下のタグへジャンプする
        :map <2-LeftMouse> :exe "tag ". expand("<cword>")<CR>

ダブルクリックによるドラッグ(押す、離す、押してドラッグ)をすると単語全体が選択
されるようになります。これはボタンが離されるまで続き、ボタンを離すと文字単位に
戻ります。

                                                        *gpm-mouse*
GPM マウスは |+mouse_gpm| 機能を有効にしてコンパイルしたときのみサポートされま
す。GPM マウスドライバ(Linux コンソール)はクアドラプルクリックに対応していませ
ん。

挿入モードで選択を開始すると、一時的にノーマルモードへ移行します。ビジュアル
モードまたは選択モードが終了すると挿入モードへ戻ります。挿入モードにおける
CTRL-O と同様です。'selectmode' オプションが "mouse" を含んでいると選択モード
になります。

                                                        *sysmouse*
sysmouse は、コンパイル時に |+mouse_sysmouse| 機能が有効化されている場合のみサ
ポートされます。sysmouse ドライバ(*BSD コンソール)はキーボード修飾子には対応し
ていません。

                                                        *drag-status-line*
ウィンドウを複数に分割しているとき、マウスでステータスラインをドラッグすると
ウィンドウのサイズを変更できます。マウスをステータスライン上へ持っていき、左ボ
タンを押し、ステータスラインを望みの位置まで動かしてボタンを離します。単にス
テータスラインをクリックすると、カーソルを動かさずにそのウィンドウをカレントに
します。ステータスラインのドラッグは、ウィンドウを選択して位置やサイズが変わる
と混乱を招きがちです。しかしこれは確かに動作します(試してみてください)。

                                        *<MiddleRelease>* *<MiddleDrag>*
マウスクリックイベントもマップすることができます。マウスクリックに対するコード
は次の通りです:
     コード         マウスボタン              通常の動作
 <LeftMouse>     左ボタン押下               カーソル位置設定
 <LeftDrag>      左ボタンを押しながら移動   選択範囲を拡張
 <LeftRelease>   左ボタン放す               選択を終了
 <MiddleMouse>   中央ボタン押下             カーソル位置にテキストを貼り付け
 <MiddleDrag>    中央ボタンを押しながら移動 -
 <MiddleRelease> 中央ボタン放す             -
 <RightMouse>    右ボタン押下               選択を拡張
 <RightDrag>     右ボタンを押しながら移動   選択を拡張
 <RightRelease>  右ボタン放す               選択を終了
 <X1Mouse>       X1 ボタン押下              -                   *X1Mouse*
 <X1Drag>        X1 ボタンを押しながら移動  -                   *X1Drag*
 <X1Release>     X1 ボタン放す              -                   *X1Release*
 <X2Mouse>       X2 ボタン押下              -                   *X2Mouse*
 <X2Drag>        X2 ボタンを押しながら移動  -                   *X2Drag*
 <X2Release>     X2 ボタン放す              -                   *X2Release*

X1 ボタンと X2 ボタンは、ある種のマウスについている4番目、5番目のボタンのこと
です。'Microsoft Explorer' マウスの場合、これらのボタンは右親指の位置について
います。現在のところ、X1 と X2 は Win32 と X11 環境でのみ機能します。

例:
        :noremap <MiddleMouse> <LeftMouse><MiddleMouse>
マウス中央ボタンをクリックしたとき、クリックした位置に貼り付けます(通常はカー
ソル位置に貼り付けます)。

        :noremap <LeftRelease> <LeftRelease>y
ビジュアルモードで選択範囲を即座にヤンクします。

Note 再帰マッピングにならないように "map" でなく "noremap" を使っています。

        :map <X1Mouse> <C-O>
        :map <X2Mouse> <C-I>
X1 と X2 ボタンでジャンプリストの前後に移動するようにマップします。
|CTRL-O| と |CTRL-I| を参照。

                                                *mouse-swap-buttons*
左右のマウスボタンの意味を交換するには次のようにします:
        :noremap        <LeftMouse>     <RightMouse>
        :noremap        <LeftDrag>      <RightDrag>
        :noremap        <LeftRelease>   <RightRelease>
        :noremap        <RightMouse>    <LeftMouse>
        :noremap        <RightDrag>     <LeftDrag>
        :noremap        <RightRelease>  <LeftRelease>
        :noremap        g<LeftMouse>    <C-RightMouse>
        :noremap        g<RightMouse>   <C-LeftMouse>
        :noremap!       <LeftMouse>     <RightMouse>
        :noremap!       <LeftDrag>      <RightDrag>
        :noremap!       <LeftRelease>   <RightRelease>
        :noremap!       <RightMouse>    <LeftMouse>
        :noremap!       <RightDrag>     <LeftDrag>
        :noremap!       <RightRelease>  <LeftRelease>

 vim:tw=78:ts=8:ft=help:norl: