VS Codeのエージェントモードを拡張するには、を試してください!

ターミナルの基本

Visual Studio Codeには、ワークスペースのルートで起動するフル機能の統合ターミナルが含まれています。リンクエラー検出などの機能をサポートするため、エディターとの統合が提供されています。統合ターミナルは、スタンドアロンのターミナルと同様に、mkdirやgitなどのコマンドを実行できます。

ターミナルは次のように開くことができます。

  • メニューから、ターミナル > 新しいターミナル または 表示 > ターミナル のメニューコマンドを使用します。
  • コマンドパレット (⇧⌘P (Windows, Linux Ctrl+Shift+P)) から、表示: ターミナルの切り替え コマンドを使用します。
  • エクスプローラーでは、統合ターミナルで開く コンテキストメニューコマンドを使用して、フォルダーから新しいターミナルを開くことができます。
  • ターミナルパネルを切り替えるには、⌃` (Windows, Linux Ctrl+`) キーボードショートカットを使用します。
  • 新しいターミナルを作成するには、⌃⇧` (Windows, Linux Ctrl+Shift+`) キーボードショートカットを使用します。

VS Codeのターミナルには、シェル統合と呼ばれる追加機能があり、コマンドが実行された場所をコマンドの左側とスクロールバーに装飾として表示します。

The integrated terminal can run commands such as mkdir and git just like a standalone terminal. VS Code's terminal has additional functionality called shell integration that tracks where commands are run with decorations on the left of a command and in the scrollbar.

注: VS Codeの外部で作業したい場合は、⇧⌘C (Windows, Linux Ctrl+Shift+C) キーボードショートカットを使用して外部ターミナルを開いてください。

ターミナルシェル

統合ターミナルは、お使いのマシンにインストールされている様々なシェルを使用でき、デフォルトはシステムのデフォルトから取得されます。シェルは検出され、ターミナルプロファイルのドロップダウンに表示されます。

A detected profile can be chosen in the dropdown next to the new terminal button. Some examples on Windows include PowerShell, Command Prompt, Git Bash and WSL

このターミナルプロファイルの記事で、ターミナルシェルの構成について詳しく学ぶことができます。

ターミナルの管理

ターミナルタブのUIは、ターミナルビューの右側にあります。各ターミナルには、名前、アイコン、色、およびグループ装飾 (存在する場合) が表示されます。

Activating the Launch Profile button will show all detected and manually configured profiles

ターミナルインスタンスを追加するには、ターミナルパネルの右上にある+アイコンを選択するか、ターミナルドロップダウンからプロファイルを選択するか、⌃⇧` (Windows, Linux Ctrl+Shift+`) コマンドをトリガーします。この操作により、そのターミナルに関連付けられたタブリストに別のエントリが作成されます。

ターミナルインスタンスを削除するには、タブにカーソルを合わせてゴミ箱ボタンを選択するか、タブアイテムを選択してDeleteキーを押すか、ターミナル: アクティブなターミナルインスタンスを終了コマンドを使用するか、右クリックのコンテキストメニューを使用します。

