Vimacs - VS Code で Vim と Emacs のいいとこどり


OPENLOGI Advent Calendar 2019 の記事です。
昨年、完全に自分用に作ったプラグインですがなかなか便利なので紹介します。

理想のエディターを求めて

  • ベースの環境としては VS Code を使いたい!
  • カーソル操作は Vim キーバインドを使いたい!
  • 文字入力時は Emacs キーバインドを使いたい!

というわがままな人のために VSCode Extension です。

Vimacs for VSCode


https://marketplace.visualstudio.com/items?itemName=migrs.vimacs

できること

  • インサートモードで基本的な Emacs キーバインディングが使える
  • カーソル移動以外ではリージョン操作系にも対応
  • VS Code のコマンド入力やファイル選択のUIでも Ctrl+N, Ctrl+P などのカーソル移動に対応

詳しくは

自分のブログの方で紹介してますのでそちらを参照してください
https://m.igrs.jp/blog/2019/12/14/vimacs-for-vscode/

暫定対処

上記記事内にも書いてますが、期待通りに動かないキーバインドがあります。
現在私の方では以下の Emacs の切り取り(Ctrl+W)が動かないので keybindings.json で再度定義しています。

{ 
"key": "ctrl+w",
"command": "emacs.action.clipboardCutAction",
"when": "editorTextFocus && editorHasSelection && !editorReadonly && vim.mode == 'Insert'"
}

VSCode 拡張の開発について

久しぶりに触ってみたら忘れていた部分もあったので備忘録的に残しておきます。

VSCode の拡張開発には vsce というライブラリを利用します。

ビルドと検証と公開

ローカルパッケージの作成

vsce package

ローカルパッケージのインストール

code --install-extension vimacs-1.1.1.vsix

マーケットプレイスへの公開

vsce publish

基本的にはこれだけです。

アカウントの作成

ここらへん、以前と手順というか仕組みが異なった気がします。
基本的には Azure DevOps というところで、Organization と Project というものを用意して管理する必要があるようです。

https://dev.azure.com/[OrganizationID]

セキュリティートークンの場所もわかりにくくURL的には以下になります。
https://dev.azure.com/[OrganizationID]/_usersSettings/tokens

詳しくは公式のドキュメントをどうぞ
Publishing Extensions