この文章の目的
- Visual Studio 2019 (以下、VS2019)で Easymotion 使えるようにしたので、その方法に関する覚書。
- 記事のタイトルは「Visual Studio 2019でEasymotion」ではあるが、同様の方法で、VSの所望の拡張機能が自分のVSのバージョンに対応していない場合に対応できるかもしれない。
キモチ
動機をダラダラ書いてるだけだから、本記事は、基本「やったこと」だけで事が足りる。しかし、なんにしても motivation は大事だと思うのですよ。
Chrome を vimキーバインドちっくにしてくれる Vimium のリンク文字のマッピング機能、ブラウジングするときのページ移動が超効率化されてかなり気に入っている。
で、あれ?このアイディアってそもそもvim系のアイディアってことは、 VSCode のvimエミュレータにもそれっぽいのあるんじゃね?と思い立って調べてみたら、 VSCode のvimエミュレータにはデフォルトで easymotion が入ってるらしくって、適当に設定をしてやれば、サクサクと使えるようになった。
ここまでくれば、本家の Visual Studio にも入れたくなってくるというのが人情ってもの。
調べてみたところ、それっぽい感じの拡張機能を見つけたので、ものは試しと、VS2017 にインストールしてみた所、確かにそれっぽい動きになっていて、縦方向の移動が格段に楽になる。
しかし、この拡張機能、オフィシャルにはVS2017までしか対応してなくて、自分の現行の開発環境は VS2019 。
しょうがないので、 Visual Studio の拡張機能の開発はやったことないけど、何とかなるんじゃないかマインドで、Easymotion のソースコード落としてきてビルドしなおしたら、なんかそれっぽく動いたので、その時のメモを残す。
(というわけで、記事のタイトルは「Visual Studio 2019でEasymotionが使えるようにした」ではあるが、同様の方法で、VSの所望の拡張機能が自分のVSのバージョンに対応していない場合に対応できるかもしれない(もちろん、処理の実装がちゃんとしていることが前提だが))
やったこと
以下の調子でやってみたら、なんかうまい事いったっぽい。ホンマかいな、という気もするが…。
- guthub のリポジトリから Easymotion のビルド環境一式を落としてくる。
- Visual Studio 2019 を管理者権限で起動して、落としてきたビルド環境を開く。
- 当初、ユーザ権限で起動・ビルドしたら、"GenerateFileManifestが見つからない"云々というエラーでビルドできなくなって少しハマった。
- このIssueによると、管理者権限で立ち上げてビルドしたらうまいこと行くぜ、的なことが書かれていたので、従ったらうまくビルドできた。これがなぜ管理者権限でうまいこと行くのかは、イマイチ腑に落ちないが…
- ちなみに、このIssue自体はまだopenなので、環境によってはこの方法でも解決しないかもしれない。
- ソリューションエクスプローラーで、
source.extension.vsixmanifest
を開く。 Install Targets
を開くと、まさしくインストールするターゲットの設定らしきものがあるので、既存の設定を選択して、Edit
ボタン押下で、Version Range
を[14.0, 16.0)
から[14.0,18.0)
に変更する。Prerequisites
を開くと、同じような設定があるので、同様に変更する。- これで、ビルドを実行して、成功すると、
$(SolutionDir)EasyMotion\bin\Release
にEasyMotion.vsix
ができるので、これをダブルクリックして、ターゲットの環境にVisual Studio 2019が入っていれば成功。
オチ
ちゅうわけで、無事 VS2019 に Easymotion が入ったのだけれども、vsvim との相性があまりよくないようで、インサートモードでジャンプすると、ジャンプしたときに入力したリンク文字が挿入されてしまい、ノーマルモードでジャンプしようとするとノーマルモードのコマンドとして認識されてジャンプされない、というオチがついた。
まとめ
ので、vsvim を優先する現状では使えない…。これについては、もう少し調べて、解決できたらまた記事にする予定。