次のグループにフォーカスする ⇧⌘] (Windows, Linux Ctrl+PageDown) と、前のグループにフォーカスする ⇧⌘[ (Windows, Linux Ctrl+PageUp) を使用して、ターミナルグループ間を移動します。

ターミナルのステータスが変更されると、タブのラベルにあるターミナルタイトルの右側にアイコンが表示されることがあります。例えば、ベル (macOS) や、タスクの場合はエラーがないときにチェックマークが表示され、それ以外の場合はXが表示されます。アイコンにカーソルを合わせると、ステータス情報 (アクションを含む場合あり) を読み取ることができます。

グループ (分割ペイン)

複数のターミナルを並べて配置し、ターミナルを分割してグループを作成します。

  • 右側のターミナルリストのエントリにカーソルを合わせ、インライン分割ボタンを選択します。
  • コンテキストメニューを右クリックし、分割メニューオプションを選択します。
  • Altキーを押しながら、タブ、+ボタン、またはターミナルパネルの単一タブをクリックします。
  • ⌘\ (Windows, Linux Ctrl+Shift+5) コマンドをトリガーします。

ヒント: 新しいターミナルの作業ディレクトリは、terminal.integrated.splitCwd 設定によって異なります。

グループ内のターミナル間を移動するには、前のペインにフォーカスする ⌥⌘← (Windows, Linux Alt+Left)、または次のペインにフォーカスする ⌥⌘→ (Windows, Linux Alt+Right) を使用します。

リスト内のタブをドラッグ&ドロップすると、順序が変更されます。タブをメインのターミナルエリアにドラッグすると、ターミナルをあるグループから別のグループに移動できます。

ターミナルを独自のグループに移動するには、コマンドパレットまたは右クリックのコンテキストメニューからターミナル: ターミナルの分割を解除コマンドを使用します。

エディターエリアのターミナル

エディターエリアでターミナル (ターミナルエディター) を開くには、ターミナル: エディターエリアに新しいターミナルを作成コマンド、ターミナル: エディターエリアに新しいターミナルを横に作成コマンド、またはターミナルビューからエディターエリアにターミナルをドラッグします。ターミナルエディターは通常のエディタータブのように表示されます。

Terminal editors are presented like regular text file tabs

エディターグループのレイアウトシステムを使用して、ターミナルエディターを左右に配置したり、複数の次元で配置したりできます (例: ファイルエディターの右側にPowerShellターミナルとWSLターミナルを重ねて表示)。

Terminal editors are can be laid out using the editor group layout system, for example 2 terminals could sit to the right of a text editor

terminal.integrated.defaultLocation 設定で、デフォルトのviewまたはeditorエリアのターミナル位置を変更できます。

バッファの移動

ターミナルの内容はバッファと呼ばれ、下部のビューポートのすぐ上のセクションは「スクロールバック」と呼ばれます。保持されるスクロールバックの量は、terminal.integrated.scrollback 設定によって決定され、デフォルトは1000行です。

ターミナルバッファ内を移動するための様々なコマンドが利用可能です。

  • 1行上にスクロール - ⌥⌘PageUp (Windows Ctrl+Alt+PageUp, Linux Ctrl+Shift+Up)
  • 1行下にスクロール - ⌥⌘PageDown (Windows Ctrl+Alt+PageDown, Linux Ctrl+Shift+Down)
  • 1ページ上にスクロール - PageUp (Windows, Linux Shift+PageUp)
  • 1ページ下にスクロール - PageDown (Windows, Linux Shift+PageDown)
  • 先頭にスクロール - ⌘Home (Windows Ctrl+Home, Linux Shift+Home)
  • 末尾にスクロール - ⌘End (Windows Ctrl+End, Linux Shift+End)

コマンドナビゲーションも利用可能です (シェル統合を参照)。

  • 前のコマンドにスクロール - ⌘↑ (Windows, Linux Ctrl+Up)
  • 次のコマンドにスクロール - ⌘↓ (Windows, Linux Ctrl+Down)

スクロールは瞬時に行われますが、terminal.integrated.smoothScrolling 設定を使用すると、短い時間でアニメーションするように構成できます。

ターミナルには、エディター統合による高度なリンク検出機能や、拡張機能によって提供されるリンクハンドラーが搭載されています。リンクにカーソルを合わせると下線が表示され、Ctrl/Cmd キーを押しながらクリックします。

これらの組み込みリンクハンドラーは、次の優先順位で使用されます。

  • URI/URL: https://vscode.dokyumento.jpvscode://path/to/filefile://path/to/file のようなURIに見えるリンクは、プロトコルの標準ハンドラーを使用して開かれます。例えば、httpsリンクはブラウザを開きます。

    Opening a URI link will open it in the system browser

  • ファイルリンク: システム上に存在することが確認されたファイルへのリンク。これらは新しいエディタータブでファイルを開き、file:1:2file:line 1, column 2などの多くの一般的な行/列形式をサポートします。

    Activating a file link will open it in an editor

  • フォルダーリンク: フォルダーへのリンクはファイルリンクに似ていますが、そのフォルダーで新しいVS Codeウィンドウを開きます。

    Activating a folder link will open it in a new window

  • 単語リンク: terminal.integrated.wordSeparators 設定を使用するフォールバックリンクタイプ。この設定は単語の境界を定義し、ほとんどすべてのテキストを単語にします。単語リンクをアクティブ化すると、ワークスペース内でその単語を検索します。結果が1つだけの場合はそれが開き、それ以外の場合は検索結果が表示されます。単語リンクは「信頼度が低い」と見なされ、Ctrl/Cmd キーを押さない限り下線やツールチップは表示されません。また、行および列のサフィックスに対するサポートも限られています。

    Activating a word link 'terminal:15' will open a Quick Pick searching the workspace for all files containing 'terminal', choosing an option will open the file at line 15

検出されたリンクを開くコマンド (⇧⌘G (Windows, Linux Ctrl+Shift+G)) を使用して、キーボードからリンクにアクセスできます。

Open Detected Link opens a quick pick with all links in the viewport, split into categories

ヒント: リンクの検証が高遅延のリモート環境などでパフォーマンスの問題を引き起こす場合、terminal.integrated.enableFileLinks 設定で無効にすることができます。

拡張機能は、クリック時に何が起こるかを拡張機能が定義できるリンクプロバイダーを提供できます。これの例としては、GitLens拡張機能がGitブランチリンクを検出するケースがあります。

When GitLens is installed, hovering a branch name will provide custom behavior to open the branch in the UI

キーボードアクセシビリティ

リンクは、リンクの種類に基づいてリンクを開く複数のコマンドを介してキーボードからアクセスできます。

  • ターミナル: 最後のローカルファイルリンクを開く - 最新のローカルファイルリンクを開きます。デフォルトのキーボードショートカットはありません。
  • ターミナル: 最後のURLリンクを開く - 最新のURI/URLリンクを開きます。デフォルトのキーボードショートカットはありません。
  • ターミナル: 検出されたリンクを開く... - 単語リンクを含む、検出されたすべてのリンクを検索可能なクイックピックで開きます。デフォルトのキーボードショートカットはCtrl/Cmd+Shift+Oであり、これはエディター内のシンボルに移動キーボードショートカットと同じです。

コピーと貼り付け

コピーと貼り付けのキーボードショートカットはプラットフォームの標準に従います。

  • Linux: Ctrl+Shift+CCtrl+Shift+V; 選択貼り付けは Shift+Insert で利用できます。
  • macOS: Cmd+CCmd+V
  • Windows: Ctrl+CCtrl+V

terminal.integrated.copyOnSelection が有効になっている場合、選択時に自動的にコピーが行われます。

デフォルトでは、複数行を貼り付ける際に警告が表示されますが、これはterminal.integrated.enableMultiLinePasteWarning 設定で無効にできます。これは、シェルが「括弧付き貼り付けモード (bracketed paste mode)」をサポートしていない場合にのみ行われます。このモードが有効になっている場合、シェルは複数行の貼り付けを処理できることを示しています。

マウスの使用

右クリックの動作

右クリックの動作はプラットフォームによって異なります。

  • Linux: コンテキストメニューを表示します。
  • macOS: カーソル下の単語を選択し、コンテキストメニューを表示します。
  • Windows: 選択範囲があればコピーしてドロップし、なければ貼り付けます。

これは、terminal.integrated.rightClickBehavior 設定を使用して構成できます。オプションは次のとおりです。

  • default - コンテキストメニューを表示します。
  • copyPaste - 選択範囲があればコピーし、なければ貼り付けます。
  • paste - 右クリックで貼り付けます。
  • selectWord - カーソル下の単語を選択し、コンテキストメニューを表示します。
  • nothing - 何もせず、イベントをターミナルに渡します。

列選択

Altキーを押しながら左クリックしてドラッグすると、通常の行選択ではなく、ターミナル内のテキストの四角形範囲を選択できます。

Altキーでカーソルを再配置

Altキーを押しながら左クリックすると、カーソルがマウスの下に再配置されます。これは矢印キーのキーストロークをシミュレートすることで機能しますが、一部のシェルやプログラムでは reliably 動作しない場合があります。この機能はterminal.integrated.altClickMovesCursor 設定で無効にできます。

マウスイベントモード

ターミナルで実行中のアプリケーションがVimマウスモードなどのマウスイベントモードをオンにすると、マウス操作はターミナルではなくアプリケーションに送信されます。これは、クリックやドラッグが選択を作成しなくなることを意味します。WindowsとLinuxではAltキーを押し続けることでターミナルの選択を強制できます。macOSではOptionキーでも可能ですが、まずterminal.integrated.macOptionClickForcesSelection 設定を有効にする必要があります。

検索

統合ターミナルには、⌘F (Windows, Linux Ctrl+F) でトリガーできる検索機能があります。

Find in the terminal will highlight all text matching the query

ヒント: Ctrl+F をシェルに送信するには、シェルをスキップするコマンドからworkbench.action.terminal.focusFindコマンドを削除します。

選択したテキストの実行

runSelectedTextコマンドを使用するには、エディターでテキストを選択し、コマンドパレット (⇧⌘P (Windows, Linux Ctrl+Shift+P)) を介してターミナル: アクティブターミナルで選択したテキストを実行コマンドを実行すると、ターミナルは選択したテキストを実行しようとします。アクティブなエディターでテキストが選択されていない場合、カーソルがある行全体がターミナルで実行されます。

ヒント: アクティブなファイルは、workbench.action.terminal.runActiveFileコマンドを使用しても実行できます。

ターミナルの最大化

ターミナルビューは、上向きのシェブロンアイコンが付いたパネルサイズ最大化ボタンをクリックすることで最大化できます。これにより、一時的にエディターが非表示になり、パネルが最大化されます。これは、大量の出力に一時的に集中するのに役立ちます。一部の開発者は、新しいウィンドウを開き、パネルを最大化し、サイドバーを非表示にすることで、VS Codeをスタンドアロンのターミナルとして使用します。

パネルは、配置オプションが中央に設定されている場合にのみ最大化できることに注意してください。

すべて選択

ターミナル: すべて選択 コマンドがあり、macOSではCmd+Aにバインドされていますが、WindowsとLinuxではシェルホットキーと競合する可能性があるため、デフォルトのキーボードショートカットはありません。すべて選択するためにCtrl+Aを使用するには、このカスタムキーボードショートカットを追加します。

{
  "key": "ctrl+a",
  "command": "workbench.action.terminal.selectAll",
  "when": "terminalFocus && !isMac"
},

ファイルパスのドラッグ&ドロップ

ファイルをターミナルにドラッグすると、アクティブなシェルに合わせたエスケープ処理が施されたパスがターミナルに入力されます。

タスクによるターミナルの自動化

このタスク機能を使用してターミナルの起動を自動化できます。例えば、次の.vscode/tasks.jsonファイルは、ウィンドウ起動時に単一のターミナルグループでコマンドプロンプトとPowerShellターミナルを起動します。

{
  "version": "2.0.0",
  "presentation": {
    "echo": false,
    "reveal": "always",
    "focus": false,
    "panel": "dedicated",
    "showReuseMessage": true
  },
  "tasks": [
    {
      "label": "Create terminals",
      "dependsOn": [
        "First",
        "Second"
      ],
      // Mark as the default build task so cmd/ctrl+shift+b will create them
      "group": {
        "kind": "build",
        "isDefault": true
      },
      // Try start the task on folder open
      "runOptions": {
        "runOn": "folderOpen"
      }
    },
    {
      // The name that shows up in terminal tab
      "label": "First",
      // The task will launch a shell
      "type": "shell",
      "command": "",
      // Set the shell type
      "options": {
        "shell": {
          "executable": "cmd.exe",
          "args": []
        }
      },
      // Mark as a background task to avoid the spinner animation on the terminal tab
      "isBackground": true,
      "problemMatcher": [],
      // Create the tasks in a terminal group
      "presentation": {
        "group": "my-group"
      }
    },
    {
      "label": "Second",
      "type": "shell",
      "command": "",
      "options": {
        "shell": {
          "executable": "pwsh.exe",
          "args": []
        }
      },
      "isBackground": true,
      "problemMatcher": [],
      "presentation": {
        "group": "my-group"
      }
    }
  ]
}

このファイルは、他の開発者と共有するためにリポジトリにコミットするか、workbench.action.tasks.openUserTasksコマンドを介してユーザータスクとして作成できます。

作業ディレクトリ

デフォルトでは、ターミナルはエクスプローラーで開かれているフォルダーで開かれます。terminal.integrated.cwd 設定を使用すると、代わりにカスタムパスを指定して開くことができます。

{
  "terminal.integrated.cwd": "/home/user"
}

Windowsでは、分割されたターミナルは親ターミナルが開始したディレクトリで起動します。macOSとLinuxでは、分割されたターミナルは親ターミナルの現在の作業ディレクトリを継承します。この動作は、terminal.integrated.splitCwd 設定を使用して変更できます。

{
  "terminal.integrated.splitCwd": "workspaceRoot"
}

Terminal Hereなど、より多くのオプションを提供する拡張機能も利用できます。

固定寸法ターミナル

ターミナル: 固定寸法を設定コマンドを使用すると、ターミナルとその擬似ターミナルが使用する列数と行数を変更できます。これにより、必要に応じてスクロールバーが追加されますが、不快なUXにつながる可能性があり、一般的には推奨されません。しかし、特にWindowsでは、ページングツールが利用できない場合にログや長い行を読むために、よく求められる機能です。

また、ターミナルタブを右クリックし、コンテンツ幅にサイズを切り替え (⌥Z (Windows, Linux Alt+Z)) を選択すると、ターミナルの列数をターミナル内で最も長い折り返し行に合わせてリサイズできます。

ターミナルでのGitHub Copilot

GitHub Copilotにアクセスできる場合、これを使用してターミナルコマンドやシェルスクリプトに関するAIによる支援を受けることができます。ターミナルでCopilotを使用する方法はいくつかあります。

ターミナルインラインチャット

シェルコマンドのヘルプを得るために、ターミナル内で直接インラインチャットを開始します。

  1. ターミナルを開きます (⌃` (Windows, Linux Ctrl+`))。
  2. ⌘I (Windows, Linux Ctrl+I) を押すか、コマンドパレットからターミナルインラインチャットコマンドを実行します。
  3. 次のように、自然言語で質問またはリクエストを入力します。
    • 「このディレクトリで最大のファイルを見つけるにはどうすればよいですか?」
    • 「最後のgitコミットを元に戻す方法を教えてください」
    • 「ログファイルを分析するbashスクリプトを作成してください」

