*term.txt*      For Vim バージョン 9.0.  Last change: 2022 Apr 23


		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-Windows では 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 ファイルと組み込みの termcap
から、使われている端末用のキーシーケンスを取得しようとします。使われている端末
のエントリがあるならば、その両方が使われます。どちらが先に使われるかはオプショ
ン '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_TI' お
よび 't_ks' で定義されるシーケンスが端末に送信されます。これらのシーケンスによ
り、端末はtermcap のコードが有効になり、カーソルキーとファンクションキーが使え
るようになります。Vim が終了するとき、端末を起動前のモードに戻します。このとき
't_te', 't_TE' および 't_ke' で定義されるシーケンスが端末に送信されます。Amiga
では、外部プログラムを起動するコマンド(例: "!!")を実行するとき、一時的に端末が
通常モードになります。そのため、print キーを押してスクリーンへの出力を止めるこ
とができます。<BS> を押すと出力が再開します。

Note: 't_ti' が空でない場合、Vimは代替画面への切り替えが生じると想定します。こ
れにより、シェルコマンドの実行時またはVimの終了時の動作がわずかに変わる場合が
あります。これを回避するには、't_TI' と 't_TE' を使用します。

						*xterm-bracketed-paste*
't_BE' がオンの場合、raw モードに入るときに 't_BE' が端末に送信され、raw モー
ドを抜けるときに 't_BD' が送信されます。その際、端末はペーストされたテキストの
前に 't_PS' を置き、ペーストされたテキストの後に 't_PE' を置くことが想定されま
す。これにより、Vim はタイプされた文字とペーストされたテキストを分離することが
できます。ペーストされたテキストはマウスの中ボタンを使ったときと同様に扱われ、
文字通り挿入され、コマンドとしては扱われません。

カーソルが最初の桁にある時は、ペーストされたテキストはその前に挿入されます。そ
うでなければ、ペーストされたテキストはカーソルの位置の後に追加されます。これは
最初の桁の後にペーストすることはできないことを意味します。残念ながら Vim には
マウスポイントがどこにあったかを知らせる方法はありません。

いくつかの状況では、Vim は bracketed paste を認識せず、生のテキストが取得され
る場合があることに注意してください。別のいくつかの状況では Vim はペーストされ
た最初の文字のみを取得し、残りは切り捨てられます。例: "r" コマンドを使った場
合。bracketed paste で何か問題がある場合、.vimrc に以下を書くことで無効化する
ことができます: >
	set t_BE=
もし Vim の実行中にこれを実行した場合、bracketed paste を無効化するため 't_BD'
が端末に送信されます。

端末が bracketed paste をサポートしているにもかかわらずオプションが自動的に設
定されない場合、以下のような設定を試すことができます: >

	if &term =~ "screen"
	  let &t_BE = "\e[?2004h"
	  let &t_BD = "\e[?2004l"
	  exec "set t_PS=\e[200~"
	  exec "set t_PE=\e[201~"
	endif
<
							*tmux-integration*
tmux 内で Vim を実行する際に問題が発生する場合、ここにいくつかのヒントがありま
す。もし動かないならその部分はコメントアウトすることができます(これは tmux を
実行している端末に依存しています): >

    if !has('gui_running') && &term =~ '^\%(screen\|tmux\)'
        " よりよいマウスサポート、:help 'ttymouse' を参照
        set ttymouse=sgr

        " フルカラー有効、:help xterm-true-color を参照
        let &termguicolors = v:true
        let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
        let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"

        " bracketed paste モード有効、:help xterm-bracketed-paste を参照
        let &t_BE = "\<Esc>[?2004h"
        let &t_BD = "\<Esc>[?2004l"
        let &t_PS = "\<Esc>[200~"
        let &t_PE = "\<Esc>[201~"

        " フォーカスイベントの追跡有効、:help xterm-focus-event を参照
        let &t_fe = "\<Esc>[?1004h"
        let &t_fd = "\<Esc>[?1004l"
        execute "set <FocusGained>=\<Esc>[I"
        execute "set <FocusLost>=\<Esc>[O"

        " 修飾ありカーソルキー有効、:help arrow_modifiers を参照
        execute "silent! set <xUp>=\<Esc>[@;*A"
        execute "silent! set <xDown>=\<Esc>[@;*B"
        execute "silent! set <xRight>=\<Esc>[@;*C"
        execute "silent! set <xLeft>=\<Esc>[@;*D"
    endif
<
							*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| それらを上書きするのを避けるためです。

もう1つの特殊な値は、"@;*X" で終わるtermcapエントリです。これは、"CSI X" また
は "CSI 1 ; modifier X" のいずれかを使用するカーソルキー用です。したがって、
"@" は修飾子が続く場合は "1" を表すか、何も表しません。
							*arrow_modifiers*
