Skip to content

Scopes

Some zsh-abbr commands take a scope parameter. There are two supported scopes: session and user. Session abbreviations are available in the terminal session they are created in. User abbreviations are available in all terminal sessions.

User is the default scope.

User

User abbreviations are immediately available to all current and future sessions (that is, in all open and future terminals).

To scope a zsh-abbr command to the user, pass the --user flag or its shorthand -U… or do not pass a scope flag — user is the default scope.

In the following example, user abbreviations created in terminal 1 are available in terminal 2.

shell
# terminal 1

% abbr hw="echo hello world"
Added the regular user abbreviation `hw`

% hw[Enter] # expands to `echo hello world` and runs the command
hello world

% abbr --user l="echo longhand"
Added the regular user abbreviation `l`

% l[Enter] # expands to `echo longhand` and runs the command
longhand

% abbr -U s="echo shorthand"
Added the regular user abbreviation `l`

% s[Enter] # expands to `echo shorthand` and runs the command
shorthand
shell
# terminal 2

% hw[Enter] # expands to `echo hello world` and runs the command
hello world

% l[Enter] # expands to `echo longhand` and runs the command
longhand

% s[Enter] # expands to `echo shorthand` and runs the command
shorthand

Session

Session abbreviations are available only in the session they are created in.

To scope a zsh-abbr command to the session, pass the --session flag or its shorthand -S.

In the following example, session abbreviations created in terminal 1 are not available in terminal 2.

shell
# terminal 1

% abbr --session hw="echo hello world"
Added the regular session abbreviation `hw`

% hw[Enter] # expands to `echo hello world` and runs the command
hello world

% abbr -S s="echo shorthand"
Added the regular session abbreviation `s`

% s[Enter] # expands to `echo shorthand` and runs the command
shorthand
shell
# terminal 2

% hw[Enter] # no expansion. abbreviation is scoped to terminal 1
zsh: command not found: hw

% s[Enter] # no expansion. abbreviation is scoped to terminal 1
zsh: command not found: s

For many users, session scope can reasonably be thought of as "scoped to the current terminal". In fact, it is more restrictive. In the following example, a session abbreviation is not available to a subshell:

shell
% abbr --session hw="echo hello world"
Added the regular session abbreviation `hw`

% hw[Enter] # expands to `echo hello world` and runs the command
hello world

% zsh

% hw[Enter] # no expansion. abbreviation is scoped to terminal 1
zsh: command not found: hw

% exit

% hw[Enter] # expands to `echo hello world` and runs the command
hello world

Except where otherwise noted, © 2024 by Henry Bley-Vroman and licensed under zsh-abbr's license.