Terminal inline chat helps you quickly get and run shell commands

Copilotが応答を提供したら、実行を選択してコマンドを直接実行するか、挿入を選択してターミナルに追加してさらに編集することができます。

ターミナルでGitHub Copilotを使用する方法の詳細については、ターミナルインラインチャットの使用を参照してください。

ターミナルチャット参加者

チャットビューで、専用の@terminalチャット参加者を「質問」モードで使用します。

  1. チャットビューを開きます (⌃⌘I (Windows, Linux Ctrl+Alt+I))。
  2. 質問を@terminalで開始して、ターミナル参加者に向けて質問します。
  3. ターミナルコマンド、シェルスクリプト、またはターミナル出力の説明について質問します。

  • @terminal このワークスペース内の5つの最大のファイルをリスト表示
  • @terminal /explain top シェルコマンド
  • @terminal パターンを再帰的にgrepする方法

チャットでターミナルコンテキストを参照する

チャットプロンプトにターミナル情報をコンテキストとして含めることができます。

  • #terminalSelection を使用して、ターミナルから選択したテキストをチャットプロンプトに追加します。
  • #terminalLastCommand を使用して、ターミナルで最後に実行したコマンドを含めます。

次のステップ

このドキュメントでは、ターミナルの基本について説明しました。さらに詳しく知るには、以下をお読みください。

  • ターミナルインラインチャット - ターミナル内で直接AIによる提案を受けられます。
  • タスク - タスクを使用すると、外部ツールと統合し、ターミナルを大いに活用できます。
  • VS Codeのターミナルをマスターする - ターミナルのパワーユーザー向けのヒントが満載の外部ブログです。
  • VS Code内でキーボードショートカットをブラウズしてターミナルコマンドを探索してください (基本設定: キーボードショートカットを開くで「terminal」を検索してください)。

