|  | 
| 1 |  | -*terminal.txt*	For Vim バージョン 9.1.  Last change: 2025 Sep 15 | 
|  | 1 | +*terminal.txt*	For Vim バージョン 9.1.  Last change: 2025 Oct 14 | 
| 2 | 2 | 
 | 
| 3 | 3 | 
 | 
| 4 | 4 | 		VIMリファレンスマニュアル    by Bram Moolenaar | 
|  | 
| 13 | 13 | 結果が "1" の場合、対応している。 | 
| 14 | 14 | 
 | 
| 15 | 15 | 
 | 
| 16 |  | -1. 基本的な使い方		|terminal-use| | 
| 17 |  | -      キー入力				|terminal-typing| | 
| 18 |  | -      サイズと色			|terminal-size-color| | 
| 19 |  | -      文法				|:terminal| | 
| 20 |  | -      サイズ変更			|terminal-resizing| | 
| 21 |  | -      端末モード			|Terminal-mode| | 
| 22 |  | -      カーソルスタイル			|terminal-cursor-style| | 
| 23 |  | -      セッション			|terminal-session| | 
| 24 |  | -      特別なキー			|terminal-special-keys| | 
| 25 |  | -      Unix				|terminal-unix| | 
| 26 |  | -      MS-Windows			|terminal-ms-windows| | 
|  | 16 | +1. 基本的な使い方			|terminal-use| | 
|  | 17 | +      キー入力					|terminal-typing| | 
|  | 18 | +      サイズと色				|terminal-size-color| | 
|  | 19 | +      文法					|:terminal| | 
|  | 20 | +      サイズ変更				|terminal-resizing| | 
|  | 21 | +      端末モード				|Terminal-mode| | 
|  | 22 | +      カーソルスタイル				|terminal-cursor-style| | 
|  | 23 | +      セッション				|terminal-session| | 
|  | 24 | +      特別なキー				|terminal-special-keys| | 
|  | 25 | +      Unix					|terminal-unix| | 
|  | 26 | +      MS-Windows				|terminal-ms-windows| | 
| 27 | 27 | 2. 端末関数				|terminal-function-details| | 
| 28 | 28 | 3. 端末通信				|terminal-communication| | 
| 29 |  | -      Vim からジョブへ: term_sendkeys()	|terminal-to-job| | 
| 30 |  | -      ジョブから Vim へ: JSON API	|terminal-api| | 
| 31 |  | -      クライアントサーバー機能を使う	|terminal-client-server| | 
| 32 |  | -4. リモートテスト		|terminal-testing| | 
| 33 |  | -5. 画面ダンプの差分		|terminal-diff| | 
| 34 |  | -      Vimの画面ダンプテストを書く	|terminal-dumptest| | 
| 35 |  | -      画面ダンプを作成する		|terminal-screendump| | 
| 36 |  | -      画面ダンプを比較する		|terminal-diffscreendump| | 
| 37 |  | -6. デバッグ			|terminal-debug| | 
| 38 |  | -      はじめに				|termdebug-starting| | 
| 39 |  | -      セッション例			|termdebug-example| | 
| 40 |  | -      コードをステップ実行する		|termdebug-stepping| | 
| 41 |  | -      変数を検査する			|termdebug-variables| | 
| 42 |  | -      スタックフレームの移動		|termdebug-frames| | 
| 43 |  | -      その他のコマンド			|termdebug-commands| | 
| 44 |  | -      イベント				|termdebug-events| | 
| 45 |  | -      プロンプトモード			|termdebug-prompt| | 
| 46 |  | -      マッピング			|termdebug-mappings| | 
| 47 |  | -      通信				|termdebug-communication| | 
| 48 |  | -      カスタマイズ			|termdebug-customizing| | 
|  | 29 | +      Vim からジョブへ: term_sendkeys()		|terminal-to-job| | 
|  | 30 | +      ジョブから Vim へ: JSON API		|terminal-api| | 
|  | 31 | +      クライアントサーバー機能を使う		|terminal-client-server| | 
|  | 32 | +4. リモートテスト			|terminal-testing| | 
|  | 33 | +5. 画面ダンプの差分			|terminal-diff| | 
|  | 34 | +      Vimの画面ダンプテストを書く		|terminal-dumptest| | 
|  | 35 | +      画面ダンプを作成する			|terminal-screendump| | 
|  | 36 | +      画面ダンプを比較する			|terminal-diffscreendump| | 
|  | 37 | +6. デバッグ				|terminal-debug| | 
|  | 38 | +      はじめに					|termdebug-starting| | 
|  | 39 | +      セッション例				|termdebug-example| | 
|  | 40 | +      コードをステップ実行する			|termdebug-stepping| | 
|  | 41 | +      変数を検査する				|termdebug-variables| | 
|  | 42 | +      スタックフレームの移動			|termdebug-frames| | 
|  | 43 | +      その他のコマンド				|termdebug-commands| | 
|  | 44 | +      イベント					|termdebug-events| | 
|  | 45 | +      プロンプトモード				|termdebug-prompt| | 
|  | 46 | +      マッピング				|termdebug-mappings| | 
|  | 47 | +      通信					|termdebug-communication| | 
|  | 48 | +      リモートデバッグ				|termdebug-remote| | 
|  | 49 | +      カスタマイズ				|termdebug-customizing| | 
| 49 | 50 | 
 | 
