ターミナルの基礎
Visual Studio Code には、ワークスペースのルートから起動するフル機能の統合ターミナルが含まれています。統合ターミナルは、リンクやエラー検出などの機能をサポートするためにエディターと統合されています。統合ターミナルは、スタンドアロンのターミナルと同様に、mkdir や git などのコマンドを実行できます。
ターミナルを開くには、次の手順に従います。
- メニューから、[ターミナル] > [新しいターミナル] または [表示] > [ターミナル] メニューコマンドを使用します。
- [コマンドパレット] (⇧⌘P (Windows, Linux Ctrl+Shift+P)) から、[表示: ターミナルの切り替え] コマンドを使用します。
- エクスプローラーで、[統合ターミナルで開く] コンテキストメニューコマンドを使用して、フォルダーから新しいターミナルを開くことができます。
- ターミナルパネルを切り替えるには、⌃` (Windows, Linux Ctrl+`) キーボードショートカットを使用します。
- 新しいターミナルを作成するには、⌃⇧` (Windows, Linux Ctrl+Shift+`) キーボードショートカットを使用します。
VS Code のターミナルには、コマンドが実行された場所をコマンドの左側とスクロールバーの装飾で追跡するシェル統合と呼ばれる追加機能があります。
注: VS Code の外部で作業したい場合は、⇧⌘C (Windows, Linux Ctrl+Shift+C) キーボードショートカットを使用して外部ターミナルを開きます。
ターミナルシェル
統合ターミナルは、マシンにインストールされているさまざまなシェルを使用でき、デフォルトはシステムデフォルトから取得されます。シェルは検出され、ターミナルプロファイルのドロップダウンに表示されます。
ターミナルシェルの構成の詳細については、ターミナルプロファイルの記事を参照してください。
ターミナルの管理
ターミナルタブ UI は、ターミナルビューの右側にあります。各ターミナルには、名前、アイコン、色、およびグループ装飾 (ある場合) が付いたエントリがあります。
[ターミナル] パネルの右上にある [+] アイコンを選択するか、ターミナルドロップダウンからプロファイルを選択するか、⌃⇧` (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) を使用します。
リスト内のタブをドラッグアンドドロップすると、タブの順序が変更されます。タブをメインターミナル領域にドラッグすると、ターミナルをあるグループから別のグループに移動できます。
ターミナルを独自のグループに移動するには、コマンドパレットまたは右クリックコンテキストメニューから [ターミナル: ターミナルの分割解除] コマンドを使用します。
エディター領域のターミナル
エディター領域 (ターミナルエディター) でターミナルを開くには、[ターミナル: エディター領域に新しいターミナルを作成] コマンド、[ターミナル: サイドにエディター領域に新しいターミナルを作成] コマンドを使用するか、ターミナルビューからエディター領域にターミナルをドラッグします。ターミナルエディターは、通常のエディタータブのように表示されます。
ファイルエディターの右側に PowerShell および WSL ターミナルを積み重ねるなど、エディターグループレイアウトシステムを使用して、ターミナルエディターを両側または複数次元で配置できます。
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.jp
、vscode://path/to/file
、file://path/to/file
などの URI のように見えるリンクは、プロトコルの標準ハンドラーを使用して開きます。たとえば、https
リンクはブラウザーで開きます。 -
ファイルリンク: システム上に存在することが確認されたファイルへのリンク。これらは、新しいエディタータブでファイルを開き、
file:1:2
、file:line 1, column 2
など、多くの一般的な行/列形式をサポートします。 -
フォルダーリンク: フォルダーへのリンクはファイルリンクに似ていますが、フォルダーに新しい VS Code ウィンドウを開きます。
-
単語リンク: terminal.integrated.wordSeparators 設定を使用するフォールバックリンクタイプ。この設定は単語の区切り文字を定義し、ほぼすべてのテキストを単語にします。単語リンクをアクティブにすると、ワークスペースで単語が検索されます。結果が 1 つの場合は開き、それ以外の場合は検索結果が表示されます。単語リンクは「信頼度が低い」と見なされ、Ctrl/Cmd キーを押さない限り、下線またはツールチップは表示されません。また、行と列のサフィックスのサポートも限定的です。
[検出されたリンクを開く] コマンド (⇧⌘G (Windows, Linux Ctrl+Shift+G)) を使用すると、キーボードからリンクにアクセスできます。
ヒント: リンク検証によってパフォーマンスの問題が発生する場合 (高遅延リモート環境など)、terminal.integrated.enableFileLinks 設定を使用して無効にします。
拡張機能によるリンクの処理
拡張機能は、拡張機能がクリック時に何が起こるかを定義できる リンクプロバイダー を提供できます。この例としては、GitLens 拡張機能が Git ブランチリンクを検出することが挙げられます。
キーボードアクセシビリティ
リンクは、リンクのタイプに基づいてリンクを開くいくつかのコマンドを通じてキーボードからアクセスできます。
- [ターミナル: 最後に見つかったローカルファイルリンクを開く] - 最後に見つかったローカルファイルリンクを開きます。デフォルトのキーボードショートカットはありません。
- [ターミナル: 最後に見つかった URL リンクを開く] - 最後に見つかった URI/URL リンクを開きます。デフォルトのキーボードショートカットはありません。
- [ターミナル: 検出されたリンクを開く...] - 単語リンクを含む、検出されたすべてのリンクを含む検索可能なクイックピッカーを開きます。デフォルトのキーボードショートカットは Ctrl/Cmd+Shift+O で、[エディターでシンボルへ移動] キーボードショートカットと同じです。
コピー & ペースト
コピーと貼り付けのキーボードショートカットは、プラットフォーム標準に従います。
- Linux: Ctrl+Shift+C および Ctrl+Shift+V、選択貼り付けは Shift+Insert で使用できます
- macOS: Cmd+C および Cmd+V
- Windows: Ctrl+C および Ctrl+V
terminal.integrated.copyOnSelection が有効になっている場合、コピーは選択時に自動的に行われます。
デフォルトでは、複数行を貼り付けるときに警告が表示されます。これは、terminal.integrated.enableMultiLinePasteWarning 設定で無効にできます。これは、シェルが「ブラケット付き貼り付けモード」をサポートしていない場合にのみ行われます。そのモードが有効になっている場合、シェルは複数行の貼り付けを処理できることを示しています。
マウスの使用
右クリックの動作
右クリックの動作は、プラットフォームによって異なります。
- Linux: コンテキストメニューを表示します。
- macOS: カーソル下の単語を選択し、コンテキストメニューを表示します。
- Windows: 選択がある場合は選択をコピーしてドロップし、それ以外の場合は貼り付けます。
これは、terminal.integrated.rightClickBehavior 設定を使用して構成できます。オプションは次のとおりです。
default
- コンテキストメニューを表示します。copyPaste
- 選択がある場合はコピーし、それ以外の場合は貼り付けます。paste
- 右クリックで貼り付けます。selectWord
- カーソル下の単語を選択し、コンテキストメニューを表示します。nothing
- 何もせず、イベントをターミナルに渡します。
Alt キーでカーソルを再配置する
Alt キーを押しながら左クリックすると、マウスの下にカーソルが再配置されます。これは、矢印キーの押下をシミュレートすることで機能しますが、一部のシェルまたはプログラムでは確実に機能しない場合があります。この機能は、terminal.integrated.altClickMovesCursor 設定で無効にできます。
マウスイベントモード
ターミナルで実行されているアプリケーションがマウスイベントモードをオンにすると (Vim マウスモードなど)、マウスインタラクションはターミナルの代わりにアプリケーションに送信されます。これは、クリックとドラッグが選択を作成しなくなることを意味します。ターミナルの選択は、Windows および Linux では Alt キーを押すことで強制的に行うことができます。これは macOS では Option キーでも行うことができますが、最初に terminal.integrated.macOptionClickForcesSelection 設定を有効にする必要があります。
検索
統合ターミナルには、⌘F (Windows, Linux Ctrl+F) でトリガーできる検索機能があります。
ヒント: 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)) を選択して、ターミナルの列数をターミナルで最も長い折り返し行のサイズに変更することもできます。
次のステップ
ターミナルの基本については、このドキュメントで説明しました。詳細については、以下をお読みください。
- ターミナルインラインチャット - ターミナルで AI 搭載の提案を直接利用できます。
- タスク - タスクを使用すると、外部ツールと統合し、ターミナルを最大限に活用できます。
- VS Code のターミナルをマスターする - ターミナルのパワーユーザー向けのヒントが満載の外部ブログです。
- VS Code 内のキーボードショートカットを参照して ([基本設定: キーボードショートカットを開く] を選択し、「ターミナル」で検索)、ターミナルコマンドを調べてください。
よくある質問
ターミナルの起動に問題があります。
このような問題については、専用のトラブルシューティングガイドがあります。
管理者ターミナルを作成するにはどうすればよいですか?
統合ターミナルシェルは、VS Code のアクセス許可で実行されています。昇格された (管理者) アクセス許可または異なるアクセス許可でシェルコマンドを実行する必要がある場合は、ターミナル内で runas.exe
などのプラットフォームユーティリティを使用します。
ターミナルのカスタマイズの詳細については、「プロファイルの構成」のターミナルプロファイルを参照してください。
エクスプローラーの [統合ターミナルで開く] コマンドにキーボードショートカットを追加できますか?
エクスプローラーから特定のフォルダーの新しいターミナルを開くには、[統合ターミナルで開く] コンテキストメニューコマンドを使用します。
デフォルトでは、[統合ターミナルで開く] に関連付けられたキーボードショートカットはありませんが、キーボードショートカットエディター (⌘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
がインストールされている場所を追跡し、古い 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 に no-op を指示することです。
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~
が表示されます。
これは通常、ターミナル内で実行されているプログラム/シェルが「ブラケット付き貼り付けモード」をオンにするように要求したが、何かがそれを適切にサポートしていないことを意味します。これを回避するには、printf "\e[?2004l"
を実行してそのセッションで無効にするか、次の内容を ~/.inputrc
ファイルに追加できます。
set enable-bracketed-paste off
または、ブラケット付き貼り付けモードを強制的にシェルの要求を無視するようにするには、この設定をオフにします。
{
"terminal.integrated.ignoreBracketedPasteMode": true
}
Ctrl+A、Ctrl+R が zsh で ^A、^R を出力する
これは、init スクリプトで $EDITOR
または $VISUAL
を vi
/vim
に設定したために、zsh が Emacs モードではなく Vim モードになっている場合に発生する可能性があります。
これを回避するには、2 つのオプションがあります。
$EDITOR
をvi(m)
に設定しないようにします。ただし、Git エディターを機能させたい場合は、これはオプションではありません。bindkey -e
を init スクリプトに追加して、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
詳細については、「最小コントラスト比」セクションを参照してください。