よくある質問

ターミナルの起動で問題が発生しています

これらの問題については、専用のトラブルシューティングガイドがあります。

管理者ターミナルを作成するにはどうすればよいですか?

統合ターミナルシェルはVS Codeのアクセス許可で実行されます。昇格された (管理者) または異なるアクセス許可でシェルコマンドを実行する必要がある場合は、ターミナル内でrunas.exeなどのプラットフォームユーティリティを使用してください。

プロファイルの構成で、ターミナルプロファイルによるターミナルのカスタマイズについて詳しく学ぶことができます。

エクスプローラーの「統合ターミナルで開く」コマンドにキーボードショートカットを追加できますか?

エクスプローラーから統合ターミナルで開くコンテキストメニューコマンドを介して、特定のフォルダーの新しいターミナルを開くことができます。

A folder selected in the Explorer displaying the context menu with the Open in Integrated Terminal command

デフォルトでは、統合ターミナルで開くに関連付けられたキーボードショートカットはありませんが、キーボードショートカットエディター (⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S)) を介して、独自のキーボードショートカットをkeybindings.jsonに追加できます。

以下のkeybindings.jsonの例は、openInTerminalにキーボードショートカットCtrl+Tを追加します。

{
  "key": "ctrl+t",
  "command": "openInTerminal",
  "when": "filesExplorerFocus"
}

