VSCode の拡張 multi-command を公開しました
先日、Atom使いがVisual Studio Codeを使ってみたら良い感じだった話と題して現状で Visual Studio Code で少し困っている点を書きましたが、その中の一つを解決すべくVisual Stuiod Code の拡張を作成しました。multi-command という名前です。
1 2 |
ext install multi-command |
今回解決を試みた問題点は、emacsキーバインドの kill-ring とOSのクリップボードが別になっているという点です。
emacs のキーバインド自体が拡張機能なので、そちらの方にプルリクするなどしても良かったのですが、自分で別に拡張を作って見たかったので作成し、一応目的を果たせたのでついでに公開しておきました。
multi-command 拡張機能
multi-command 自体は、複数の VSCode のコマンドを新たに一つのコマンドとして定義し、キーバインドで割り当てられるというシンプルな拡張機能です。
また、オプションとして各コマンドの実行間隔をミリ秒単位で指定できます。
詳細は github のREADME などを参照ください。
multi-command 設定例
さて、この multi-command を使ってもともとやりたかった、kill-ring とOSのクリップボードが別々になっているという点の設定例です。
まずは settings.json でコマンドを定義します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
"multiCommand.commands": [ { "command": "multiCommand.copyAndC-w", "sequence": [ "editor.action.clipboardCopyAction", "emacs.C-w" ] }, { "command": "multiCommand.copyAndM-w", "sequence": [ "editor.action.clipboardCopyAction", "emacs.M-w" ] }, { "command": "multiCommand.copyAndKillLine", "interval": 30, "sequence": [ "emacs.enterMarkMode", "emacs.cursorEnd", "editor.action.clipboardCopyAction", "emacs.C-w" ] } ] |
ここでは、
- OSのクリップボードへのコピー後 C-w
- OSのクリップボードへのコピー後 M-w
- カーソルの右を行末までクリップボードへカット
という3コマンドを定義します。3番目のは C-k を模倣しているのですが、完全ではありません。もう少しうまくやるシーケンスがあるかも。また、カーソルの移動などが非同期実行なのか interval を入れないと正しく動かなかったので入れています。使い勝手が悪ければもう少し現象を追求します。
keybinds.json 設定例
先程定義したコマンドを新たに C-k、C-w、M-wに割り当てます。また、C-y をクリップボードからのペーストに変更します。
1 2 3 4 5 |
{ "key": "ctrl+k", "command": "multiCommand.copyAndKillLine", "when": "editorTextFocus"}, { "key": "ctrl+w", "command": "multiCommand.copyAndC-w", "when": "editorTextFocus"}, { "key": "Alt+w", "command": "multiCommand.copyAndM-w", "when": "editorTextFocus"}, { "key": "ctrl+y", "command": "editor.action.clipboardPasteAction", "when": "editorTextFocus"} |
これで、setMark などの emacs の動作を維持しつつ、C-w でクリップボードへのコピーなどを実現できました。
最後に
自分が不便に思ったことを拡張とかで解決できるのはプログラマ冥利につきます。
VSCode に少し愛着が湧いてきたので、また気になる点を解決していこうかと思います。
本体が高速で動作するので、将来性があって良いですね。
最後まで読んでいただきありがとうございます。 このブログを「いいな」と感じていただけましたら、Twiter にてフォローいただけるとうれしいです。ブログ更新情報などもお届けします。
Follow @ryuta461
この記事をシェアする
困っていたので助かりました! ありがとうございました。
emacs から vscodeに移行しようとしてて、どうしても使いにくいポイントがあったのですが改善できました。
とても嬉しかったです!
ありがとうございました!
役に立ったようで良かったです!