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最高!