I have a bunch of macros which I have recorded and saved in Sublime Text 2. I'm trying to assign keyboard shortcuts to each of those, but I'm kind of lost as to how to go about doing this,

I had a look at

but that explains how to set Key bindings for existing commands.

What should I set to have it run a macro?


To instruct Sublime Text to run macros, you need to pass "run_macro_file" as parameter to "command", with argument being the filename of the macro.

First, merely recording a macro doesn't save it to a file, you'll have to save the macro to a file. This can be done by clicking on Tools → Save Macro & then give a filename. Macros are generally saved in %appdata%\Sublime Text 2\Packages\User folder.

Next, to assign the keyboard shortcut, open the Keybindings file from Preferences → Key Bindings - User.

Now, the general format for a keybinding is as below:

{ "keys": [<key sequence>], "command": "run_macro_file", "args": {"file": "Packages/User/<file name>.sublime-macro"} }

So, if you want to assign Ctrl+Shift+X to a macro which has been saved as "add comma to end", the keybinding line will look like so:

    { "keys": ["ctrl+shift+x"], "command": "run_macro_file", "args": {"file": "Packages/User/add comma to end.sublime-macro"} }
  • 2
    You restrict the scope in which the shortcut will be active with context.. here's an example from Emmet: github.com/sergeche/emmet-sublime/blob/master/… – ptim Feb 14 '15 at 0:30
  • @ptim Does this imply that you can restrict some macro to only be active for, e.g., Python scripts? – gustafbstrom Nov 17 '16 at 13:49
  • 1
    @gustafbstrom - kinda! yes, but the restriction is actually on the key binding, not the macro :) docs.sublimetext.info/en/latest/reference/… – ptim Nov 18 '16 at 0:56
  • 1
    still works with sublime v3. Path is relative so "Packages/User/my_commands.sublime-macro" is working. tested on mac. – marlo Jun 7 '18 at 1:01
  • 1
    Tested on Sublime Text 3 Portable on Windows. Works too. Path is relative. – Ifan Iqbal Oct 1 '19 at 0:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.