A macro is any programming or user interface in which an action can be associated with a sequence set of actions that are to be performed in its place. The term can be applied to two distinct categories of things:
user-interface macros allow the user to bind a short sequence of inputs to a longer action, like the @ command in vi.
syntactic macros occur in the source code of a program, and are used to transform or generate program code. This is the facility Lisp uses to generate new control structures (compare uplevel and upvar in Tcl).