Houdini Expression Editor

Houdini Expression Editor allows you to set up an external text editor for all type of expressions. Such as Vex snippet, python code, HScript. It uses a system of file watchers to keep track of code updates in real time. It doesn't freeze Houdini and you don't have to close your editor to see the updated code applied on your parameter. Also compatible with custom Python SOP nodes source code.

Compatibility Houdini 15, 15.5, 16.0, 16.5, 17.0, 17.5, 18.0, 18.0, 18.5, python3 build


Older versions:



Go to you $HOME/Houdini16.0 folder ( for instance, on windows: C:\Users\%USERNAME%\Documents\houdini16.0, on MAC OSX it would be: ~/Library/Preferences/houdini/16.0 ) and extract HoudiniNodeBookmarks.zip in here ( with "extract here" command ). The zip file contains:

scripts\python\HoudiniExprEditor folder, the main python module.

MainMenuCommon.xml The file used to customize the "Edit => preferences" menu.

PARMmenu.xml The file used to customize the right click on parm menu.

Warning: If you have already a custom MainMenuCommon.xml or PARMmenu.xml, do not replace them, but merge the contents.


To edit your expression or code in an external editor, simply click on a parameter then go to Expression => External Expression Editor:

If you haven't any editor set, it will ask you to choose one:

You can set an editor by setting the environment variable EDITOR on your system to a valid executable path. Or with "Edit => Preferences => Set External Expressions Editor" menu. The editor set path is saved to your $HOME/houdiniXX.X/ExternalEditor.cfg file.

You editor will show up, in that example I picked Visual Studio Code with the VEX syntax plugin and Python plugin installed. If you save you file, the code is updated automatically, no need to close your editor and it doesn't freeze Houdini:

You can see that it creates a file which follows that name format: %node_id%_%node_name%_%parm_name%.%expr_type_file%

It create a .vfl file for vex code, .py file for python and .txt for other fields (hscript).
You can set where the files are saved by setting the environment variable "EXTERNAL_EDITOR_TEMP_PATH" to a valid folder path. The default temp path of the system will be used otherwise.
You can remove a the link between a parameter and its file by using the menu: Expression => Remove File Watcher. Note that it will not remove the file.

If an asset contains extra sections ( python ), like OnCreated, PythonModule, custom section etc... you can edit those sections in your editor just like expressions. Same thing for python sop source code:


You need more support, have feedback or issues ? send email to: support@cgtoolbox.com



  • Use now $HOUDINI_USER_PREF_DIR to save out config file.
  • Add support of .cl file (opencl).


  • Bugfix: Encoding error (py3)


  • Bugfix: Fix a bug where $STR_EXPR was automatically expanded when opened in external editors.


  • New feature: add support of shelf tools edition.
  • Bugfix: Watcher files were not cleaned properly after removing a watcher.


  • Add support of python 3 ( Tested on Houdini 18.0 tech preview ).
  • Minor bug fixes on wather when called on deleted nodes.


  • Bugfix: Fix crash during bindings cleaning process.


  • Add new menu entry: Windows => External python source editor, to edit session's python source code in external editor.


  • Bugfix: Fix crash which could occur when a python module of an asset is updated while referenced by parameters in the UI of the asset.


  • Support for asset extra sections edition ( PythonModule, OnCreated, custom section etc. ), only python is supported. 


  • Bugfix: Files are not unnecessary removed anymore.
  • Feature: Support of Python SOP node source code


  • First release