48

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?

0

1 Answer 1

70

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"} }
]
5
  • 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, 2015 at 0:30
  • @ptim Does this imply that you can restrict some macro to only be active for, e.g., Python scripts? Nov 17, 2016 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, 2016 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, 2018 at 1:01
  • 1
    Tested on Sublime Text 3 Portable on Windows. Works too. Path is relative.
    – Ifan Iqbal
    Oct 1, 2019 at 0:43

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .