Input Growth
by Maxwell Joslyn. .
The length, measured in keystrokes, of a command needed to trigger some action at the computer, should grow as little as possible proportional to growth in other input factors, including specificity of , fully-qualified name of command,
For instance, CLI interfaces should be defined so that it barely takes any additional keystrokes to operate on a file in the current directory, or a file located far away in the filesystem. Tab completion attempts to deliver on this, and mostly succeeds. Zsh-style smart completion improves on typical bash tab completion.
Case-insensitive search is an example of this principle: no additional Shift keypresses are needed to search for partially or fully capitalized strings.
It should only take a few keystrokes to trigger any function regardless of how long its name is, or how long its invocation is. Bash aliases offer this feature; for instance, "ydx $URL" can expand to "youtube-dl $URL -x".
It should only take a few keystrokes to insert a large/arbitrary amount of prespecified text. Text-expansion programs, which exist in most computing environments, monitor your keystrokes and convert specified strings into larger outputs. All such systems which are worth a damn will allow you to define "holes" in the expanded templates, which can then be (manually) filled with situation-specific information. In other words, these are functions which take no input, are given short names, are automatically called by the text-expansion system, and whch return a string as output.
Bookmark systems allow accessing favorite websites with hotkeys or with incomplete input of a full domain name, filesystem, or other specific location.