いくつかの端末エミュレータ(alacritty, gnome, konsole 等)は修飾子付きのキーで特
殊なコードを送信しますが、これらは termcap/terminfo データベースにエントリがあ
りません。vimrc に数行追加することでこれらを機能させることができます。例えば、
Control 修飾子を gnome 端末の矢印キーで機能させるには: >
	if &term =~ 'gnome'
	   execute "set <xUp>=\<Esc>[@;*A"
	   execute "set <xDown>=\<Esc>[@;*B"
	   execute "set <xRight>=\<Esc>[@;*C"
	   execute "set <xLeft>=\<Esc>[@;*D"
	endif
<							*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)

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

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

出力コード						*terminal-output-codes*
	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_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_AU	下線色を設定する (ANSI)				*t_AU* *'t_AU'*
	t_Ce	下波線終了					*t_Ce* *'t_Ce'*
	t_Cs	下波線モード					*t_Cs* *'t_Cs'*
	t_Te	取り消し線終了					*t_Te* *'t_Te'*
	t_Ts	取り消し線モード				*t_Ts* *'t_Ts'*
	t_IS	アイコンテキスト設定開始			*t_IS* *'t_IS'*
	t_IE	アイコンテキスト設定終了			*t_IE* *'t_IE'*
	t_WP	ウィンドウ位置 (Y, X) をピクセルで指定		*t_WP* *'t_WP'*
	t_GP	ウィンドウ位置 (Y, X) をピクセルで取得		*t_GP* *'t_GP'*
	t_WS	ウィンドウサイズ (height, width のセル数) を指定 *t_WS* *'t_WS'*
	t_VS	カーソル通常表示 (点滅なし)			*t_VS* *'t_VS'*
	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'*
		仮想端末用) 応答は |v:termresponse| に格納される |xterm-8bit|
		|'ttymouse'| |xterm-codes|
	t_u7	カーソル位置を要求 (xterm 用)			*t_u7* *'t_u7'*
		|'ambiwidth'| 参照
		応答は |v:termu7resp| に格納される
	t_RF	端末の文字色を要求				*t_RF* *'t_RF'*
		応答は |v:termrfgresp| に格納される
	t_RB	端末の背景色を要求				*t_RB* *'t_RB'*
		応答は |v:termrbgresp| に格納される
	t_8f	文字色を設定する (R, G, B)			*t_8f* *'t_8f'*
		|xterm-true-color|
	t_8b	背景色を設定する (R, G, B)			*t_8b* *'t_8b'*
		|xterm-true-color|
	t_8u	下線色を設定する (R, G, B)			*t_8u* *'t_8u'*
	t_BE	bracketed paste モードを有効化する		*t_BE* *'t_BE'*
		|xterm-bracketed-paste|
	t_BD	bracketed paste モードを無効化する		*t_BD* *'t_BD'*
		|xterm-bracketed-paste|
	t_SC	カーソル色開始を設定				*t_SC* *'t_SC'*
	t_EC	カーソル色終了を設定				*t_EC* *'t_EC'*
	t_SH	カーソルの形状を設定				*t_SH* *'t_SH'*
	t_RC	端末カーソルの点滅を要求			*t_RC* *'t_RC'*
		応答は |v:termblinkresp| に格納される
	t_RS	端末カーソルの形状を要求			*t_RS* *'t_RS'*
		応答は |v:termstyleresp| に格納される
	t_ST	ウィンドウタイトルをスタックに保存		*t_ST* *'t_ST'*
	t_RT	ウィンドウタイトルをスタックから復元		*t_RT* *'t_RT'*
	t_Si	アイコンテキストをスタックに保存		*t_Si* *'t_Si'*
	t_Ri	アイコンテキストをスタックから復元		*t_Ri* *'t_Ri'*
	t_TE	"raw" モードの終了				*t_TE* *'t_TE'*
	t_TI	端末を "raw" モードにする 			*t_TI* *'t_TI'*
	t_fe	フォーカスイベント追跡を有効化する		*t_fe* *'t_fe'*
		|xterm-focus-event|
	t_fd	フォーカスイベント追跡を無効化する		*t_fd* *'t_fd'*
		|xterm-focus-event|

いくつかのコードは、開始、中間および終了部分を持ちます。開始と終了はオプション
termcap で定義され、中間部分はテキストです。
	set title text:     t_ts {title text} t_fs
	set icon text:      t_IS {icon text} t_IE
	set cursor color:   t_SC  {color name}  t_EC

t_SH は 1 つの引数を取らなければなりません:
	0, 1 もしくは無し	点滅する矩形カーソル
	2			矩形カーソル
	3			点滅する下線カーソル
	4			下線カーソル
	5			点滅する垂直バーカーソル
	6			垂直バーカーソル

