VEXの外部エディタにvimを利用する方法について


この記事では、HoudiniのVEXの外部エディタにvimを利用する方法についてご紹介します。
※既にvimに関する知識のある方を対象としております為、本記事ではvimに関する説明は割愛させて頂きます。

まず、VEXの外部エディタについてですが、ノードのVEXpressionパラメータ上で[Alt]+[E]キーを押すことで、
VEXのコードを独立したVEX Editor上で表示、編集ができるようになる機能があります。

実はこのVEX Editor上で更に[Alt]+[E]キーを押すか、External Editorボタンを押すことで、
他のエディタソフトを起動して、その上でVEXを編集することができるようになっております。

しかし、こちらWindowsの場合、以下のように、標準ではメモ帳が起動してしまいます。

これを今回は、vimに変更する方法についてご紹介します。

Houdiniにてvimを利用するメリットとしては、以下のようなものが挙げられます。

  • プログラマ/コーダーが全世界で標準的に利用しており、ドキュメントやコミュニティが等の情報源が豊富
  • キーマッピングが自由に行え、カーソル移動も容易
  • プラグインが豊富で設定/カスタマイズが自在
  • Windows/Linux/Macで利用可能
  • 余分な機能がないので高速
  • UIが簡素な為、画面占有率が低い
  • SideFX社が公式にシンタックスファイルを提供している

上3点はHoudiniに限らない内容ではありますが、
マルチOSで利用可能な点、動作が軽快で画面スペースの占有も少ないことは、Houdiniとの併用において優位といえます。
特に一番下の点は大きく、通常のエディタは当然、VEX独自の関数や予約語などのシンタックスはハイライトされないのですが、
vimの場合、SideFX社が公式にシンタックスファイルを提供している為、最新のシンタックスをエディタに反映させることが可能です。

Houdiniでvimを利用する手順は以下のようになります。

まずは、Houdiniの外部エディタにvimを登録します。これはhoudini.envファイルに以下の行を書き込みます。

EDITOR=【vimインストールディレクトリ】\gvim.exe

EDITOR環境変数に外部エディタとして利用したいエディタのパスを記述することで、
Houdiniから外部エディタとしてvimを利用することができるようになります。

ただし、これだけではHoudiniのシンタックスは適用されません。
適用させるには.vimrcの方にシンタックスファイルを読み込ませる必要があります。
VEXのvimシンタックスファイルは、Hoduini17.5.360の場合、Windowsのデフォルトでは以下のパスに保存されています。

C:\Program Files\Side Effects Software\Houdini 17.5.360\houdini\public\syntax\vfl.vim

こちらのファイルを以下のディレクトリにコピーします。

 [vimのインストールディレクトリ]/syntax/

 

次に、vimのインストールディレクトリ下にある、filetype.vimファイルを開き、末尾に以下の内容を加えます。

if exists("did_load_filetypes")
   finish
endif
augroup filetypedetect
   au! BufRead,BufNewFile *.vfl     setfiletype vfl
   au! BufRead,BufNewFile *.sl      setfiletype vfl
augroup END

最後に、.vimrcの設定を行うのですが、通常のvimの場合、.vimrcファイルはシステムのホームディレクトリのものが参照されますが、
注意点として、Houdiniからvimを立ち上げると、
参照先がHoudiniのHOME環境変数で指定されたパス(Windowsの標準ではDocuments直下)になります。
ですので、普段利用されている.vimrcファイルをHoudiniのホームディレクトリにコピーし、その.vimrcファイルに下記を追記します。

au BufRead,BufNewFile *.vfl set filetype=vfl

これでvimを用いてシンタックスハイライトを反映した状態でVEXを記述することが可能になります。

また、外部エディタを利用した後は、エディタを閉じないとHoudini側に戻ることができないので、
編集後は :wq コマンドで上書き保存してからvimを閉じることで、Houdini側にvimで編集したVEXを反映させることができます。