Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Visual Studio 2019でEasymotion

$
0
0

この文章の目的

  • 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のバージョンに対応していない場合に対応できるかもしれない(もちろん、処理の実装がちゃんとしていることが前提だが))

やったこと

以下の調子でやってみたら、なんかうまい事いったっぽい。ホンマかいな、という気もするが…。

  1. guthub のリポジトリから Easymotion のビルド環境一式を落としてくる。
  2. Visual Studio 2019 を管理者権限で起動して、落としてきたビルド環境を開く。
    • 当初、ユーザ権限で起動・ビルドしたら、"GenerateFileManifestが見つからない"云々というエラーでビルドできなくなって少しハマった。
    • このIssueによると、管理者権限で立ち上げてビルドしたらうまいこと行くぜ、的なことが書かれていたので、従ったらうまくビルドできた。これがなぜ管理者権限でうまいこと行くのかは、イマイチ腑に落ちないが…
    • ちなみに、このIssue自体はまだopenなので、環境によってはこの方法でも解決しないかもしれない。
  3. ソリューションエクスプローラーで、source.extension.vsixmanifestを開く。
  4. Install Targetsを開くと、まさしくインストールするターゲットの設定らしきものがあるので、既存の設定を選択して、Editボタン押下で、Version Range[14.0, 16.0)から[14.0,18.0)に変更する。
  5. Prerequisitesを開くと、同じような設定があるので、同様に変更する。
  6. これで、ビルドを実行して、成功すると、$(SolutionDir)EasyMotion\bin\ReleaseEasyMotion.vsixができるので、これをダブルクリックして、ターゲットの環境にVisual Studio 2019が入っていれば成功。

オチ

ちゅうわけで、無事 VS2019 に Easymotion が入ったのだけれども、vsvim との相性があまりよくないようで、インサートモードでジャンプすると、ジャンプしたときに入力したリンク文字が挿入されてしまい、ノーマルモードでジャンプしようとするとノーマルモードのコマンドとして認識されてジャンプされない、というオチがついた。

まとめ

ので、vsvim を優先する現状では使えない…。これについては、もう少し調べて、解決できたらまた記事にする予定。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>