t_RS は、t_RV に対する応答を受け取った場合のみ送られます。termresponse から
Terminal.app が認識され得る場合、Mac OS 上では使われません。


キーコード						*terminal-key-codes*
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>*
	t_PS	bracketed paste の開始 |xterm-bracketed-paste|	*t_PS* *'t_PS'*
	t_PE	bracketed paste の終了 |xterm-bracketed-paste|	*t_PE* *'t_PE'*

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> のようなコードは必要なく
なります。

変更可能なコードの1つは、色数である 't_Co' です。これは再描画をトリガーします。
これが問題になる場合は、可能な限り早い段階で 'xtermcodes' オプションをリセット
してください: >
	set noxtermcodes

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 にチェックが入っているはずです。

							*xterm-focus-event*
xterm を含む一部の端末は、フォーカスイベント追跡機能をサポートしています。
この機能が 't_fe' シーケンスによって有効になっている場合、端末がフォーカスを取
得または失う度に、特別なキーシーケンスが端末から Vim に送信されます。
Vim はそれらを適切に処理することでフォーカスイベント(|FocusGained|/|FocusLost|)
を発生させます。フォーカスイベントの追跡は、"raw" モードを終了する時に 't_fd'
シーケンスによって無効になります。
この機能を無効化したいなら、以下をあなたの .vimrc に追加してください:
	`set t_fd=`
	`set t_fe=`
あなたの端末でこれがサポートされているが Vim が端末を識別できていないとき、
あなた自身でオプションを設定する必要がある場合があります: >
	let &t_fe = "\<Esc>[?1004h"
	let &t_fd = "\<Esc>[?1004l"
	execute "set <FocusGained>=\<Esc>[I"
	execute "set <FocusLost>=\<Esc>[O"
Vim 起動時にこれが原因のゴミ表示がある場合はこれは機能しません。

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

				*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 から推測することは不可能です。スクリーンの始点から相対的またはスクロー
ルさせる領域の始点から相対的になります。ほとんどの端末では前者となります。カー
ソル位置がスクロールさせる領域の始点から相対的となる場合は 't_CS' オプションに
なんらかの文字列を設定しなければなりません。そうでなければ空文字列となります。

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]

引数が指定されない場合はスクリーンサイズを検出し、スクリーンを再描画します。
[mode] は MS-DOS で使用されていましたが、もはや動きません。|Vim9| ではこのコマ
ンドはサポートされません。

==============================================================================
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つの文字が端末に
送られます。そうすると画面の更新がとても遅くなり、何が起こっているかが見えるよ
うになります。

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

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

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

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

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

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

マウスで選択を開始した場合、ビジュアルモードと選択モードのどちらになるかは
'selectmode' に "mouse" が含まれているかどうかによります。
							*terminal-mouse*
xterm において、現在有効になっているモードが 'mouse' オプションに含まれている
ときマウスをクリックすると、それは Vim によって処理されます。Shift や Ctrl
キーを押しながらクリックすると xterm に伝わります。現在有効なモードが 'mouse'
に含まれていない場合、すべてのクリックは xterm に伝わります。

修飾子を使用して端末自体でマウスイベントを使用できない端末の場合、回避策はVim
のコマンドラインモードでマウスイベントを使用しないことです: >
	:set mouse=nvi
次に、端末でテキストを選択するには、":" を使用してコマンドラインモードへ行き、
テキストを選択してシステムにコピーし、Escキーを押します。

別の方法は、一時的に ":sh" を使用してシェルを実行し、テキストをコピーしてから
シェルを終了することです。'mouse' は "a" に設定したままにすることができます。
							*xterm-clipboard*
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, Win32 などい
くつかのバージョンでのみドラッグが即座に表示されます。'scrolloff' がゼロでない
場合、ウィンドウの最初/最後の行で1文字以上動かすとテキストがスクロールする可能
性があることに注意してください。

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

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

							*double-click*
GUI が有効なとき、および Win32、xterm (関数 gettimeofday() が使用できるとき)
ではダブル、トリプル、クアドラプルクリックが使用できます。テキストを選択してい
るときさらにクリックすると選択範囲が拡大します:
	クリック	選択範囲 ~
	ダブル		単語または % でのマッチ	*<2-LeftMouse>*
	トリプル	行			*<3-LeftMouse>*
	クアドラプル	矩形範囲		*<4-LeftMouse>*
例外: ヘルプウィンドウでダブルクリックすると、その下にある単語のヘルプへジャン
プします。
単語の上でダブルクリックするとその単語を選択します。単語を構成する文字は
'iskeyword' によって決まります。対応する文字がある文字の上でダブルクリックする
とそのマッチまでを選択します("v%" と同様)。そのマッチが #if/#else/#endif であ
る場合、選択は行単位になります。
MS-Windows と 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:noet:ft=help:norl:
