kick the base

Houdiniと、CG技術と、日々のこと。

Houdini: VEXをカスタマイズしたVS Codeで書く

皆さんVEX書いてますか?ぼくは四苦八苦しながら書いてます。 VEXの言語仕様はさておき、今回はVEXを外部エディタのVS Codeで書くための設定についてお話します。

Houdiniにはエディタが内蔵されてるって?お前は素人なんだからエディタのカスタマイズなんかしてないでデフォルトで勉強しろって?

分かるよ。分かるよカイジくん。

でもね、Houdini付属のエディタ、すごいストレス溜まるんですよ。あれで10行超えるコードは書きたくないです。正直。

まあカスタマイズも大した分量してないんで、見てってくださいよ!

執筆時の環境

  • Windows10 Pro
  • Houdini16.0.504.20

外部エディタを呼び出しやすくするためのプラグインを入れる

Houdini Edit in External Editorってのを入れます。インストールの方法は下記サイトまんまなんですが、一応補足しておくと、ダウンロードした下記2つのファイルをC:\Users\ユーザー名\Documents\houdini16.0(お使いのHoudiniバージョン)に入れるだけです。

  • PARMmenu.xml
  • MainMenuCommon.xml

あとはEdit in External Editorにショートカットを割り当てるだけです。ぼくはalt+Eに割り当てました。

不思議なのがテキストエリアでalt+Eを2回押さなきゃいけないんですよね。直接呼べないのかなー

GitHub - ArthurYidi/Houdini-External-Editor: Quickly edit parameters and snippets with your favorite editor.

外部エディタの指定

C:\Users\ユーザー名\Documents\houdini16.0(お使いのHoudiniバージョン)内にあるhoudini.envに下記記述を追加します。

EDITOR = C:\Program Files\Microsoft VS Code\Code.exe

VS Codeの設定

MacではEmacsキーバインドで使っているVS Codeですが、WindowsではVimに寄せました。理由はいくつかあるんですが、最も大きかったのがWindowsにはキーボードカスタマイザアプリであるKarabiner(カラビナ)がない点です。

新しいMacを買ったら初日に入れるソフトなのでこれがない生活は考えられないんですが、Windowsではこれぞっていうキーボードカスタマイザが見つからないので、できるだけエディタの簡単なカスタマイズで済ませたかったという感じです。(後述しますがカラビナ不在のため重要な機能がひとつ実現できていません)

どれだけVS Codeの設定をいじっても本家Vimにはかなわないので、ゆるふわな感じで行きます。

ちなみにMacでのVS Codeの設定も置いておきます。ご興味がある方はどうぞ。

VS CodeのゆるふわEmacs風カスタマイズ - Qiita

プラグインを入れる

他にも入れてますが、本記事に関係あるのは下記2つだけです。

キーボード設定

Vimmerならパッと見で内容がわかると思います。重要なのは下記くらいですかね。

  • ;:を入れ替え。イエス、アイハブUSキーボード。
  • ヒットしたすべての検索ハイライトを表示
  • C-cで検索ハイライトの非表示

悔しくてしょうがないのが、C-mでキャリッジリターンを発行できてない点です。一応それっぽいコードを書いてはいますが、実際動いていないですね。Enterキー遠いんじゃー。

実現する方法あるよ!って方はぜひ教えてください。

もっとVimっぽくカスタマイズしたーい!って方はこことかを参考にすると幸せになれるかもです。

追記

面白い機能を発見したのでkeybindings.json変更しました。そのご紹介はこちらにまとめておきました。

独自スニペットの登録

そもそもVEXにそんなに慣れてないのでもっといいスニペットや必須のものも出てくると思います。使いながら増やしていく感じですね。

最終的にこんな感じに

タブストップもちゃんと効きますし、Vimキーバインドのおかげで文末に飛んで;するのが楽ちんですね。補完の絞り込みも賢いのが魅力です。

f:id:kickbase:20171010201255g:plain

独自スニペットも自由自在。ローカル変数の補完も効くのが助かります。

f:id:kickbase:20171010201304g:plain

今後の展望

今のところ一番大きなストレスは上述したC-mでキャリッジリターンが発行できてないところなんですが、もう1つ気になるところがあります。

keybindings.jsonに下記コードが書いてあるんですが、これは見ての通り入力してる最中にフォーマット保存時にフォーマットをオンにしているコードです。

"editor.formatOnType": true,
"editor.formatOnSave": true,

これがVEXだと効かないんですよね。多分VS Codeが拡張子vflの構文を知らないからフォーマットできないってことなんだと思うんですけど、vflの拡張子の場合はフォーマットはC言語に準ずるみたいな設定ができたらいいなって思うんですけどできないんですかね。ご存じの方は教えてください!

他のエディタは?

Houdini VEX EditorというのとAtomのVEXパッケージがありますが、どちらともあんまりフィールしなかったので却下としました。比較記事特になくてごめんなさい。

参考サイト