統合ターミナルを起動すると、nvmがプレフィックスオプションについて文句を言うのはなぜですか?

nvm (Node Version Manager) ユーザーは、VS Codeの統合ターミナル内でこのエラーを初めて目にすることがよくあります。

nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local"
Run `npm config delete prefix` or `nvm use --delete-prefix v8.9.1 --silent` to unset it

これは主にmacOSの問題であり、外部ターミナルでは発生しません。一般的な理由は次のとおりです。

  • npmが、パス上のどこかにある別のnodeインスタンス (例: /usr/local/bin/npm) を使用してグローバルにインストールされました。
  • 開発ツールを$PATHに含めるために、VS Codeは起動時にbashログインシェルを起動します。これは、~/.bash_profileが既に実行されており、統合ターミナルが起動すると別のログインシェルが実行され、$PATHが予期しない方法で再編成される可能性があることを意味します。

この問題を解決するには、古いnpmがどこにインストールされているかを特定し、それと古くなったnode_modulesの両方を削除する必要があります。nvmの初期化スクリプトを見つけ、それが実行される前にwhich npmを実行してください。新しいターミナルを起動したときにパスが表示されるはずです。

npmへのパスが分かったら、次のようなコマンドを実行してシンボリックリンクを解決し、古いnode_modulesを見つけてください。