| 50 | 51 | {Vimが |+terminal| 機能付きでコンパイルされたときのみ有効} | 
| 51 | 52 | 端末機能を使うには |+job| と |+channel| 機能が必要である。 | 
| @@ -1609,25 +1610,124 @@ gdb は奇妙な動作をしているが、プラグインはその問題を回 | 
| 1609 | 1610 | `:Continue` コマンドに "continue" が使用されていることが分かる。 | 
| 1610 | 1611 | 
 | 
| 1611 | 1612 | 
 | 
|  | 1613 | +リモートデバッグ ~ | 
|  | 1614 | +							*termdebug-remote* | 
|  | 1615 | +リモートデバッグにおける主な問題の 1 つは、デバッグ対象のソースファイルへのアク | 
|  | 1616 | +セスである。プラグインは、システムと Vim のネットワーク機能を使用してこの問題を | 
|  | 1617 | +回避できる。 | 
|  | 1618 | +						*termdebug-remote-example* | 
|  | 1619 | +|termdebug-example| は、`gdb` デバッガーを実行して `ssh` 経由でアクセス可能な | 
|  | 1620 | +リモート Linux マシン上の Vim をデバッグすることで再現できる。 | 
|  | 1621 | + | 
|  | 1622 | +- ローカルの例の説明に従って Vim をビルドする。 | 
|  | 1623 | + | 
|  | 1624 | +リモートマシンで "socat" が使用できない場合、'terminal' モードは正常に動作しな | 
|  | 1625 | +い。|termdebug_use_prompt| にフォールバックする: > | 
|  | 1626 | +    :let g:termdebug_config = {} | 
|  | 1627 | +    :let g:termdebug_config['use_prompt'] = v:true | 
|  | 1628 | +
 | 
|  | 1629 | +- リモート `gdb` インスタンスを実行するためのコマンドラインを指定する: > | 
|  | 1630 | +    :let g:termdebug_config['command'] = ['ssh', 'hostname', 'gdb'] | 
|  | 1631 | +<  この例では `ssh` の説明は範囲外だが、`$HOME/.ssh/config` ファイルにユーザー、 | 
|  | 1632 | +  キー、その他のオプションを指定することによって、コマンドラインを大幅に簡素化 | 
|  | 1633 | +  できることに注目して欲しい。 | 
|  | 1634 | + | 
|  | 1635 | +- リモートパスを |netrw| パスに変換するためのヒントを提供する: > | 
|  | 1636 | +    :let g:termdebug_config['substitute_path'] = { '/': 'scp://hostname//' } | 
|  | 1637 | +
 | 
|  | 1638 | +- termdebug プラグインをロードし、Vim のデバッグを開始する: > | 
|  | 1639 | +    :packadd termdebug | 
|  | 1640 | +    :Termdebug vim | 
|  | 1641 | +
 | 
