Lines, Strings and Ranges
Character strings can be used of line numbers to qualify lines on most commands. In its simplest form, a command can have a single string using all the search window defaults.
/List "enhancement"
The search string can be further qualified using temporary window settings as in:
/List "enhancement" (Upshift 20/50)
This example searches for the word enhancement
regardless of the case used in columns 20 to 50.
Qedit allows up to 10 search strings on a single command. Individual strings are separated from each other with the OR keyword. Each string can have its own temporary window.
/List "enhancement" (U 20/50) or "bug" or "customer" (1/30)
The search range can be different depending on the command it is used on. For example, a List command searches all the lines in the file by default while a Find command starts from the current line. The search range can be specified on individual commands using a rangelist. A rangelist is often specified using line numbers (absolute or relative), special keywords (First, Last, All) or characters (@, *, [, ]). To define a block of lines, the user can enter 2 line numbers separated a slash “/” e.g. 1/6.
It is also possible to define a block of lines using a string range. This syntax allows the use of strings to define the start and end of the range. A string range can also be combined with a numeric line range to further define the block. Here are some examples:
/List "start-proc" / "end-proc" /Change "a" "b" "start-proc" / "end-proc" /Delete "start-proc" / "end-proc" 20/100
The List command above finds the first occurrence of start-proc
in the file and uses it as the range start location. It then finds the first occurrence of end-proc
starting from the start location. It uses that line as the range end location. Finally, it lists all the lines between the 2 locations. By default, List starts at the beginning of the file.
The Change command above replaces all occurrences of the letter a
with a b
in the lines between (and including) start-proc
and end-proc
. By default, Change starts at the current line.
The Delete command above removes all the lines between (and including) start-proc
and end-proc
found in lines 20 to 100. By default, Delete starts at the beginning of the file.
A string range does not behave like a rangelist e.g. 1/20 in all cases. For example, the first statement is not a valid construct with the second statement is.
/Delete "bug" "start-proc"/"end-proc" Error: Linenum /Delete "bug" 10/30
You can use the Find command and the ZZ marker to work around the problem. If you enter a simple strings on a Find command, Qedit stops at the first string occurrence and sets the current line. You can then perform any operation on that line or use it as a starting point. If you specify a line range, the Find command sets the ZZ marker to the block of lines. You then use the ZZ marker on subsequent commands.
/F "start-proc" first 5 Start-Procedure. (1)^ /F "start-proc"/"end-proc" first Lines 5/11 saved in ZZ /Delete "bug" zz 8 _bug-display-section. 1 line Deleted!