0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VSCodeでキーボードから「直前のコマンドを実行」したい

Posted at

VSCodeの統合ターミナルを使ってる前提です。
「さっきターミナルで実行したコマンドをもう一度実行したい」ってことよくありますよね。
でもいちいちターミナルに移動して、上矢印押して、Enter!ってなんかいちいち面倒じゃないですか?
でもショートカットに登録もできそうにないし・・・

ショートカット登録できた

と、半ば諦めてたんですが、こちらのリンクのおかげでできました。
https://qiita.com/abcang/items/7cc0e2d9ae552b6f27bc
sendSequenceで制御文字を送るという発想がなかったです。

keybindings.jsonにこんな感じで追加。

    {
        "key": "ctrl+k ctrl+h",
        "command": "workbench.action.terminal.sendSequence",
        "args": { "text": "\u001b[A\n" }
    },

key部分は各自好きに変更してください。

なにをしてるかというとターミナルに上矢印キーを押したときの制御文字[[AとEnter\nを送りつけてるだけです。
ちなみに制御文字16進表記はWikipediaで確認できます。
https://ja.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1%E6%96%87%E5%AD%97#Field_separators

Windows + WSL2で確認しています。制御文字はターミナル側の処理のはずなので中身のshellには関係なく動くと思います。

for vscode vimmer

vscode-vimを使ってて、settings.jsonにキーバインドを書いてる方はこっちのがオススメ。

    {
      "before": ["leader", "h"],
      "commands": [
        "workbench.action.terminal.scrollToBottom",
        {
          "command": "workbench.action.terminal.sendSequence",
          "args": { "text": "\u001b[A\n" }
        }
      ]
    },

commandsで複数のコマンドをまとめることができるので、最初にターミナルを一番下までスクロールさせてから実行させてます。
うっかりターミナルを上の方にスクロールしっぱなしで放置してても、ちゃんと実行結果が見れます。
before部分はお好きなように。

これでまた一つ快適になりました。
VSCode最高!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?