Do not ship any aliases by default, i.e. no builtin ones. For example st for status, desc for describe, ...
Here are some arguments for not shipping aliases by default:
-
Everyone who wants an alias can put it in their config. Adjusting the TUI to your needs and preferences is exactly the point of having a config.
-
Aliases or abbreviations are often personal taste and workflow dependent, e.g. st is for someone status, for another diff --stat, for yet another split -r "trunk()". For some is ci commit, for others is it continuous integration. Often aliases provide different "defaults value/flags", e.g. p for push but pa for push --all, pf for push --bookmark feature
-
People who don't want an alias in their setup have a hard time as removing an alias is difficult (maybe even impossible? I couldn't find anything on this).
In contrast adding an alias is easy for those who want it.
-
Aliases interfere with tab completion, for example desc -> describe. (How exactly completion works is obviously shell, framework and config dependent but the gist is the same.)
Notation: | is the cursor position
Without aliases:
$ jj de<tab>
$ jj describe | # space after name
However, with the alias desc -> describe
$ jj de<tab>
$ jj desc| # no space
Often this is accompanied by a menu to allow choosing between desc and describe which, well, is not a really a choice since they do the same and thus is more an annoyance than helpful.
Moreover, to get to the position where the revision can be typed, an additional <space> must be pressed. Therefore, the "shortcut" desc is actually a "longcut" 4-5 keystrokes with aliases compared to 3 without alias.
-
Tab completion is usually better suited for shortening commands, subcommands, and arguments. It not only works for some prefix but all unique prefixes, e.g. de, des, desc, descr, ... all complete to describe. Some mechanisms even provide fuzzy completion or more.
Related:
#3581
Do not ship any aliases by default, i.e. no builtin ones. For example
stforstatus,descfordescribe, ...Here are some arguments for not shipping aliases by default:
Everyone who wants an alias can put it in their config. Adjusting the TUI to your needs and preferences is exactly the point of having a config.
Aliases or abbreviations are often personal taste and workflow dependent, e.g.
stis for someonestatus, for anotherdiff --stat, for yet anothersplit -r "trunk()". For some iscicommit, for others is it continuous integration. Often aliases provide different "defaults value/flags", e.g.pforpushbutpaforpush --all,pfforpush --bookmark featurePeople who don't want an alias in their setup have a hard time as removing an alias is difficult (maybe even impossible? I couldn't find anything on this).
In contrast adding an alias is easy for those who want it.
Aliases interfere with tab completion, for example
desc->describe. (How exactly completion works is obviously shell, framework and config dependent but the gist is the same.)Notation:
|is the cursor positionWithout aliases:
However, with the alias
desc->describeOften this is accompanied by a menu to allow choosing between
descanddescribewhich, well, is not a really a choice since they do the same and thus is more an annoyance than helpful.Moreover, to get to the position where the revision can be typed, an additional
<space>must be pressed. Therefore, the "shortcut"descis actually a "longcut" 4-5 keystrokes with aliases compared to 3 without alias.Tab completion is usually better suited for shortening commands, subcommands, and arguments. It not only works for some prefix but all unique prefixes, e.g.
de,des,desc,descr, ... all complete todescribe. Some mechanisms even provide fuzzy completion or more.Related:
#3581