ls -la /usr/local/bin | grep "np[mx]"

これにより、最終的に解決されたパスが得られます。

... npm -> ../lib/node_modules/npm/bin/npm-cli.js
... npx -> ../lib/node_modules/npm/bin/npx-cli.js

そこからファイルを削除し、VS Codeを再起動すると、問題が解決するはずです。

rm /usr/local/bin/npm /usr/local/lib/node_modules/npm/bin/npm-cli.js
rm /usr/local/bin/npx /usr/local/lib/node_modules/npm/bin/npx-cli.js

macOSでターミナルの分割ペインのサイズを変更すると、「カチン」という音がするのはなぜですか?

キーボードショートカット⌃⌘← と ⌃⌘→ は、ターミナルで個々の分割ペインのサイズを変更するためのデフォルトです。これらは機能しますが、Chromiumの問題によりシステムの「無効なキー」音が鳴る原因にもなります。推奨される回避策は、ターミナルでこれを実行して、macOSにこれらのキーボードショートカットに対して何もしないように指示することです。

mkdir -p ~/Library/KeyBindings
cat > ~/Library/KeyBindings/DefaultKeyBinding.dict <<EOF
{
  "@^\UF700" = "noop:";
  "@^\UF701" = "noop:";
  "@^\UF702" = "noop:";
  "@^\UF703" = "noop:";
  "@~^\UF700" = "noop:";
  "@~^\UF701" = "noop:";
  "@~^\UF702" = "noop:";
  "@~^\UF703" = "noop:";
}
EOF

