1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VS Code の統合ターミナルで Ctrl + L が効かない? 設定で効かせた話

1
Last updated at Posted at 2026-06-01

こんにちは、統合ターミナルのショートカットが微妙に噛み合わないと気になってしまうアーキテクトのやまぱん!です 😅
補足コメントや質問、いいね、拡散、ぜひお願いします 🥺!
間違っていたら 優しく 教えてください!

TL;DR

  • Windows の VS Code 統合ターミナルでは、Ctrl + L が PowerShell 単体と同じ感覚では効かないことがありました
  • 私の環境では、シェルに制御文字を送るより VS Code 側のコマンドに寄せる方が素直に動きました
  • sendSequence\u000c を送る案は試せますが、今回は ^L 表示になってハマりました
  • 切り分けは PSReadLine の割り当て確認 → keybindings.json 確認 → Keyboard Shortcuts Troubleshooting の順で見ると進めやすいです

先に結論

今回の小ネタ、結論はかなりシンプルです。

VS Code の統合ターミナルで Ctrl + L を効かせたいなら、PowerShell 単体と同じ前提で考えるより、VS Code 側のショートカットとして設定した方が早かった です。

少なくとも私の Windows 環境では、この形がいちばんすっきり動きました。

設定はこれだけです。

{
  "key": "ctrl+l",
  "command": "workbench.action.terminal.clear",
  "when": "terminalFocus"
}

症状

やりたかったこと自体は単純で、PowerShell みたいに VS Code の統合ターミナルでも Ctrl + L を普通に使いたかっただけです。

でも実際には、期待通りに動きませんでした。

  • PowerShell 単体では Ctrl + L で画面クリアできる
  • VS Code の統合ターミナルでは同じ感覚で使えない
  • 最初は Ctrl + L を送れていないのか、PowerShell 側の設定なのか切り分けがつきにくい

こういう時、つい「PowerShell の設定が違うのかな」と思いたくなります。でも今回は、そこが本丸ではありませんでした。

まず見たこと

最初に確認したのは、PowerShell 側で Ctrl + L がどう見えているかです。

Get-PSReadLineKeyHandler -Chord Ctrl+l | Format-List *

これで、PowerShell 単体では Ctrl + LPSReadLineClearScreen に割り当たっていることを確認できました。

つまり、PowerShell 側の「本来の意味」はちゃんとあります。

次に見たのが VS Code 側です。

  • User の keybindings.jsonCtrl + L の上書きがあるか
  • 設定や拡張機能で露骨に奪っているものがないか
  • VS Code が実際にどのキーイベントを受けて、どのコマンドに解決しているか

最後の確認で便利なのが、VS Code 公式ドキュメントにもある Keyboard Shortcuts Troubleshooting です。これを使うと、「押したキーがどう解釈され、どのコマンドに解決されたか」をログで追えます。

ここまで見ると、今回のポイントはかなりはっきりしました。

原因の見立て

私の環境では、Ctrl + L は PowerShell にそのまま渡るというより、VS Code 側で先にキー処理されている と見るのが自然でした。

なので、PowerShell に「クリア文字を送りたい」と考えるより、VS Code の統合ターミナルでこのショートカットをどう効かせたいか に寄せた方が筋が良かったです。

ここを PowerShell のショートカット問題として扱うと、少し遠回りになります。

最初に試した sendSequence

VS Code のターミナルには、キーに対して制御文字を送る workbench.action.terminal.sendSequence があります。公式ドキュメントでも、たとえば Cmd + .Ctrl + C 相当にする例が紹介されています。

なので最初は、Ctrl + L でも同じ発想でいけるかなと思いました。

{
  "key": "ctrl+l",
  "command": "workbench.action.terminal.sendSequence",
  "when": "terminalFocus",
  "args": { "text": "\u000c" }
}

ただ、私の環境ではこれが期待通りに効きませんでした。

  • 画面が消えるのではなく ^L がそのまま見える
  • 少なくとも「PowerShell の ClearScreen を再現できた」とは言いにくい

ここは「sendSequence が悪い」というより、sendSequence はあくまで文字列や制御コードを送る仕組みで、統合ターミナルの見た目を消す目的とは少しレイヤーが違う と捉える方が納得しやすかったです。

最終的にこれで落ち着いた

そこで、Ctrl + L に VS Code の画面クリアコマンドを直接割り当てました。

{
  "key": "ctrl+l",
  "command": "workbench.action.terminal.clear",
  "when": "terminalFocus"
}

これに変えると、統合ターミナルの画面クリアとしては期待通りに動きました。

今回の話は、「PowerShell で Ctrl + L を再現する」よりも、VS Code の統合ターミナルで Ctrl + L をちゃんと効かせる のが目的でした。なので、この着地の方が実用上はかなり良かったです。

小ネタとして何が便利か

この手のハマりどころ、地味ですが結構ありますよね。

  • PowerShell 単体では効く
  • VS Code の統合ターミナルだと同じにならない
  • でも原因はシェルではなく VS Code 側のキー解決かもしれない

このパターンを一度整理しておくと、Ctrl + L 以外のショートカットでも切り分けしやすくなります。

特に便利だったのは、次の順で見ることです。

  1. PowerShell / PSReadLine 側の割り当てを確認する
  2. keybindings.json の上書きを確認する
  3. Keyboard Shortcuts Troubleshooting で、VS Code が何を解決したかを見る
  4. シェルに寄せるべきか、VS Code コマンドに寄せるべきかを決める

「制御文字を送る」より「UI コマンドに寄せる」が正解なケース、思ったよりあります。

前提環境

今回の観測は、次の前提で確認しました。

  • Windows
  • VS Code の統合ターミナル
  • PowerShell
  • PSReadLine 利用あり

なので、macOS や Linux、あるいは Bash / zsh では同じ結論にならないかもしれません。そこは 私の環境ではこうだった として読んでもらうのが安全です。

参考

  • VS Code docs: Keyboard shortcuts for Visual Studio Code

  • VS Code docs: Terminal Basics

まとめ

Ctrl + L が VS Code の統合ターミナルで効かない時、最初は PowerShell 側を疑いたくなります。でも今回いちばん効いたのは、PowerShell の再現より、VS Code 側のショートカット設定として整理する ことでした。

こういう小さいハマりどころ、調べ終わると一行設定で終わるんですが、切り分けに入る前は意外と時間を持っていかれますよね 😅

同じように「PowerShell では効くのに、VS Code の統合ターミナルだと微妙に違う」という場面があれば、まずは Keyboard Shortcuts Troubleshooting を見てみるのがおすすめです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?