COMMAND¶
DESCRIPTION¶
The ed command opens a text editor. Ed has two modes, command mode and insert mode. Command mode uses : for a prompt, while insert mode has no prompt. You exit insert mode by typing a single . on a line.
Note
These manpages seem a bit antique, though still correct. For a better detailed help, invoke ed and use the h command. Also you could look into the man page for ed(1) on your nearest Unix box. And for a bit of fun you can try the good old quiz(6), invoke as quiz function ed-command.
syntax forms¶
All commands entered in either mode use one of the following syntax forms. With a line range:
<X>,<Y><cmd>
With a single line:
<X><cmd>
Or with no line specified:
<cmd>
To print lines 1 to 10, fill the first form with 1 and 10 and p:
1,10p
To delete lines 1 to 5, fill the first form with 1, 5 and d:
1,5d
To print a single line, fill the second form with 8 and p:
8p
A . is the “current line”. The current line is the last line referenced. If you want to print last line + 10 more:
.,.+10p
command mode commands¶
Commands that use a line range (if no line is given, then curent line is printed):
p- Print line.
d- Delete line.
l- Print line with control characters.
r file- Read in a file after the line specified.
s- Substitute patterns. See special documentation.
z- Print 10 lines.
a- Start insert mode after specified line. Exit with
.<return>. i- Start insert mode before specified line. Exit with
.<return>.
Commands used without line specification:
q- Quit. Won’t work if file is changed.
Q- Quit and discard all changes if not saved.
w- Write the file out.
w file- Write the file out with name
file. e file- Edit a file.
!cmd- Give a game command. For example “say Wait, I am busy”.
As line numbers . is current line, and $ is last line of file. Thus 1,$p will always print all of the file.
substitutions¶
Substitutions are very advanced.
First a simple example:
s/apa/bepa/- This will substitue the
apain current line withbepa. Ifpis appended, you will also immediately see the result. 1,$s/apa/bepa/- Same, but all lines in file. Only first occurence on every line.
Any character can used instead of /:
s!apa!bepa!g
The g specifies that all occurences of apa on this line are changed to bepa, instead of just the first.
The replacement pattern can be a regular expression, as covered in the next section.
searching¶
Searching is done with:
/hello/
This will find first match in or after current line. To repeat the search, use:
//
The patterns are regular expressions, where some characters have a special meaning:
.- Match any character.
x*- Match any numbers of x (0 or more).
[abc]- Match
a,borc. [0-9]- Match any digit 0 - 9.
[a-z]- Match any lowercase letter.
\x- Match
xwherexcan be any character except(and).
Note
This only half the truth, there is lots more magic in the regexps.
copying¶
How to copy from a standard file.
Enter ed. Then do r /room/vill_green.c. Now you have something in the buffer. Change it into what you want it to be. Then w /players/peter/hall.c. Or w hall.c.
insert mode commands¶
=- prints current line
a- append lines
c- change, that is, delate, than insert
d- delete line(s)
E <filename>- discard current buffer and edit the file named <filename>
e <filename>- like e, but refuse if file has been changed
f- print current filename
f <filename>- set filename
i- insert line(s)
jwith no or one argument: join line with following line
with two arguments: join line range given
k<letter>- set mark <letter> to current line. <letter> must be in the range [a-z] . The mark can be used thereinafter as a line address, with a leading slash. (e.g. ka to set mark a, /ap to print marked line)
l- print line with control characters
<start>,<end>m<dest>- move block (lines from start to end) behind line # dest
<line>m<dest>- move single line
m<dest>- move current line
M- remove Ctrl-M (CR) characters.
p- print line
P- print line
Q- quit, discarding the buffer
q- the same, but refuse if file has been changed since last write
r- read in file. If no adress is given, at the last insert position, if also nothing was inserted, at the end of the buffer
s- substitute
<start>,<end>t<dest>- copy block ( lines from start to end ) behind line position dest
<line>t<dest>- copy single line
t<dest>- copy current line
w- write file
W- write file
x- write file if buffer has been changed since last change, then quit
z- show approx. a screenful of lines
tips & tricks¶
- never use
1,$pto print out an editfile, because you will be thrown out ‘cause of too much text transfereed to you. $: jump to end of file.?anything?and??: search from bottom to up. (like ‘/’ from beginning to end of file. (also with substitutions, try it out...)- (
g/xxx/psearch global xxx and print corresponding lines,/xxx/s/new/old/p: search xxx, substitute new to old in this line and print out. (try this concatenations with other commands) 1,nmx( see ed5 ), but also:1,ntx: don’t move the lines, but make a copy of them.x,y w name: save linesxtoytofilename (if you don’t know the line numbers :=current line number)s/$/text/p: append text to the end of current LINE and print lines/^/text/p: insert text at beginning of current LINE and print line