### 4.1 General Guidelines

Every command in `ne` has a long and a short name. Except in a very few cases, the short name is given by two or three letters that are the initials of the words that form the long name. For instance, `SearchBack` has short name `SB`, `SaveDefPrefs` has the short name `SDP`, and `AdjustView`'s short name is `AV`. There are some exceptions however. The most frequently used commands such as `Exit` have one-letter short names (`X`). Also some commands use a different short name to avoid clashes with a more common command's short name. For example, `StatusBar`'s short name is `ST` rather than `SB` to avoid clashes with `SearchBack`'s short name.

A command always has at most one argument. This is a chosen limitation that allows `ne`'s parsing of commands and macros to be very fast. Moreover, it nullifies nearly all problems related to delimiters, escape characters, and the like. The unique argument can be a number, a string, or a flag modifier. You can easily distinguish these three cases even without this manual by looking at what the `Help` command says about the given command. Note that when a command's argument is enclosed in square brackets, it is optional.

Strings are general purpose arguments. Numbers are used to modify internal parameters, such as the size of a tab. A flag modifier is an optional number that is interpreted as follows:

- 0 means clearing the flag;
- 1 (or any positive number) means setting the flag;
- no number means toggling the flag.

Thus, `StatusBar 1` will activate that status bar, while `I` will toggle insert/overstrike. This design choice is due to the fact that most of the time during interactive editing you need to change a flag. For instance, you may be in insert mode and you want to overstrike, or vice versa. Absolute settings (those with a number) are useful essentially for macros. It is reasonable to use the fastest approach for the most frequent interactive event. When a number or a string is required and the argument is optional, most of the time you will be prompted to type the argument on the command line.

As for the input line, for numeric arguments you can choose between decimal, octal and hexadecimal notation in the standard way: a number starting with ‘`0`’ is considered in octal, a number starting with ‘`0x`’ is considered in hexadecimal, and in all other cases decimal base is assumed.

When a number represents how many times `ne` should repeat an action, it is always understood that the command will terminate when the conditions for applying it are no longer true. For instance, the `Paragraph` command accepts the number of paragraphs to format. But if not enough paragraphs exists in the text, only the available ones will be formatted.

This easily allows performing operations on an entire document by specifying preposterously huge numbers as arguments. `ToUpper 200000000` will make all the words in the document upper case. (At least, one would hope so!) Note that this is much faster than recording a macro with the command `ToUpper` in it and playing it many times because in the former case the command has to be parsed just one time.

In any case, if a macro or a repeated operation takes too long, you can stop it using the interrupt key (`<Control>-\`).

To handle situations such as an argument string starting with a space, `ne` implements a simple mechanism whereby you can enclose any string argument in double quotes. If the first non-blank character after the command and last character of the command line are double quotes, the quotes will be removed and whatever is left will be used as the string argument. For example, the `Find` command to find a space could be entered on the command line or in a macro as `Find " "`. The only case needing special treatment is when a string starts and ends with double quotes. The command `Find ""quote""` would locate the next occurrence of the string ‘`"quote"`’ (including the double quotes). However, `Find onequote"` wouldn't require special treatment because the command argument doesn't both start and end with a double quote.