|  | 1642 | +これで、ローカルの例と同じ 3 つのウィンドウが表示され、同じ手順を実行できる。 | 
|  | 1643 | +唯一の違いは、ソースウィンドウにローカルバッファではなく netrw バッファが表示 | 
|  | 1644 | +されることである。 | 
|  | 1645 | + | 
|  | 1646 | +						*termdebug-substitute-path* | 
|  | 1647 | +`g:termdebug_config['substitute_path']` エントリを使用して、gdb の | 
|  | 1648 | +`substitute-path` コマンドと同じ戦略でリモートファイルをローカルファイルにマッ | 
|  | 1649 | +ピングする。例: | 
|  | 1650 | +- ssh 経由でリモートファイルにアクセスするには、|netrw| を使用する: > | 
|  | 1651 | +    let g:termdebug_config['command'] = ['ssh', 'hostname', 'gdb'] | 
|  | 1652 | +    let g:termdebug_config['substitute_path'] = { '/': 'scp://hostname//' } | 
|  | 1653 | +< Note: キーはリモートマシンのルートパスを指定し、値はローカルマシンのルートパ | 
|  | 1654 | +スを指定する。 | 
|  | 1655 | +- Windows の `UNC` パスを使用して `WSL2` ソースにアクセスする: > | 
|  | 1656 | +    let g:termdebug_config['command'] = ['wsl', 'gdb'] | 
|  | 1657 | +    let g:termdebug_config['substitute_path'] = { | 
|  | 1658 | +	\ '/': '\\wsl.localhost\Ubuntu-22.04\', | 
|  | 1659 | +	\ '/mnt/c/': 'C:/' } | 
|  | 1660 | +< Note: 複数のマッピングが必要である。各ドライブユニットに 1 つ、Linux ファイ | 
|  | 1661 | +ルシステムに 1 つ (`wslpath` 経由で照会)。 | 
|  | 1662 | + | 
|  | 1663 | +このモードでは、すべての `ssh` または `wsl` コマンドが検出され、同様のコマンド | 
|  | 1664 | +を使用してリモート `tty` 端末セッションで `socat` を起動し、それを `gdb` に接 | 
|  | 1665 | +続する。 | 
|  | 1666 | +`socat` が使用できない場合は、フォールバックとして通常のリモート端末が使用され | 
|  | 1667 | +る。 | 
|  | 1668 | +次のセッションでは、このデフォルトの動作をオーバーライドする方法を説明する。 | 
|  | 1669 | + | 
|  | 1670 | +						*termdebug-remote-window* | 
|  | 1671 | +別のリモート端末クライアントを使用するには、`:Termdebug` を呼び出す前に、 | 
|  | 1672 | +`g:termdebug_config` 変数の "remote_window" エントリを設定する。例: | 
|  | 1673 | +- "prompt" モードを使用して Docker コンテナ内でデバッグする: > | 
|  | 1674 | +    let g:termdebug_config['use_prompt'] = v:true | 
|  | 1675 | +    let g:termdebug_config['command'] = ['docker', 'run', '-i', | 
|  | 1676 | +	\ '--rm', '--name', 'container-name', 'image-name', 'gdb'] | 
|  | 1677 | +    let g:termdebug_config['remote_window'] = | 
|  | 1678 | +	\ ['docker', 'exec', '-ti', 'container-name' | 
|  | 1679 | +	\ ,'socat', '-dd', '-', 'PTY,raw,echo=0'] | 
|  | 1680 | +
 | 
|  | 1681 | +- "terminal buffer" を使用して Docker コンテナ内でデバッグする。 | 
|  | 1682 | +  コンテナは既に実行されているはずである。これは、前述の `terminal mode` の場 | 
|  | 1683 | +  合とは異なり、"program" および "communication" pty が gdb pty の前に作成され | 
|  | 1684 | +  るためである: > | 
|  | 1685 | +    $ docker run -ti --rm --name container-name immage-name | 
|  | 1686 | +
 | 
|  | 1687 | +<  次に、デバッガーを起動する: > | 
|  | 1688 | +    let g:termdebug_config['use_prompt'] = v:false " default | 
|  | 1689 | +    let g:termdebug_config['command'] = | 
|  | 1690 | +	\ ['docker', 'exec', '-ti', 'container-name', 'gdb'] | 
|  | 1691 | +    let g:termdebug_config['remote_window'] = | 
|  | 1692 | +	\ ['docker', 'exec', '-ti', 'container-name' | 
|  | 1693 | +	\ ,'socat', '-dd', '-', 'PTY,raw,echo=0'] | 
|  | 1694 | +
 | 
|  | 1695 | +Note: プロンプトバッファが `tty` 接続を処理できないため、"command" は | 
|  | 1696 | +|termdebug-prompt| モードで `-t` を使用できない。 | 
|  | 1697 | +"remote_window" コマンドでは `-t` を使用する必要がある。そうしなければ、gdb が | 
|  | 1698 | +接続するための `pty slave device` が不足する。 | 
|  | 1699 | +Note: "socat" は、リモートマシンの "terminal" モードで使用可能である必要がある。 | 
|  | 1700 | +Note: docker コンテナソースは、`volumes` とマッピングを組み合わせてアクセスで | 
|  | 1701 | +きる (|termdebug-substitute-path| を参照)。 | 
|  | 1702 | + | 
| 1612 | 1703 | GDBコマンド ~ | 
| 1613 | 1704 | 							*g:termdebugger* | 
| 1614 | 1705 | gdb コマンド以外のデバッガを使うには、`:Termdebug` を実行する前に | 
| 1615 | 1706 | g:termdebug_config の "debugger" エントリか "g:termdebugger" 変数を変更する: > | 
| 1616 | 1707 | 	let g:termdebug_config['command'] = "mygdb" | 
|  | 1708 | +
 | 