ターミナルのレンダリングに問題があります。どうすればよいですか?

デフォルトでは、統合ターミナルはほとんどのマシンでGPUアクセラレーションを使用してレンダリングされます。通常、レンダリングの問題がある場合、それはハードウェア/OS/ドライバーの何かがGPUレンダラーとうまく連携していない問題です。最初に試すべきことは、GPUアクセラレーションを無効にし、レンダリング速度を犠牲にして、より信頼性の高いDOMベースのレンダリングに切り替えることです。

{
  "terminal.integrated.gpuAcceleration": "off"
}

詳細については、GPUアクセラレーションセクションを参照してください。

何かを貼り付けると1~または[201~と表示されます。

これは通常、ターミナル内で実行中のプログラム/シェルが「括弧付き貼り付けモード (bracketed paste mode)」をオンにするよう要求したが、何らかの理由でそれが適切にサポートされていないことを意味します。これを回避するには、printf "\e[?2004l"を実行してそのセッションで無効にするか、~/.inputrcファイルに以下を追加してください。

set enable-bracketed-paste off

あるいは、この設定でオフにすることにより、シェルからの要求を無視するように括弧付き貼り付けモードを強制できます。

{
  "terminal.integrated.ignoreBracketedPasteMode": true
}

zshでCtrl+A, Ctrl+Rが^A, ^Rと出力される

これは、initスクリプトで$EDITORまたは$VISUALvi/vimに設定しているために、zshがEmacsモードではなくVimモードになっている場合に発生する可能性があります。

これを回避するには、2つのオプションがあります。

  • $EDITORvi(m)に設定しないようにしてください。ただし、Gitエディターを機能させたい場合は、このオプションは利用できません。
  • initスクリプトにbindkey -eを追加して、Emacsを明示的に設定してください。

macOSの組み込みターミナルのように、Cmd+. をCtrl+Cにマッピングするように構成するにはどうすればよいですか?

macOSのデフォルトターミナルは、Cmd+. を使用してCtrl+Cと同じ操作を実行します。VS Codeでこの動作を実現するには、このカスタムキーボードショートカットを追加します。

{
  "key": "cmd+.",
  "command": "workbench.action.terminal.sendSequence",
  "when": "terminalFocus",
  "args": { "text": "\u0003" }
}

ターミナルの色が正しくないのはなぜですか?

デフォルトで有効になっているアクセシビリティ機能の1つは、前景テキストに少なくとも4.5の最小コントラスト比が満たされていることを保証することです。この機能により、使用されているシェルやテーマに関係なくテキストが読みやすくなりますが、そうでない場合は不可能です。この機能を無効にするには、次のように設定できます。

"terminal.integrated.minimumContrastRatio": 1

詳細については、最小コントラスト比のセクションを参照してください。