![見出し画像](https://assets.st-note.com/production/uploads/images/67736990/rectangle_large_type_2_eac4ee8d2456a7bb18725159b2b8c606.png?width=1200)
視覚ベースの補完 Hippie completion
こんにちは、みみぞうです。
ナビタイムジャパンで『システムや開発環境、チームの改善』を担当しています。
今回はJetBrains IDEの機能である Hippie completionについて紹介します。
※ VSCodeでもプラグインを使えば似たようなことができますので最後にあわせて紹介します
Hippie completionとは
Hippie completionは視覚をベースに現在のファイルから入力を補完する機能です。
原文の説明は以下のようになっています。
Hippie completion is a completion engine that analyses your text in the visible scope and generates suggestions from the current context. It helps you complete any word from any of the currently opened files.
カーソル位置の直前/直後で前方一致する単語へ瞬時に変換できます。
なぜHippie completionか
Code completion(オートコンプリート)といえば、ほとんどの方が使っているのはBasic completionだと思います。
![](https://assets.st-note.com/production/uploads/images/67727919/picture_pc_d66a8996a8b4c3f4668e6c26df1946a6.gif)
JetBrains IDEに精通している方はPostfix code completionも使われているでしょう。ブログなどで紹介されることの多い機能です。
一方、Hippie completionを使われている方はあまり見かけない気がします。私がHippie completionを愛用しているのもあり、この機会に紹介させていただくことにしました。
Basic completionに不向きなケース
Basic completionは非常に優れた機能です。視界に入っていない曖昧なものを補完するには非常に便利だと思います。しかし、視界に入っていて明確なものを補完する場合はどうでしょうか。少し煩わしく感じる場合があります。
たとえば、以下のような println!() でnumberを出力したいケースです。目では直前にnumberを認識していますが、Basic completionの一番上に表示されるとは限りません。
![](https://assets.st-note.com/img/1639466656143-e3xTfABn2W.png?width=1200)
そのため、『候補の一覧を確認するコスト』『対象の候補を選択して決定するコスト』が発生します。
他にも、クォーテーションで囲まれたリテラルを補完することができない制限があります。
![](https://assets.st-note.com/img/1639466686370-CBCvbgmLa9.png?width=1200)
Hippie completionのメリット
Hippie completionを使うメリットは2つあります。これらが先ほどの課題を解決します。
変換結果を予測しやすい
目に見えさえすれば補完できる
変換結果を予測しやすい
Hippie completionは入力されたクエリと前方一致する単語を、現在のカーソルから近い順に補完します。そのため、変換結果が予測しやすくなります。また、『候補から選択して決定するコスト』も削減できます。
![](https://assets.st-note.com/production/uploads/images/67736280/picture_pc_8f868313714a4166b93a0237671fd82e.gif)
複数回実行すると、カーソルから遠いモノへと変換されます。できれば一発で確定できるような入力をしておく方がスムーズでしょう。
![](https://assets.st-note.com/production/uploads/images/67736470/picture_pc_6b20da83170685f2b5ab3f8239297437.gif)
目に見えさえすれば補完できる
Hippie completionは視界に入るものをすべて補完対象とします。そのため、Basic completionでは補完できなかったダブルクォーテーションに囲まれたリテラルも補完できます。
![](https://assets.st-note.com/production/uploads/images/67736332/picture_pc_a4bde1f027fd8f3d388f34cf8ffb0d05.gif)
もちろん、コメントに含まれるワードでも補完できます。
VSCodeの場合
Simple Autocompleteというプラグインを入れると似たようなことができます。
まとめ
視覚をベースに現在のファイルから入力を補完する機能、Hippie completionを紹介しました。
文字入力の理想系は『脳で考えたことをそのまま入力してくれること』でしょう。次点で『目に入ったものを入力してくれる』ことだと思います。Hippie completionにそこまでのポテンシャルはありませんが、Basic completionに比べれば、それに近づいているのではないでしょうか。
人によってあう/あわないがあるとは思いますが、試したことがなければ是非一度お試しください。最後までお読みいただきありがとうございました!