| 1617 | 1709 | g:termdebug_config がない場合は、以下を使用できる: > | 
| 1618 | 1710 | 	let g:termdebugger = "mygdb" | 
| 1619 | 1711 | 
 | 
| 1620 | 1712 | ただし、後者の形式は将来のリリースでは非推奨になりる。 | 
| 1621 | 1713 | 
 | 
| 1622 | 1714 | コマンドに引数が必要な場合はリストを使用する: > | 
| 1623 | 1715 | 	let g:termdebug_config['command'] = ['rr', 'replay', '--'] | 
|  | 1716 | +
 | 
| 1624 | 1717 | g:termdebug_config がない場合は、以下を使用できる: > | 
| 1625 | 1718 | 	let g:termdebugger = ['rr', 'replay', '--'] | 
| 1626 | 1719 | 
 | 
| 1627 | 1720 | gdb がデバッガで適切に動作するように、いくつかの引数が追加される。それらを変更 | 
| 1628 | 1721 | したい場合は、引数リストをフィルタリングする関数を追加する: > | 
| 1629 | 1722 | 	let g:termdebug_config['command_filter'] = MyDebugFilter | 
| 1630 | 1723 | 
 | 
|  | 1724 | +"command_filter" シナリオは、ssh 経由のリモートデバッグにおけるエスケープの問 | 
|  | 1725 | +題を解決する。便宜上、引数内の空白をエスケープするためのデフォルトフィルタが用 | 
|  | 1726 | +意されている。このフィルタは ssh 用に自動的に設定されるが、以下のような他のユー | 
|  | 1727 | +スケースにも使用できる: > | 
|  | 1728 | +	let g:termdebug_config['command_filter'] = | 
|  | 1729 | +	/   function('g:Termdebug_escape_whitespace') | 
|  | 1730 | +
 | 
| 1631 | 1731 | 引数を追加したくないが、"pty" を設定する必要がある場合は、関数を使用して必要な | 
| 1632 | 1732 | 引数を追加する: > | 
| 1633 | 1733 | 	let g:termdebug_config['command_add_args'] = MyAddArguments | 
| @@ -1682,15 +1782,15 @@ g:termdebug_config がない場合は、以下を使用できる: > | 
| 1682 | 1782 | デフォルトの目印の変更 ~ | 
| 1683 | 1783 | 							*termdebug_signs* | 
| 1684 | 1784 | Termdebug は、signcolumn のブレークポイント ID の 16 進数を使用してブレークポ | 
| 1685 |  | -イントを表す。"0xFF" より大きい場合は、実際には記号用の画面セルが 2 つしかない | 
| 1686 |  | -ため、"F+" と表示される。 | 
| 1687 |  | -代わりに 10 進数のブレークポイントの目印を使用することもできる。その場合、99 | 
| 1688 |  | -より大きい ID は "9+" と表示される。 | 
|  | 1785 | +イントを表す。"0xFF" より大きい場合、目印に使用できる画面セルは 2 つしかないた | 
|  | 1786 | +め、"F+" と表示される。代わりに 10 進数のブレークポイントの目印を使用すること | 
|  | 1787 | +もできる。その場合、99 より大きい ID は "9+" と表示される。 | 
| 1689 | 1788 | 
 | 
| 1690 | 1789 | ブレークポイントの目印をカスタマイズして、signcolumn に `>>` を表示するには: > | 
| 1691 | 1790 | 	let g:termdebug_config['sign'] = '>>' | 
| 1692 | 1791 | 最初のいくつかのブレークポイントに個別の記号を指定することもできる: > | 
| 1693 |  | -	let g:termdebug_config['signs'] = ['>1', '>2', '>3', '>4', '>5', '>6', '>7', '>8', '>9'] | 
|  | 1792 | +	let g:termdebug_config['signs'] = ['>1', '>2', '>3', '>4', '>5', | 
|  | 1793 | +         \ '>6', '>7', '>8', '>9'] | 
| 1694 | 1794 | 	let g:termdebug_config['sign'] = '>>' | 
| 1695 | 1795 | 10 進数 (基数 10) のブレークポイントの目印を使用するには: > | 
| 1696 | 1796 | 	let g:termdebug_config['sign_decimal'] = 1 | 
|  | 
0 commit comments