The full screen editor (qed) is a program which allows you to type in text, edit it and save it away in a file. The editor itself treats your text as a series of lines consisting of from 0 to 512 characters. It was designed as a program development editor first and a word processor second.
When operating on text from a file, the editor reads a copy of your file into memory (we will call this a buffer). Any changes you make to your file copy (the buffer) will not affect the original file until you issue a write command to save your buffer. Should you change your mind about saving the particular changes you have made, you may exit without saving, or you may reread a copy of the original file.
The maximum number of lines you can edit will depend on how long each line is and the amount of available memory space. The maximum number of lines in a file that may be edited is on the order of 100 000. Larger files must be split and if necessary rejoined after editing.
Assume you want to enter some text and save it away in a file, use:
qed
The editor will load from disk, clear your screen, then present a screen that consists of a status line at the top:
last=0 (0 ,1) a+ b- c- d- f- i- j- l- m+ n+ s- t+ w+
a line below it for command entry, and a large text area below that.
The top line of the screen is the status line and provides information about the size of your file, where in the file you are currently located, and what editing options you have selected. This line is kept up to date by the editor. You may not enter text into this area.
The second line of the screen is the command line. It is the area where you may type editor commands which are to be executed. On a monochrome display, a solid line appears after this line. On a color display, the command line will appear in a different color than the rest of the screen.
The rest of the screen is for text. If your text is longer than or wider than the screen, then this space represents a window into your text. As you progress, you will quickly learn how to position your window to view and/or modify any part of your file.
If you wish to exit from the editor, you can quit by typing a q followed by a carriage return on the command line. If you try this later (after some text has been entered), you may be greeted with a message indicating that you have changed some text but have not saved it away. You can force an exit without saving your text by typing a carriage return to clear the error and a qq followed by a carriage return. We mention quitting here to rescue those people who jump in and then get called away before they can read the rest of the manual.
Now that we have our bearings, let's look a little closer at these three areas.
This line is composed of three parts. On the left, Last=0 indicates that the last line of your text is line 0. You therefore have an empty buffer (zero lines). Next to this, the numbers in brackets (0,1) indicate the current position of the cursor in the file. It is of the form (row,column). The row indicates your current line and for all but an empty buffer it will range in value between 1 and Last. On attached terminals you may find that the column number does not change.
Next on the line are your current editing options. A + (plus) after an option indicates that the option is on while a - (minus) indicates that it is off. Some options which are meant to catch your attention when on will display a flashing +. These options may be turned on and off at the command line. Some of the options are also tied in with function keys. They are toggled on/off by the indicated key.
Briefly the options have the following meaning:
As previously stated, this line is used for entering text to be interpreted by the editor as commands. If you have just entered the editor you should have a cursor on the left margin of your command line. There will also be an inactive cursor (rectangular block) in the text area. Whenever you type a character (excluding cursor and most function keys) it will appear where the active cursor is, and the cursor will move to the right.
Now try to enter a few commands to change your options. Most options are enabled by typing
o{option_character}+
and disabled by typing
o{option_character}-
or, they can be toggled by typing
o{option_character}~
First let's turn on option blank by typing the string ob+ followed by a carriage return. You can turn it off by typing ob- followed by a carriage return. Finally, you can toggle it by typing ob~ followed by a carriage return. A toggle causes the option to change state. If it was previously off it will be turned on and if it was previously on it will be turned off.
Should you make a typing error you may delete characters by pressing the Backspace key or may delete the entire line by pressing the Ctrl and X key simultaneously. Both of these keys work on the line containing the active cursor and are similar to the line editing keys of the command interpreter for the QNX2 operating system which this editor originated in. (The line editing in the QNX 4 shell is considerably different.)
If you type in an unknown command or do something which causes an error, an error message will be displayed on the command line and held until you type a carriage return to clear it. Try typing in "abc" followed by a carriage return to generate an error, then clear it by typing another carriage return.
You may execute any system command from the editor command line
by preceding it with an exclamation mark (!).
!ls or to invoke another qed editor to edit another file: !qed another_file The second example will invoke another copy of the editor. When you leave you will return to this editing session. |
It is this area where your text is displayed and may be directly edited. As you have seen by setting ob+, the text area is currently empty. We are now going to enter some text and follow through some examples to illustrate the function of the various cursor and function keys. Option blank should be on for these exercises (b+).
To enter the text area with the intention of appending new text, you should press the F1 key. The cursor in the text area will become active (flashing) and the command line will be cross-hatched. You will also see option newline enabled (n+) and your last and current line on the line will now be (1,1) not (0,1). The Backspace key and Ctrl-X keys behave in the same manner as they did on the control line.
Type in the following text, typing carriage return at the end of each line. We apologize to J. R. Tolkien for the misquote.
Three Rings for the Eleven-kings under the sky, Nine for Mortal Men doomed to die, One for the Dark Lord on his light throne In the Land of Mordor where the shadows lie. In the Land of Mordor where the shadows lie.
After you finish typing you will want to turn off the option newline (n-). This can be done by simply pressing the F1 key again. F1 is a toggle key. Note that option newline is disabled (n-) and the cursor is positioned at the current line or the last line typed. Please refer to the section entitled "Saving Your Text" if you wish to leave the editor and/or save your text.
The F1 key appends after the current line and the F2 key inserts before the current line. Now that you have some text, let's experiment with the cursor keys. Using the four arrow keys at the right (<--, -->, /\, \/), you can move the cursor anywhere on your text (note: If the arrow keys generate numbers, type the Scroll Lock key). Your screen will scroll if necessary. You can move off the right of the screen until your status display indicates that you are on column 512. Note that you can't move above the first line, below the last line or to left of the first character.
Using the arrow keys, position yourself on line 2 directly under the "N" of "Nine". Press the F2 key and note that option newline is now on (n+). A new line has opened up between line 1 and line 2 and the cursor points at the beginning of this new line. Press F2 again and notice how the line will disappear if you decide that this is not the place where you want to insert a new line. Press F2 again and type in the following:
Seven for the Dwarf-lords in their halls of stone,
Now press F2 again to turn off option newline (n-) and use the cursors to position yourself on line 5 under the "I" of "In". Type F1 (n+) to append lines after line 5 and type in the following 2 lines:
One Ring to rule them all, One Ring to find them, One Disk to bring them all and in the darkness bind them
Now type F1 to turn off option newline (n-). The F1 and F2 keys behave identically when leaving newline mode.
Position yourself about 10 spaces to the right of the word "throne" and type a letter. The editor will immediately lengthen your line with blanks so it can place your character where requested. You can delete these blanks to restore the text by pressing the backspace key or positioning yourself just past the "e" of "throne" and holding down the Del key. The Del key deletes the character at the cursor causing the line to Shift over.
In general, you will find the Backspace key useful for correcting new text being entered, while the Del key is useful for editing existing text. As an added advantage, the Del key saves each character it deletes. Position yourself at the start of a line and hold down the Del key. To restore the last deleted characters press the Ctrl and the Ins keys simultaneously. By holding this key down you can restore the last 256 characters deleted in this editor session. The characters need not be restored where they were deleted. They will be restored at the active cursor wherever it is, even at the command line. This can be a useful method of moving strings of characters.
Change the word "Eleven" to "Elven" in line 1 by moving the cursor to the second "e" and pressing the Del key. Now move to line 7 and position the cursor under the "D" in the word "Disk" and change this word to "Ring" by simply typing over it. Note that by default, you are always in replace mode.
Now that we can enter new text, replace existing characters, delete characters and re-insert deleted characters, it would be nice to complete our capabilities by inserting new characters.
Move to the word "light" in line 4 and position the cursor under the "l". Change this word to "dark" by pressing the Del key 5 times, pressing Ins (i+), typing the word "dark" and then pressing the Ins key again to disable insert mode (i-).
There are several more cursor keys which will simplify movement through your text as follows:
At any time you may leave the text area and go to the command area by typing the large + key on the right hand side of the keyboard. Note that the right and left cursor keys, the Del key, and the Ins key will operate on the command line. Other cursor keys refer only to the text area. Write your file away by typing:
w filename
where filename is any valid pathname, followed by a carriage return.
After your file has been saved, the editor positions you back in the text area where you left off. You can now continue with the rest of the exercises or may leave the editor by typing the large + key again followed by a q. If you modify the file, the q command will not let you quit without saving your changes. If you do not wish to save your changes type qq to force the editor to exit.
To test the other cursor keys, a file exceeding the text area must be used.
To create a large file named bigfile on which you can
do some experimentation with the editor, try the following:
find /bin /usr/bin | xargs -n10 echo >bigfile |
Position the active cursor at the command line using the large + key and enter the command:
e bigfile
The e command deletes your current buffer and reads the file into the editor creating a new buffer. Note that the editor checks to make sure any current file you are working on has been saved before proceeding. If you get a warning, type carriage return to clear the error and use the ee command to force the editor to load the new file.
ee bigfile
Your buffer now contains too many lines to display on your screen and some lines which are too wide to display in their entirety. You have a window of n lines by m characters into your text. Try using your arrow keys to move about the current screen. If you attempt to leave the screen it will automatically scroll. If you want to move faster remember the Ctrl arrow keys step over words and the Shift-Tab and Ctrl-Tab move to the beginning and end of a line.
Two common reference points in a file are its beginning and end. Press the Home key and you will find yourself back at the first line. Press the End key and you will find yourself at the last line of your buffer. A Ctrl and the Home or End key will move you to the first or last line of your current screen respectively. This means that you have a local (to the current screenfull) home and end as well as a global home and end.
To step through the file a page at a time you can use the PgUp and PgDn keys. These keys lock up at the beginning or end of your file buffer. The cursor will be left at your defined center line which defaults to line 3. If you prefer it to be the first line or another line you can change it by entering command mode (the big + key) and typing the view center command:
vc{number}
where number is between 1 and (screen length - 2). For example, to set the defined center line to line 1 enter:
vc1
Occasionally you would like to scroll the screen up or down one line without moving the cursor from its current screen line position. This can be accomplished via the Ctrl-PgUp and Ctrl-PgDn keys.
When editing programs, one of the greatest virtues of a screen editor is its ability to give you context via its full screen display. The center "5" key on the numeric keypad is designed to aid you in this respect. If you move the cursor to any line on the screen then press the 5 key (termed the center key), your screen will be redisplayed with that line positioned at your defined center line. Try positioning the cursor on one of the lines at the bottom of the screen and press the 5 key.
We have now exhausted the supplied cursor movement keys and it is time to examine the 10 function keys in more detail. QNX Software Systems has found that the odd function keys are in general easier to type and where possible has placed the more commonly used editing keys on them.
The F1 and F2 keys as we have seen toggle the new line mode. While in newline mode, you may at any time go to the command area and execute any editor command or toggle any of the options. This includes setting option newline off instead of using the F1 or F2 keys as toggle switches. This method of entering new lines is different from most editors and much more flexible. You are not locked into an append-only mode.
For example, if you are entering text with option blank off and want to know where all your "real" blanks are, you can zip up to the command area, turn on option blank (b+) and zip back without leaving the newline mode. This facility allows you to write your file occasionally without exiting from newline mode. The editor always places you where you left off after your file has been written away.
Also, suppose you have 5 lines of text in your buffer and are half way through adding line 6 when you notice a typing error on line 2. You are free to move immediately to line 2 using the cursor movement keys, correct the error, and return again to where you left off on line 6.
In the section on "Appending or Inserting Lines", an example had you insert a line using the F2 key and turn the newline mode off. You then moved the cursor keys to another position and appended 2 lines using the F1 key. As you will see from the following examples it was not necessary to turn the newline mode off between the two steps. Newline mode has no effect until you type a carriage return.
Try double spacing the first few lines of the bigfile file. Move to the first line of the file by pressing the Home key. Press F1 and type a carriage return and then move to the start of the second line using the cursor movement keys. Type another carriage return and continue appending a few blank lines in this manner.
You could also try the following:
When leaving the newline mode using either the F1 or F2 keys, the editor will delete the last blank line. Typically when appending text users will enter their last line followed by a carriage return. This will open up an unwanted hole which the closing F1 (or F2) conveniently removes. However, for your protection this automatic delete is conditional upon the line being empty.
Your file now has a few blank lines which you may wish to delete. F3 is the line delete key and will delete the current line. Move the cursor to the start of a blank line and press F3. Continue deleting the blank lines in this manner. Now move to a line containing text and press F3. If you wish very hard and then press Ctrl-F2 your line will reappear.
The editor stores deleted lines in a delete buffer. The Ctrl-F1 will append the last deleted single line after the current line and the Ctrl-F2 will insert the line before the current line. In this case, we inserted the deleted line because the current cursor line moved down one line when the F3 key was used.
If you delete 5 lines you can restore them one by one using Ctrl-F1 or F2. They can be deleted in one text area and "undeleted" into another area. In most cases, this can be used as a method of moving lines of text; however, a simpler method of moving blocks of lines using the F7 and F8 keys will be explained later.
When option fill is on (f+), your lines will be broken on word boundaries based upon your current right margin. If at some time in the future you would like to change your right margin and refill your text you can accomplish this using the F4 function key. It will take the line your cursor is on and all following lines up to:
whichever occurs first.
A line may be marked as a paragraph start by typing an Alt-p. A paragraph symbol will appear at the end of the line. The Alt-p acts as a toggle allowing you to mark/unmark a line. Filling will stop at each paragraph start, that line will be indented and filling will then continue until one of the above two conditions is reached. The paragraph start is provided as a means to stop filling between two consecutive lines.
If a group of lines have been tagged as described under the F7 key, then only those tagged lines will be filled. Filling will step over each paragraph stop as described above.
Lines are filled between your left and right margins. If option justify ( toggle with Alt-j) is on (j+), then the text will also be right justified.
This key will center the current line between the left and right margins. Multiple lines may be centered by tagging them as described under the F7 key.
Sooner or later you are going to want to split a long line or join two short lines together. The F5 key will split a line at the current cursor position into two lines. The F6 key will join the cursor line and the following line together. In practice, you normally split a line on a space and no longer want the space after the split. The F5 key checks if the character under the cursor is a space and if so, deletes it before the split. On a join, F6 checks to see if the cursor line ends in a space and, if not, appends one before joining.
If you wish to keep a space on a split or suppress the append of a space on a join, then use a Ctrl-F5 or a Ctrl-F6. These keys make no assumptions; they simply split and join. Note that the operations of split and join are symmetrical. Try splitting and joining several lines to get used to this function.
It is often convenient to tag a group of lines, then select an operation to perform on the lines selected. For example, earlier we mentioned a method of deleting a group of lines. Although there are several ways of accomplishing this, the most convenient way is by a tagged delete. The lines to be deleted are tagged and then deleted as a group.
There are two types of tagging.
This is the simpler form and allows you to tag lines in their entirety. The selected operation applies to the whole line. For example, to delete a block of lines you would locate the first line in the series to be deleted and press the F7 key. The line is displayed in reverse-video to indicate that it has been tagged. F7 is another toggle key which sets/removes a tag, hence the line could be "untagged" by pressing F7 again. This is a more complex toggle which is also tied into block tagging, and you should pause about one second before depressing the key again to untag a line.
Now move the cursor and tag the last line to be deleted using F7. You will notice that all of the lines to be deleted in between the tagged lines now show up as inverse-video. When you set two tags, all lines between the two tagged lines are treated as a tagged block. To perform the actual delete, press the F8 key (the tag operation key). This key will prompt you for a command and typing a "d" will delete all the lines as a block. The deleted lines can be restored as a block using the Ctrl-F1 or Ctrl-F2 (probably a Ctrl-F2 since you would want to insert them before the current line).
You will find that if you delete lines one at a time the editor will restore them one at a time and if you delete them as a block they will be restored as a block. This is explained in detail in the Reference section.
The tagging of lines may also be used as a method for moving and copying blocks of lines. The F8 key has five functions:
To try the move option, find a small block of text and tag the first and last lines using the F7 key. Move the cursor to another place in the text, press F8 and respond to the prompt with an "m". The tagged block of text will be appended after the current cursor line.
The kopy option is analogous to the move option. Tag a block of lines using the F7 keys. Move to the desired location, press F8, enter a "k" when prompted and the lines will be copied after the current cursor line. The original tagged block of text remains unchanged.
The save option will save the tagged lines into the file "/tmp/group.user", where group is your current numerical group ID and user is your numerical user ID. The saved text may be restored later using the Shift-F8 key. Selecting a line paste (l) will insert the text before the line your cursor is on. You may save and restore text between different edit sessions and/or consoles.
The F4 (fill) and Ctrl-F4 (center) keys will operate on tagged lines if any have been set. If not they default to the range indicated on the section describing them.
Some things to remember when using tags:
Line tagging is sufficient for most editing tasks. It falls short in those cases where you wish to operate on a block of text within a line. This occurs most frequently in the preparation of multi-column text. For example, if you wished to move the block of "C"s
AAAAAAA BBBBBBB CCCCCCC AAAAAAA BBBBBBB CCCCCCC AAAAAAA BBBBBBB CCCCCCC AAAAAAA BBBBBBB CCCCCCC DDDDDDD DDDDDDD DDDDDDD DDDDDDD
under the block of "B"s you would need to tag only the "C"s, not the "A"s and "B"s. Enter the text above and position yourself on the first character of the first line of "C"s. Depress the F7 (tag key) twice in rapid succession. The first depression will tag the line and the second depression will turn on the block tag feature and set a left limit at your cursor. The characters from the first C to the end of your line will be displayed in inverse video.
Now move your cursor to the C in the lower right corner and depress the F7 key again. You need only depress it once. This will tag the last line of "C"s and set a right limit. The block of "C"s should now be displayed in inverse video. If you wish, you may adjust the line range being tagged or the limits of the tag by moving your cursor and typing the F7 key. Unlike line tagging, typing F7 again will not remove a block tag.
Now move your cursor under the first B on the line containing the first row of "D"s and depress the F8 key. You will be queried with a more extensive list of operations then a simple line delete. They are
When performing a tagged block MOVE or COPY with option insert off (i-), the moved text will simply overlay any existing text. If option insert is on (i+) then the text will be inserted before the cursor. This can add considerable convenience. For example you may move the block of "C"s in front of the block of "D"s by tagging it, enabling option insert, and performing a move to the first character of the first line of "D"s. You should tag extra spaces to the right so the columns line up. After the move, delete the extra block of "C"s. It is recommended that you always check the state of option insert when performing a tagged block move.
The Ctrl-F7 is a toggle which can be used to retag lines or a block. Depressing it with no tags set will restore the last tags set. Depressing it with tags set will clear all tags.
Tags are set on absolute line and column numbers and inserting or deleting lines and characters may cause your tags to move with respect to your text.
These two keys are used for re-executing command line commands. The F9 key will re-execute the last command. F10 will redisplay the last command allowing you to edit it, if needed, before typing a carriage return to execute it. These functions will be more useful as you learn more editor commands in the next sections.
The editor has tab stops set every four columns with the first tab set on column five. Typing the tab key will enter a tab character at your active cursor. When displayed on your screen the tab character will be expanded into the necessary number of spaces to move to the next tab stop. Try inserting a few tabs into your text. You can display the tab character as a right triangle by turning on option tabs (ot+). By also turning on option blank (ob+), padding spaces will be displayed as small centered dots since they do not exist within your text.
Tabs are not treated with any special significance internally. They only affect your display and cursor movement on the display. You can not position your cursor on the padding spaces following a tab, only on the tab character itself or the first real character following it.
The use of tabs rather than spaces for indentation in structured languages can save considerable typing and file space storage on your diskette.
You can change your tab settings by using the View Tab command. On the command line type:
Command | gives |
---|---|
vt2 | Tabs every 2 columns |
vt4 | Tabs every 4 columns |
vt8 | Tabs every 8 columns |
You can redefine the Ctrl and Alt cursor keys into line drawing characters by executing a macro file as follows from the qed command line:
x /usr/lib/box.macros
Experiment by typing each Ctrl-cursor-key and Alt-cursor-key within the editor. The Home, PgUp, PgDn, End and 5 key should also be used. Some of the keys will move you in the most natural direction for drawing a box, however, the Ctrl-\/ will not move beyond the last line of your file buffer. You can press carriage return to open up room.
The editor maintains a left margin which determines the point a carriage return will return to and a right margin which determines the point at which filling will occur.
A Shift-F1 will set your left margin at your current cursor position and a Shift-F2 will set your right margin at your current cursor position. Shift-F3 and Shift-F4 will march your left margin left or right while a Shift-F5 and Shift-F6 will march your right margin left or right.
Go to the command area (using the large + key) and enable option fill with the command of+ or toggle it on with the Alt-f key combination. In the text area, append the following ten lines (taken from "The Princess Bride" - William Goldman) as one long line. Do not type a carriage return.
The year Buttercup was born, the most beautiful woman in the world was a French scullery maid named Annette. Annette worked in Paris for the Duke and Duchess de Guiche, and it did not escape the Duke's notice that someone extraordinary was polishing the pewter. The Duke's notice did not escape the notice of the Duchess either, who was not very beautiful and not very rich, but plenty smart. The Duchess set about studying Annette and shortly found her adversary's tragic flaw. Chocolate.
You will find that the editor will automatically take any partially typed word and move it to the next line when the cursor column exceeds 60, which is your default right margin. This feature allows you to type continuously without having to closely watch the screen. You can change your right margin using the View command which will be described shortly.
Go to the command area and enable option justify with the command oj+ or toggle it on with the Alt-j key combination. In the text area, append the following lines.
Prince Humperdinck was shaped like a barrel. His chest was a great barrel chest, his thighs mighty barrel thighs. He was not tall but he weighed close to 250 pounds, brick hard. He walked like a crab, side to side, and probably if he had wanted to be a ballet dancer, he would have been doomed to a miserable life of endless frustration.
You will find that the editor automatically justifies each line with your right margin when it fills. This option is only active when option fill is enabled.
A Ctrl-b will begin an indent of four spaces (increase your left margin by four) and a Ctrl-e will end an indent (decrease your left margin by four). Append the following 6 lines, holding down the Ctrl and typing a b or e for Ctrl-b and Ctrl-e.
The year Buttercup turned ten, Ctrl-bthe most beautiful woman lived in Bengal, Ctrl-bthe daughter of a successful tea merchant. This girl's name was Aluthra, Ctrl-eand her skin was of a dusky perfection Ctrl-eunseen in India for eighty years.
You should note that your left margin only determines the point you will return to on a carriage return. You may use your cursor keys to move to the left of an indent.
This will flag the end of the current line with a left arrow character. When this line is written, the record separator will be replaced by a carriage return. As a result, when this line is printed, no linefeed will be issued and the following line will overstrike this line. This flag is automatically set when reading source lines which terminate in carriage returns rather than record separators. This allows reading and editing the output of DOC files which have underlining and/or boldfacing. (DOC is a document markup language which was used for the original QNX 2 manuals and which was also offered as a product by Quantum Software Systems Ltd.)
This will flag the end of the current line with a bidirectional arrow character. When this line is written, the record separator will be suppressed. As a result, the next line will be continued (joined) with this one. When the editor reads a line of greater than 512 characters it will automatically split the input line and set this flag on the split line. This allows for the editing of files containing very long lines.
This will flag the end of the current line with a paragraph symbol. This is used by the fill key (F4).
You should now be able to create new files, edit existing files (e filename) and write them away (w filename). Up until now you have had little reason to leave text mode to go to command mode to execute editor commands. The next sections will introduce you to some useful editor commands.
If you have a sequence of keys which you enter often, you may wish to learn them once and assign them to a single key. Let's assume that you wish to learn the string "Copyright (c) 1998". The next time you are about to enter it, type a Ctrl-Minus sign on the keypad and enter a Ctrl-a when prompted for the key to learn. Type in your text then signal the end of learn mode by typing a Ctrl-Break. From this point on each time you enter a Ctrl-a it will be replaced by the learned input sequence.
It is possible to learn very long and complex sequences consisting of text, cursor movements and commands.
The Home, End, PgUp and PgDn keys allow you a coarse means of moving through a buffer, however, if you want to be in the middle of a thousand line buffer they are very awkward to use. If you go to the command line and type in the number of the line you want to go to (followed by a carriage return to execute) the editor takes this as a command to move your cursor to that line. This gives you the ability to move through the file in absolute terms. For example, if a compiler issues an error for line 458 of a source file then upon reading that source file with the editor you can go right to that line.
When editing a file, you often want to be able to say "Find me an occurrence of this string" so you can work on it without knowing precisely where it is. This is especially true when working from a paper listing in which you know the text string you want to edit, but probably not its line number. In the editor you can find a string simply by enclosing it in slashes on the command line. The command /son/ will cause a search to be made for the string "son". If option dual is off (od-) then the matching will be case insensitive and /son/ will match "SON", "SoN", "sON" and so on. It will also match a line containing "personal" since it contains an instance of "son".
Searching begins at the character after your cursor, resulting in the editor finding the next occurrence of your pattern. If the editor searches down to the end of the buffer without finding your pattern and option wrap is on (w+) it will continue the search at the first line of the buffer and continue until it reaches and tries your current line from behind. If your pattern is not found, an error will be generated.
Assuming you match a line containing your pattern, then that line will become your current line and your cursor will either point to the first character of the string matched (a+) or the character after this string (a-). The default is option anchor enabled (a+); however, if you are adding commas to the end of words you may prefer to switch to a-.
Enclosing a pattern in question marks instead of slashes will cause a search to be made backwards through your buffer. Therefore ?son? will search for the first occurrence of the string "son" starting at the character before the cursor. If the editor searches backward to the beginning of the buffer without finding the pattern and option wrap is on (w+) it will continue searching backwards from the end of the buffer. Again if your pattern is not found an error will be generated.
The editor is careful always to remember the last pattern you specified. Typing // will cause a search for the last pattern specified. This can save typing when looking for multiple occurrences of a long pattern. An even faster method would be to use the F9 key to re-execute the last command.
Up until now we have used the words string and pattern interchangeably. Although the editor can search for simple strings of characters like /The quick brown fox/ they are a subset of a more powerful pattern matching facility. This facility is enabled by the option metacharacters (om+) when you define a pattern. When enabled the characters ., @, $, ^,*, /, ?, and [ have a special meaning. For instance, a dot (.) is a pattern which matches any character. The pattern /a.c/ would match an occurrence of a string containing an "a" followed by any character followed by a "c". The meanings of these characters are explained in detail in the reference manual chapter. Unless you intend to read this you should turn off option metacharacters (om-) or prefix all special characters with a backslash character in your pattern. When prefixed by a backslash the special characters mentioned above lose their special meaning. A /cat\./ will only match the string "cat." regardless of the state of option m. If you want to match a backslash you must type two of them. A /a\\b/ will match the string "a\b". For non-alphanumerics the rule is simply this. If a character is preceded by a \ then remove the backslash and take that character literally. This allows you to specify a slash in your pattern. A /total\/number/ will match the string "total/number". The slash is protected and not taken as the pattern delimiter.
For alphanumerics the rule is slightly more involved. If the two characters following the backslash are hexadecimal (0 to 9 or A to F) then the whole sequence is taken as one character which has the hexadecimal value indicated. A /\07/ is a pattern consisting of the single character whose hexadecimal value is 07. A /\z/ is just a "z" while a /\bc/ is the character whose hexadecimal value is 0xBC. If this seems complex or confusing you probably don't need this ability. Just remember to type two back slashes to get one and that you can match a slash (or a ? if you scan backwards) by prefixing it with a backslash.
As we have already seen, we can read a file into the editors buffer with the e command
e filename ee filename
and write out our buffer to a file with the w command.
w filename
Whenever you read a file with the edit command (e) three things actually occur:
In each example we have specified the filename that the command should operate upon. This is not always necessary. Should you omit the filename it will default to the filename of the last file you specified with your e command. Therefore,
e report
followed by a
w
will have the write command write to the file "report". Likewise, an
e
will simply re-read the last file edited. This is often used when you bungle something and want a fresh copy. Note that in this case you will probably have to issue an
ee
command to indicate that your unsaved buffer should be overwritten. For your protection a simple e will not destroy an unsaved buffer.
If you want to check the name of your current file, you can issue the file command:
f
which will display it in the command area. You can change it (or define it) by following the command with a filename:
f file1
This will define your current filename as file1.
It is often useful to read another file into a non-empty buffer after some specified line. This can be accomplished with the r command; e.g. to read the file file2 into the buffer after the current line:
r file2
The command may be prefixed by a number (or pattern search) to explicitly indicate a particular line; e.g. to read file2 after the 10th line in the text buffer:
10r filename
Similarly, to read file2 after the line containing the next occurrence of "end" in the text buffer:
/end/r filename
The read ("r") command does not affect the current filename. If you do not specify a filename after "r" the editor will read another copy of the current file into your text buffer.
It is also possible to prefix the write ("w") command with a line number or range of lines to write.
Some examples follow.
Write all lines:
w filename
Write line 33 only:
33w filename
Write lines 1,10:
1,10w filename
Write all tagged lines:
#w filename
Finally, you can append to a file by specifying the write append command which is of the same form as the write command:
wa filename
This is useful when you wish to build a new file based upon lines or blocks of lines from your current file (or many files), for example:
Initialize file with lines 1 through 4:
1,4w file
Append lines 24 through 30:
24,30wa file
Append a group of tagged lines:
#wa file
Read a new file:
e newfile
Append first 10 lines:
1,10wa file
Users with a color display can change the color of the three display areas using the view attribute command.
va{area}{foregroundcolor} {backgroundcolor}
where:
{area}= | Indicates: |
---|---|
1 | the status line |
2 | the command line |
3 | the text area |
and:
Any QNX command may be executed from within the editor by preceding it with an exclamation mark (!).
For example, to list the contents of the current working directory:
!ls
or to edit the file another_file:
!qed another_file
After executing the QNX command, the editor will pause, waiting for the user to type carriage-return before redisplaying the screen. If you type two exclamation marks (!!) the screen clear and pause will be suppressed allowing you to invoke commands via macros in a hidden manner.
Note that Ctrl-Z is recognized within the editor and will bring up an interactive shell allowing you to execute multiple commands. To return to the editor type a Ctrl-D or issue the shell exit command to terminate the new shell.
At this point you should be able to perform most editing tasks. However, this introduction has hit on only a few of the editor commands and interested users are strongly urged to read the reference section, especially if they are interested in defining their own function key operations.