やりたいこと
VSCodeのエディタで選択したコマンドをターミナルで実行する。
簡単に言えば、エディタでコピーして、ターミナルでペーストする操作の自動化。
code runnerなど自動実行する拡張機能もあったが、実行内容を一時ファイルに格納して実行する仕様上、
dockerやデータベースにログインした後、コマンド入力が継続できない問題があったので、multi-commandを利用して実装した。
参考記事
multi-commandの利用方法は、以下の記事を参考にさせて頂きました。
【VSCode】複数のコマンドを一つのキーで実行したい
設定手順
拡張機能multi-commandのインストール
VSCodeの拡張機能からmulti-commandをインストール
settings.jsonの修正
以下をVSCodeのsettings.jsonに追記
"multiCommand.commands": [
{
"command": "multiCommand.exeCommandToTerminal",
"sequence": [
"editor.action.clipboardCopyAction",
"workbench.action.terminal.focus",
"workbench.action.terminal.paste",
{
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "\n"
}
},
"workbench.action.focusPreviousGroup"
]
}
]
解説
command: コマンドの名前
sequence: コマンドの順番
editor.action.clipboardCopyAction: エディタの選択部分をコピー
workbench.action.terminal.focus: カーソルをターミナルに切り替える
workbench.action.terminal.paste: コピー内容をペーストする
workbench.action.terminal.sendSequence: 任意の文字の送信(ここでは改行を送信)
workbench.action.focusPreviousGroup: 前の画面にカーソルを戻す(ここではエディタに戻す)
keybindings.jsonの修正
以下をVSCodeのkeybindings.jsonに追記
ここではショートカットキーは、ctrl + shift + v に設定
{
"key": "ctrl+shift+v",
"command": "extension.multiCommand.execute",
"args": {
"command": "multiCommand.exeCommandToTerminal",
},
"when": "editorTextFocus"
}
解説
key: ショートカットキーの設定
command: 実行するコマンド(settings.jsonに追記したコマンドを指定)
when: ショートカットキーが有効になる条件
実行手順
- VSCodeで、エディタとターミナルを開く
- エディタで実行したいコマンドを選択する
- ctrl + shift + v を押す
備考
・複数行のコピーをしても警告などはないため、選択範囲に注意してください。
・やっていることは、ただのコピー&ペーストなので、bashでなくてもエディタとターミナルのセットであれば何でも利用できるはず。