Blame


1 cfa37a7b 2004-04-10 devnull .TH SAM 1
2 cfa37a7b 2004-04-10 devnull .ds a \fR*\ \fP
3 cfa37a7b 2004-04-10 devnull .SH NAME
4 bfe4377e 2020-05-19 rsc sam, B, E, sam.save, samterm, samsave \- screen editor with structural regular expressions
5 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
6 cfa37a7b 2004-04-10 devnull .B sam
7 cfa37a7b 2004-04-10 devnull [
8 cfa37a7b 2004-04-10 devnull .I option ...
9 cfa37a7b 2004-04-10 devnull ] [
10 cfa37a7b 2004-04-10 devnull .I files
11 cfa37a7b 2004-04-10 devnull ]
12 cfa37a7b 2004-04-10 devnull .PP
13 cfa37a7b 2004-04-10 devnull .B sam
14 cfa37a7b 2004-04-10 devnull .B -r
15 cfa37a7b 2004-04-10 devnull .I machine
16 cfa37a7b 2004-04-10 devnull .PP
17 cfa37a7b 2004-04-10 devnull .B sam.save
18 cfa37a7b 2004-04-10 devnull .PP
19 cfa37a7b 2004-04-10 devnull .B B
20 058b0118 2005-01-03 devnull .IB file \fR[\fP: line \fR]
21 058b0118 2005-01-03 devnull \&...
22 c8b6342d 2005-01-13 devnull .PP
23 c8b6342d 2005-01-13 devnull .B E
24 c8b6342d 2005-01-13 devnull .I file
25 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
26 cfa37a7b 2004-04-10 devnull .I Sam
27 cfa37a7b 2004-04-10 devnull is a multi-file editor.
28 cfa37a7b 2004-04-10 devnull It modifies a local copy of an external file.
29 cfa37a7b 2004-04-10 devnull The copy is here called a
30 cfa37a7b 2004-04-10 devnull .IR file .
31 cfa37a7b 2004-04-10 devnull The files are listed in a menu available through mouse button 3
32 cfa37a7b 2004-04-10 devnull or the
33 cfa37a7b 2004-04-10 devnull .B n
34 cfa37a7b 2004-04-10 devnull command.
35 cfa37a7b 2004-04-10 devnull Each file has an associated name, usually the name of the
36 cfa37a7b 2004-04-10 devnull external file from which it was read, and a `modified' bit that indicates whether
37 cfa37a7b 2004-04-10 devnull the editor's file agrees with the external file.
38 cfa37a7b 2004-04-10 devnull The external file is not read into
39 cfa37a7b 2004-04-10 devnull the editor's file until it first becomes the current file\(emthat to
40 cfa37a7b 2004-04-10 devnull which editing commands apply\(emwhereupon its menu entry is printed.
41 cfa37a7b 2004-04-10 devnull The options are
42 cfa37a7b 2004-04-10 devnull .TF -rmachine
43 d93fca6a 2005-02-11 devnull .TP
44 d93fca6a 2005-02-11 devnull .B -a
45 d93fca6a 2005-02-11 devnull Autoindent. In this mode, when a newline character is typed
46 bfe4377e 2020-05-19 rsc in the terminal interface,
47 d93fca6a 2005-02-11 devnull .I samterm
48 d93fca6a 2005-02-11 devnull copies leading white space on the current line to the new line.
49 cfa37a7b 2004-04-10 devnull .TP
50 cfa37a7b 2004-04-10 devnull .B -d
51 cfa37a7b 2004-04-10 devnull Do not `download' the terminal part of
52 cfa37a7b 2004-04-10 devnull .IR sam .
53 cfa37a7b 2004-04-10 devnull Editing will be done with the command language only, as in
54 d32deab1 2020-08-16 rsc .MR ed (1) .
55 cfa37a7b 2004-04-10 devnull .TP
56 cfa37a7b 2004-04-10 devnull .BI -r " machine
57 cfa37a7b 2004-04-10 devnull Run the host part remotely
58 cfa37a7b 2004-04-10 devnull on the specified machine, the terminal part locally.
59 cfa37a7b 2004-04-10 devnull .TP
60 cfa37a7b 2004-04-10 devnull .BI -s " path
61 cfa37a7b 2004-04-10 devnull Start the host part from the specified file on the remote host.
62 cfa37a7b 2004-04-10 devnull Only meaningful with the
63 cfa37a7b 2004-04-10 devnull .BI -r
64 cfa37a7b 2004-04-10 devnull option.
65 cfa37a7b 2004-04-10 devnull .TP
66 cfa37a7b 2004-04-10 devnull .BI -t " path
67 cfa37a7b 2004-04-10 devnull Start the terminal part from the specified file. Useful
68 cfa37a7b 2004-04-10 devnull for debugging.
69 cfa37a7b 2004-04-10 devnull .PD
70 cfa37a7b 2004-04-10 devnull .SS Regular expressions
71 cfa37a7b 2004-04-10 devnull Regular expressions are as in
72 d32deab1 2020-08-16 rsc .MR regexp (7)
73 cfa37a7b 2004-04-10 devnull with the addition of
74 cfa37a7b 2004-04-10 devnull .BR \en
75 cfa37a7b 2004-04-10 devnull to represent newlines.
76 cfa37a7b 2004-04-10 devnull A regular expression may never contain a literal newline character.
77 cfa37a7b 2004-04-10 devnull The empty
78 cfa37a7b 2004-04-10 devnull regular expression stands for the last complete expression encountered.
79 cfa37a7b 2004-04-10 devnull A regular expression in
80 cfa37a7b 2004-04-10 devnull .I sam
81 cfa37a7b 2004-04-10 devnull matches the longest leftmost substring formally
82 cfa37a7b 2004-04-10 devnull matched by the expression.
83 cfa37a7b 2004-04-10 devnull Searching in the reverse direction is equivalent
84 cfa37a7b 2004-04-10 devnull to searching backwards with the catenation operations reversed in
85 cfa37a7b 2004-04-10 devnull the expression.
86 cfa37a7b 2004-04-10 devnull .SS Addresses
87 cfa37a7b 2004-04-10 devnull An address identifies a substring in a file.
88 cfa37a7b 2004-04-10 devnull In the following, `character
89 cfa37a7b 2004-04-10 devnull .IR n '
90 cfa37a7b 2004-04-10 devnull means the null string
91 cfa37a7b 2004-04-10 devnull after the
92 cfa37a7b 2004-04-10 devnull .IR n -th
93 cfa37a7b 2004-04-10 devnull character in the file, with 1 the
94 cfa37a7b 2004-04-10 devnull first character in the file.
95 cfa37a7b 2004-04-10 devnull `Line
96 cfa37a7b 2004-04-10 devnull .IR n '
97 cfa37a7b 2004-04-10 devnull means the
98 cfa37a7b 2004-04-10 devnull .IR n -th
99 cfa37a7b 2004-04-10 devnull match,
100 cfa37a7b 2004-04-10 devnull starting at the beginning of the file, of the regular expression
101 cfa37a7b 2004-04-10 devnull .LR .*\en? .
102 cfa37a7b 2004-04-10 devnull All files always have a current substring, called dot,
103 cfa37a7b 2004-04-10 devnull that is the default address.
104 cfa37a7b 2004-04-10 devnull .SS Simple Addresses
105 cfa37a7b 2004-04-10 devnull .PD 0
106 cfa37a7b 2004-04-10 devnull .TP
107 cfa37a7b 2004-04-10 devnull .BI # n
108 cfa37a7b 2004-04-10 devnull The empty string after character
109 cfa37a7b 2004-04-10 devnull .IR n ;
110 cfa37a7b 2004-04-10 devnull .B #0
111 cfa37a7b 2004-04-10 devnull is the beginning of the file.
112 cfa37a7b 2004-04-10 devnull .TP
113 cfa37a7b 2004-04-10 devnull .I n
114 cfa37a7b 2004-04-10 devnull Line
115 cfa37a7b 2004-04-10 devnull .IR n ;
116 cfa37a7b 2004-04-10 devnull .B 0
117 cfa37a7b 2004-04-10 devnull is the beginning of the file.
118 cfa37a7b 2004-04-10 devnull .TP
119 cfa37a7b 2004-04-10 devnull .BI / regexp /
120 cfa37a7b 2004-04-10 devnull .PD 0
121 cfa37a7b 2004-04-10 devnull .TP
122 cfa37a7b 2004-04-10 devnull .BI ? regexp ?
123 cfa37a7b 2004-04-10 devnull The substring that matches the regular expression,
124 bfe4377e 2020-05-19 rsc found by looking toward the end
125 cfa37a7b 2004-04-10 devnull .RB ( / )
126 cfa37a7b 2004-04-10 devnull or beginning
127 cfa37a7b 2004-04-10 devnull .RB ( ? )
128 cfa37a7b 2004-04-10 devnull of the file,
129 cfa37a7b 2004-04-10 devnull and if necessary continuing the search from the other end to the
130 cfa37a7b 2004-04-10 devnull starting point of the search.
131 cfa37a7b 2004-04-10 devnull The matched substring may straddle
132 cfa37a7b 2004-04-10 devnull the starting point.
133 cfa37a7b 2004-04-10 devnull When entering a pattern containing a literal question mark
134 cfa37a7b 2004-04-10 devnull for a backward search, the question mark should be
135 cfa37a7b 2004-04-10 devnull specified as a member of a class.
136 cfa37a7b 2004-04-10 devnull .PD
137 cfa37a7b 2004-04-10 devnull .TP
138 cfa37a7b 2004-04-10 devnull .B 0
139 cfa37a7b 2004-04-10 devnull The string before the first full line.
140 cfa37a7b 2004-04-10 devnull This is not necessarily
141 cfa37a7b 2004-04-10 devnull the null string; see
142 cfa37a7b 2004-04-10 devnull .B +
143 cfa37a7b 2004-04-10 devnull and
144 cfa37a7b 2004-04-10 devnull .B -
145 cfa37a7b 2004-04-10 devnull below.
146 cfa37a7b 2004-04-10 devnull .TP
147 cfa37a7b 2004-04-10 devnull .B $
148 cfa37a7b 2004-04-10 devnull The null string at the end of the file.
149 cfa37a7b 2004-04-10 devnull .TP
150 cfa37a7b 2004-04-10 devnull .B .
151 cfa37a7b 2004-04-10 devnull Dot.
152 cfa37a7b 2004-04-10 devnull .TP
153 cfa37a7b 2004-04-10 devnull .B \&'
154 cfa37a7b 2004-04-10 devnull The mark in the file (see the
155 cfa37a7b 2004-04-10 devnull .B k
156 cfa37a7b 2004-04-10 devnull command below).
157 cfa37a7b 2004-04-10 devnull .TP
158 cfa37a7b 2004-04-10 devnull \fB"\f2regexp\fB"\f1\f1
159 cfa37a7b 2004-04-10 devnull Preceding a simple address (default
160 cfa37a7b 2004-04-10 devnull .BR . ),
161 cfa37a7b 2004-04-10 devnull refers to the address evaluated in the unique file whose menu line
162 cfa37a7b 2004-04-10 devnull matches the regular expression.
163 cfa37a7b 2004-04-10 devnull .PD
164 cfa37a7b 2004-04-10 devnull .SS Compound Addresses
165 cfa37a7b 2004-04-10 devnull In the following,
166 cfa37a7b 2004-04-10 devnull .I a1
167 cfa37a7b 2004-04-10 devnull and
168 cfa37a7b 2004-04-10 devnull .I a2
169 cfa37a7b 2004-04-10 devnull are addresses.
170 cfa37a7b 2004-04-10 devnull .TF a1+a2
171 cfa37a7b 2004-04-10 devnull .TP
172 cfa37a7b 2004-04-10 devnull .IB a1 + a2
173 cfa37a7b 2004-04-10 devnull The address
174 cfa37a7b 2004-04-10 devnull .I a2
175 cfa37a7b 2004-04-10 devnull evaluated starting at the end of
176 cfa37a7b 2004-04-10 devnull .IR a1 .
177 cfa37a7b 2004-04-10 devnull .TP
178 cfa37a7b 2004-04-10 devnull .IB a1 - a2
179 cfa37a7b 2004-04-10 devnull The address
180 cfa37a7b 2004-04-10 devnull .I a2
181 cfa37a7b 2004-04-10 devnull evaluated looking in the reverse direction
182 cfa37a7b 2004-04-10 devnull starting at the beginning of
183 cfa37a7b 2004-04-10 devnull .IR a1 .
184 cfa37a7b 2004-04-10 devnull .TP
185 cfa37a7b 2004-04-10 devnull .IB a1 , a2
186 cfa37a7b 2004-04-10 devnull The substring from the beginning of
187 cfa37a7b 2004-04-10 devnull .I a1
188 cfa37a7b 2004-04-10 devnull to the end of
189 cfa37a7b 2004-04-10 devnull .IR a2 .
190 cfa37a7b 2004-04-10 devnull If
191 cfa37a7b 2004-04-10 devnull .I a1
192 cfa37a7b 2004-04-10 devnull is missing,
193 cfa37a7b 2004-04-10 devnull .B 0
194 cfa37a7b 2004-04-10 devnull is substituted.
195 cfa37a7b 2004-04-10 devnull If
196 cfa37a7b 2004-04-10 devnull .I a2
197 cfa37a7b 2004-04-10 devnull is missing,
198 cfa37a7b 2004-04-10 devnull .B $
199 cfa37a7b 2004-04-10 devnull is substituted.
200 cfa37a7b 2004-04-10 devnull .TP
201 cfa37a7b 2004-04-10 devnull .IB a1 ; a2
202 cfa37a7b 2004-04-10 devnull Like
203 cfa37a7b 2004-04-10 devnull .IB a1 , a2\f1,
204 cfa37a7b 2004-04-10 devnull but with
205 cfa37a7b 2004-04-10 devnull .I a2
206 cfa37a7b 2004-04-10 devnull evaluated at the end of, and dot set to,
207 cfa37a7b 2004-04-10 devnull .IR a1 .
208 cfa37a7b 2004-04-10 devnull .PD
209 cfa37a7b 2004-04-10 devnull .PP
210 cfa37a7b 2004-04-10 devnull The operators
211 cfa37a7b 2004-04-10 devnull .B +
212 cfa37a7b 2004-04-10 devnull and
213 cfa37a7b 2004-04-10 devnull .B -
214 cfa37a7b 2004-04-10 devnull are high precedence, while
215 cfa37a7b 2004-04-10 devnull .B ,
216 cfa37a7b 2004-04-10 devnull and
217 cfa37a7b 2004-04-10 devnull .B ;
218 cfa37a7b 2004-04-10 devnull are low precedence.
219 cfa37a7b 2004-04-10 devnull .PP
220 cfa37a7b 2004-04-10 devnull In both
221 cfa37a7b 2004-04-10 devnull .B +
222 cfa37a7b 2004-04-10 devnull and
223 cfa37a7b 2004-04-10 devnull .B -
224 cfa37a7b 2004-04-10 devnull forms, if
225 cfa37a7b 2004-04-10 devnull .I a2
226 cfa37a7b 2004-04-10 devnull is a line or character address with a missing
227 cfa37a7b 2004-04-10 devnull number, the number defaults to 1.
228 cfa37a7b 2004-04-10 devnull If
229 cfa37a7b 2004-04-10 devnull .I a1
230 cfa37a7b 2004-04-10 devnull is missing,
231 cfa37a7b 2004-04-10 devnull .L .
232 cfa37a7b 2004-04-10 devnull is substituted.
233 cfa37a7b 2004-04-10 devnull If both
234 cfa37a7b 2004-04-10 devnull .I a1
235 cfa37a7b 2004-04-10 devnull and
236 cfa37a7b 2004-04-10 devnull .I a2
237 cfa37a7b 2004-04-10 devnull are present and distinguishable,
238 cfa37a7b 2004-04-10 devnull .B +
239 cfa37a7b 2004-04-10 devnull may be elided.
240 cfa37a7b 2004-04-10 devnull .I a2
241 cfa37a7b 2004-04-10 devnull may be a regular
242 cfa37a7b 2004-04-10 devnull expression; if it is delimited by
243 cfa37a7b 2004-04-10 devnull .LR ? 's,
244 cfa37a7b 2004-04-10 devnull the effect of the
245 cfa37a7b 2004-04-10 devnull .B +
246 cfa37a7b 2004-04-10 devnull or
247 cfa37a7b 2004-04-10 devnull .B -
248 cfa37a7b 2004-04-10 devnull is reversed.
249 cfa37a7b 2004-04-10 devnull .PP
250 cfa37a7b 2004-04-10 devnull It is an error for a compound address to represent a malformed substring.
251 bfe4377e 2020-05-19 rsc Some useful idioms:
252 cfa37a7b 2004-04-10 devnull .IB a1 +-
253 cfa37a7b 2004-04-10 devnull \%(\f2a1\fB-+\f1)
254 cfa37a7b 2004-04-10 devnull selects the line containing
255 cfa37a7b 2004-04-10 devnull the end (beginning) of a1.
256 cfa37a7b 2004-04-10 devnull .BI 0/ regexp /
257 cfa37a7b 2004-04-10 devnull locates the first match of the expression in the file.
258 cfa37a7b 2004-04-10 devnull (The form
259 cfa37a7b 2004-04-10 devnull .B 0;//
260 cfa37a7b 2004-04-10 devnull sets dot unnecessarily.)
261 bfe4377e 2020-05-19 rsc .BI ./ regexp ///
262 cfa37a7b 2004-04-10 devnull finds the second following occurrence of the expression,
263 cfa37a7b 2004-04-10 devnull and
264 cfa37a7b 2004-04-10 devnull .BI .,/ regexp /
265 cfa37a7b 2004-04-10 devnull extends dot.
266 cfa37a7b 2004-04-10 devnull .SS Commands
267 cfa37a7b 2004-04-10 devnull In the following, text demarcated by slashes represents text delimited
268 cfa37a7b 2004-04-10 devnull by any printable
269 cfa37a7b 2004-04-10 devnull character except alphanumerics.
270 cfa37a7b 2004-04-10 devnull Any number of
271 cfa37a7b 2004-04-10 devnull trailing delimiters may be elided, with multiple elisions then representing
272 cfa37a7b 2004-04-10 devnull null strings, but the first delimiter must always
273 cfa37a7b 2004-04-10 devnull be present.
274 cfa37a7b 2004-04-10 devnull In any delimited text,
275 cfa37a7b 2004-04-10 devnull newline may not appear literally;
276 cfa37a7b 2004-04-10 devnull .B \en
277 cfa37a7b 2004-04-10 devnull may be typed for newline; and
278 cfa37a7b 2004-04-10 devnull .B \e/
279 bfe4377e 2020-05-19 rsc quotes the delimiter, here
280 cfa37a7b 2004-04-10 devnull .LR / .
281 cfa37a7b 2004-04-10 devnull Backslash is otherwise interpreted literally, except in
282 cfa37a7b 2004-04-10 devnull .B s
283 cfa37a7b 2004-04-10 devnull commands.
284 cfa37a7b 2004-04-10 devnull .PP
285 cfa37a7b 2004-04-10 devnull Most commands may be prefixed by an address to indicate their range
286 cfa37a7b 2004-04-10 devnull of operation.
287 bfe4377e 2020-05-19 rsc Those that may not are marked with a
288 cfa37a7b 2004-04-10 devnull .L *
289 cfa37a7b 2004-04-10 devnull below.
290 cfa37a7b 2004-04-10 devnull If a command takes
291 cfa37a7b 2004-04-10 devnull an address and none is supplied, dot is used.
292 cfa37a7b 2004-04-10 devnull The sole exception is
293 cfa37a7b 2004-04-10 devnull the
294 cfa37a7b 2004-04-10 devnull .B w
295 cfa37a7b 2004-04-10 devnull command, which defaults to
296 cfa37a7b 2004-04-10 devnull .BR 0,$ .
297 cfa37a7b 2004-04-10 devnull In the description, `range' is used
298 cfa37a7b 2004-04-10 devnull to represent whatever address is supplied.
299 cfa37a7b 2004-04-10 devnull Many commands set the
300 cfa37a7b 2004-04-10 devnull value of dot as a side effect.
301 cfa37a7b 2004-04-10 devnull If so, it is always set to the `result'
302 cfa37a7b 2004-04-10 devnull of the change: the empty string for a deletion, the new text for an
303 cfa37a7b 2004-04-10 devnull insertion, etc. (but see the
304 cfa37a7b 2004-04-10 devnull .B s
305 cfa37a7b 2004-04-10 devnull and
306 cfa37a7b 2004-04-10 devnull .B e
307 cfa37a7b 2004-04-10 devnull commands).
308 cfa37a7b 2004-04-10 devnull .br
309 cfa37a7b 2004-04-10 devnull .ne 1.2i
310 cfa37a7b 2004-04-10 devnull .SS Text commands
311 cfa37a7b 2004-04-10 devnull .PD 0
312 cfa37a7b 2004-04-10 devnull .TP
313 cfa37a7b 2004-04-10 devnull .BI a/ text /
314 cfa37a7b 2004-04-10 devnull .TP
315 cfa37a7b 2004-04-10 devnull or
316 cfa37a7b 2004-04-10 devnull .TP
317 cfa37a7b 2004-04-10 devnull .B a
318 cfa37a7b 2004-04-10 devnull .TP
319 cfa37a7b 2004-04-10 devnull .I lines of text
320 cfa37a7b 2004-04-10 devnull .TP
321 cfa37a7b 2004-04-10 devnull .B .
322 cfa37a7b 2004-04-10 devnull Insert the text into the file after the range.
323 cfa37a7b 2004-04-10 devnull Set dot.
324 cfa37a7b 2004-04-10 devnull .PD
325 cfa37a7b 2004-04-10 devnull .TP
326 cfa37a7b 2004-04-10 devnull .B c\fP
327 cfa37a7b 2004-04-10 devnull .br
328 cfa37a7b 2004-04-10 devnull .ns
329 cfa37a7b 2004-04-10 devnull .TP
330 cfa37a7b 2004-04-10 devnull .B i\fP
331 cfa37a7b 2004-04-10 devnull Same as
332 cfa37a7b 2004-04-10 devnull .BR a ,
333 cfa37a7b 2004-04-10 devnull but
334 cfa37a7b 2004-04-10 devnull .B c
335 cfa37a7b 2004-04-10 devnull replaces the text, while
336 cfa37a7b 2004-04-10 devnull .B i
337 cfa37a7b 2004-04-10 devnull inserts
338 cfa37a7b 2004-04-10 devnull .I before
339 cfa37a7b 2004-04-10 devnull the range.
340 cfa37a7b 2004-04-10 devnull .TP
341 cfa37a7b 2004-04-10 devnull .B d
342 cfa37a7b 2004-04-10 devnull Delete the text in the range.
343 cfa37a7b 2004-04-10 devnull Set dot.
344 cfa37a7b 2004-04-10 devnull .TP
345 cfa37a7b 2004-04-10 devnull .BI s/ regexp / text /
346 cfa37a7b 2004-04-10 devnull Substitute
347 cfa37a7b 2004-04-10 devnull .I text
348 cfa37a7b 2004-04-10 devnull for the first match to the regular expression in the range.
349 cfa37a7b 2004-04-10 devnull Set dot to the modified range.
350 bfe4377e 2020-05-19 rsc In
351 cfa37a7b 2004-04-10 devnull .I text
352 cfa37a7b 2004-04-10 devnull the character
353 cfa37a7b 2004-04-10 devnull .B &
354 cfa37a7b 2004-04-10 devnull stands for the string
355 bfe4377e 2020-05-19 rsc that matched the expression.
356 cfa37a7b 2004-04-10 devnull Backslash behaves as usual unless followed by
357 cfa37a7b 2004-04-10 devnull a digit:
358 cfa37a7b 2004-04-10 devnull .BI \e d
359 cfa37a7b 2004-04-10 devnull stands for the string that matched the
360 cfa37a7b 2004-04-10 devnull subexpression begun by the
361 cfa37a7b 2004-04-10 devnull .IR d -th
362 cfa37a7b 2004-04-10 devnull left parenthesis.
363 cfa37a7b 2004-04-10 devnull If
364 cfa37a7b 2004-04-10 devnull .I s
365 cfa37a7b 2004-04-10 devnull is followed immediately by a
366 cfa37a7b 2004-04-10 devnull number
367 cfa37a7b 2004-04-10 devnull .IR n ,
368 cfa37a7b 2004-04-10 devnull as in
369 cfa37a7b 2004-04-10 devnull .BR s2/x/y/ ,
370 cfa37a7b 2004-04-10 devnull the
371 cfa37a7b 2004-04-10 devnull .IR n -th
372 cfa37a7b 2004-04-10 devnull match in the range is substituted.
373 cfa37a7b 2004-04-10 devnull If the
374 cfa37a7b 2004-04-10 devnull command is followed by a
375 cfa37a7b 2004-04-10 devnull .BR g ,
376 cfa37a7b 2004-04-10 devnull as in
377 cfa37a7b 2004-04-10 devnull .BR s/x/y/g ,
378 cfa37a7b 2004-04-10 devnull all matches in the range
379 cfa37a7b 2004-04-10 devnull are substituted.
380 cfa37a7b 2004-04-10 devnull .TP
381 cfa37a7b 2004-04-10 devnull .BI m " a1
382 cfa37a7b 2004-04-10 devnull .br
383 cfa37a7b 2004-04-10 devnull .ns
384 cfa37a7b 2004-04-10 devnull .TP
385 cfa37a7b 2004-04-10 devnull .BI t " a1
386 cfa37a7b 2004-04-10 devnull Move
387 cfa37a7b 2004-04-10 devnull .RB ( m )
388 cfa37a7b 2004-04-10 devnull or copy
389 cfa37a7b 2004-04-10 devnull .RB ( t )
390 cfa37a7b 2004-04-10 devnull the range to after
391 cfa37a7b 2004-04-10 devnull .IR a1 .
392 cfa37a7b 2004-04-10 devnull Set dot.
393 cfa37a7b 2004-04-10 devnull .SS Display commands
394 cfa37a7b 2004-04-10 devnull .PD 0
395 cfa37a7b 2004-04-10 devnull .TP
396 cfa37a7b 2004-04-10 devnull .B p
397 cfa37a7b 2004-04-10 devnull Print the text in the range.
398 cfa37a7b 2004-04-10 devnull Set dot.
399 cfa37a7b 2004-04-10 devnull .TP
400 cfa37a7b 2004-04-10 devnull .B =
401 cfa37a7b 2004-04-10 devnull Print the line address and character address of the range.
402 cfa37a7b 2004-04-10 devnull .TP
403 cfa37a7b 2004-04-10 devnull .B =#
404 cfa37a7b 2004-04-10 devnull Print just the character address of the range.
405 cfa37a7b 2004-04-10 devnull .PD
406 cfa37a7b 2004-04-10 devnull .SS File commands
407 cfa37a7b 2004-04-10 devnull .PD 0
408 cfa37a7b 2004-04-10 devnull .TP
409 cfa37a7b 2004-04-10 devnull .BI \*ab " file-list
410 cfa37a7b 2004-04-10 devnull Set the current file to the first file named in the list
411 cfa37a7b 2004-04-10 devnull that
412 cfa37a7b 2004-04-10 devnull .I sam
413 cfa37a7b 2004-04-10 devnull also has in its menu.
414 cfa37a7b 2004-04-10 devnull The list may be expressed
415 cfa37a7b 2004-04-10 devnull .BI < "Plan 9 command"
416 cfa37a7b 2004-04-10 devnull in which case the file names are taken as words (in the shell sense)
417 cfa37a7b 2004-04-10 devnull generated by the Plan 9 command.
418 cfa37a7b 2004-04-10 devnull .TP
419 cfa37a7b 2004-04-10 devnull .BI \*aB " file-list
420 cfa37a7b 2004-04-10 devnull Same as
421 cfa37a7b 2004-04-10 devnull .BR b ,
422 cfa37a7b 2004-04-10 devnull except that file names not in the menu are entered there,
423 cfa37a7b 2004-04-10 devnull and all file names in the list are examined.
424 cfa37a7b 2004-04-10 devnull .TP
425 cfa37a7b 2004-04-10 devnull .B \*an
426 cfa37a7b 2004-04-10 devnull Print a menu of files.
427 cfa37a7b 2004-04-10 devnull The format is:
428 cfa37a7b 2004-04-10 devnull .RS
429 cfa37a7b 2004-04-10 devnull .TP 11
430 cfa37a7b 2004-04-10 devnull .BR ' " or blank
431 cfa37a7b 2004-04-10 devnull indicating the file is modified or clean,
432 cfa37a7b 2004-04-10 devnull .TP 11
433 cfa37a7b 2004-04-10 devnull .BR - " or \&" +
434 cfa37a7b 2004-04-10 devnull indicating the file is unread or has been read
435 cfa37a7b 2004-04-10 devnull (in the terminal,
436 cfa37a7b 2004-04-10 devnull .B *
437 cfa37a7b 2004-04-10 devnull means more than one window is open),
438 cfa37a7b 2004-04-10 devnull .TP 11
439 cfa37a7b 2004-04-10 devnull .BR . " or blank
440 cfa37a7b 2004-04-10 devnull indicating the current file,
441 cfa37a7b 2004-04-10 devnull .TP 11
442 cfa37a7b 2004-04-10 devnull a blank,
443 cfa37a7b 2004-04-10 devnull .TP 11
444 cfa37a7b 2004-04-10 devnull and the file name.
445 cfa37a7b 2004-04-10 devnull .RE
446 cfa37a7b 2004-04-10 devnull .TP 0
447 cfa37a7b 2004-04-10 devnull .BI \*aD " file-list
448 cfa37a7b 2004-04-10 devnull Delete the named files from the menu.
449 cfa37a7b 2004-04-10 devnull If no files are named, the current file is deleted.
450 cfa37a7b 2004-04-10 devnull It is an error to
451 cfa37a7b 2004-04-10 devnull .B D
452 cfa37a7b 2004-04-10 devnull a modified file, but a subsequent
453 cfa37a7b 2004-04-10 devnull .B D
454 cfa37a7b 2004-04-10 devnull will delete such a file.
455 cfa37a7b 2004-04-10 devnull .PD
456 cfa37a7b 2004-04-10 devnull .SS I/O Commands
457 cfa37a7b 2004-04-10 devnull .PD 0
458 cfa37a7b 2004-04-10 devnull .TP
459 cfa37a7b 2004-04-10 devnull .BI \*ae " filename
460 cfa37a7b 2004-04-10 devnull Replace the file by the contents of the named external file.
461 cfa37a7b 2004-04-10 devnull Set dot to the beginning of the file.
462 cfa37a7b 2004-04-10 devnull .TP
463 cfa37a7b 2004-04-10 devnull .BI r " filename
464 cfa37a7b 2004-04-10 devnull Replace the text in the range by the contents of the named external file.
465 cfa37a7b 2004-04-10 devnull Set dot.
466 cfa37a7b 2004-04-10 devnull .TP
467 cfa37a7b 2004-04-10 devnull .BI w " filename
468 cfa37a7b 2004-04-10 devnull Write the range (default
469 cfa37a7b 2004-04-10 devnull .BR 0,$ )
470 cfa37a7b 2004-04-10 devnull to the named external file.
471 cfa37a7b 2004-04-10 devnull .TP
472 cfa37a7b 2004-04-10 devnull .BI \*af " filename
473 cfa37a7b 2004-04-10 devnull Set the file name and print the resulting menu entry.
474 cfa37a7b 2004-04-10 devnull .PP
475 cfa37a7b 2004-04-10 devnull If the file name is absent from any of these, the current file name is used.
476 cfa37a7b 2004-04-10 devnull .B e
477 cfa37a7b 2004-04-10 devnull always sets the file name;
478 cfa37a7b 2004-04-10 devnull .B r
479 cfa37a7b 2004-04-10 devnull and
480 cfa37a7b 2004-04-10 devnull .B w
481 cfa37a7b 2004-04-10 devnull do so if the file has no name.
482 cfa37a7b 2004-04-10 devnull .TP
483 cfa37a7b 2004-04-10 devnull .BI < " Plan 9-command
484 cfa37a7b 2004-04-10 devnull Replace the range by the standard output of the
485 cfa37a7b 2004-04-10 devnull Plan 9 command.
486 cfa37a7b 2004-04-10 devnull .TP
487 cfa37a7b 2004-04-10 devnull .BI > " Plan 9-command
488 cfa37a7b 2004-04-10 devnull Send the range to the standard input of the
489 cfa37a7b 2004-04-10 devnull Plan 9 command.
490 cfa37a7b 2004-04-10 devnull .TP
491 cfa37a7b 2004-04-10 devnull .BI | " Plan 9-command
492 cfa37a7b 2004-04-10 devnull Send the range to the standard input, and replace it by
493 cfa37a7b 2004-04-10 devnull the standard output, of the
494 cfa37a7b 2004-04-10 devnull Plan 9 command.
495 cfa37a7b 2004-04-10 devnull .TP
496 cfa37a7b 2004-04-10 devnull .BI \*a! " Plan 9-command
497 cfa37a7b 2004-04-10 devnull Run the
498 cfa37a7b 2004-04-10 devnull Plan 9 command.
499 cfa37a7b 2004-04-10 devnull .TP
500 cfa37a7b 2004-04-10 devnull .BI \*acd " directory
501 cfa37a7b 2004-04-10 devnull Change working directory.
502 cfa37a7b 2004-04-10 devnull If no directory is specified,
503 bfe4377e 2020-05-19 rsc .B $HOME
504 cfa37a7b 2004-04-10 devnull is used.
505 cfa37a7b 2004-04-10 devnull .PD
506 cfa37a7b 2004-04-10 devnull .PP
507 cfa37a7b 2004-04-10 devnull In any of
508 cfa37a7b 2004-04-10 devnull .BR < ,
509 cfa37a7b 2004-04-10 devnull .BR > ,
510 cfa37a7b 2004-04-10 devnull .B |
511 cfa37a7b 2004-04-10 devnull or
512 cfa37a7b 2004-04-10 devnull .BR ! ,
513 cfa37a7b 2004-04-10 devnull if the
514 cfa37a7b 2004-04-10 devnull .I Plan 9 command
515 cfa37a7b 2004-04-10 devnull is omitted the last
516 cfa37a7b 2004-04-10 devnull .I Plan 9 command
517 cfa37a7b 2004-04-10 devnull (of any type) is substituted.
518 cfa37a7b 2004-04-10 devnull If
519 cfa37a7b 2004-04-10 devnull .I sam
520 cfa37a7b 2004-04-10 devnull is
521 cfa37a7b 2004-04-10 devnull .I downloaded
522 cfa37a7b 2004-04-10 devnull (using the mouse and raster display, i.e. not using option
523 cfa37a7b 2004-04-10 devnull .BR -d ),
524 cfa37a7b 2004-04-10 devnull .B !
525 cfa37a7b 2004-04-10 devnull sets standard input to
526 cfa37a7b 2004-04-10 devnull .BR /dev/null ,
527 cfa37a7b 2004-04-10 devnull and otherwise
528 cfa37a7b 2004-04-10 devnull unassigned output
529 cfa37a7b 2004-04-10 devnull .RB ( stdout
530 cfa37a7b 2004-04-10 devnull for
531 cfa37a7b 2004-04-10 devnull .B !
532 cfa37a7b 2004-04-10 devnull and
533 cfa37a7b 2004-04-10 devnull .BR > ,
534 cfa37a7b 2004-04-10 devnull .B stderr
535 cfa37a7b 2004-04-10 devnull for all) is placed in
536 cfa37a7b 2004-04-10 devnull .B /tmp/sam.err
537 cfa37a7b 2004-04-10 devnull and the first few lines are printed.
538 cfa37a7b 2004-04-10 devnull .SS Loops and Conditionals
539 cfa37a7b 2004-04-10 devnull .PD 0
540 cfa37a7b 2004-04-10 devnull .TP
541 cfa37a7b 2004-04-10 devnull .BI x/ regexp / " command
542 cfa37a7b 2004-04-10 devnull For each match of the regular expression in the range, run the command
543 cfa37a7b 2004-04-10 devnull with dot set to the match.
544 cfa37a7b 2004-04-10 devnull Set dot to the last match.
545 cfa37a7b 2004-04-10 devnull If the regular
546 bfe4377e 2020-05-19 rsc expression and its slashes are omitted,
547 cfa37a7b 2004-04-10 devnull .L /.*\en/
548 cfa37a7b 2004-04-10 devnull is assumed.
549 cfa37a7b 2004-04-10 devnull Null string matches potentially occur before every character
550 cfa37a7b 2004-04-10 devnull of the range and at the end of the range.
551 cfa37a7b 2004-04-10 devnull .TP
552 cfa37a7b 2004-04-10 devnull .BI y/ regexp / " command
553 cfa37a7b 2004-04-10 devnull Like
554 cfa37a7b 2004-04-10 devnull .BR x ,
555 cfa37a7b 2004-04-10 devnull but run the command for each substring that lies before, between,
556 cfa37a7b 2004-04-10 devnull or after
557 cfa37a7b 2004-04-10 devnull the matches that would be generated by
558 cfa37a7b 2004-04-10 devnull .BR x .
559 cfa37a7b 2004-04-10 devnull There is no default regular expression.
560 cfa37a7b 2004-04-10 devnull Null substrings potentially occur before every character
561 cfa37a7b 2004-04-10 devnull in the range.
562 cfa37a7b 2004-04-10 devnull .TP
563 cfa37a7b 2004-04-10 devnull .BI \*aX/ regexp / " command
564 cfa37a7b 2004-04-10 devnull For each file whose menu entry matches the regular expression,
565 cfa37a7b 2004-04-10 devnull make that the current file and
566 cfa37a7b 2004-04-10 devnull run the command.
567 cfa37a7b 2004-04-10 devnull If the expression is omitted, the command is run
568 cfa37a7b 2004-04-10 devnull in every file.
569 cfa37a7b 2004-04-10 devnull .TP
570 cfa37a7b 2004-04-10 devnull .BI \*aY/ regexp / " command
571 cfa37a7b 2004-04-10 devnull Same as
572 cfa37a7b 2004-04-10 devnull .BR X ,
573 cfa37a7b 2004-04-10 devnull but for files that do not match the regular expression,
574 cfa37a7b 2004-04-10 devnull and the expression is required.
575 cfa37a7b 2004-04-10 devnull .TP
576 cfa37a7b 2004-04-10 devnull .BI g/ regexp / " command
577 cfa37a7b 2004-04-10 devnull .br
578 cfa37a7b 2004-04-10 devnull .ns
579 cfa37a7b 2004-04-10 devnull .TP
580 cfa37a7b 2004-04-10 devnull .BI v/ regexp / " command
581 cfa37a7b 2004-04-10 devnull If the range contains
582 cfa37a7b 2004-04-10 devnull .RB ( g )
583 cfa37a7b 2004-04-10 devnull or does not contain
584 cfa37a7b 2004-04-10 devnull .RB ( v )
585 cfa37a7b 2004-04-10 devnull a match for the expression,
586 cfa37a7b 2004-04-10 devnull set dot to the range and run the command.
587 cfa37a7b 2004-04-10 devnull .PP
588 cfa37a7b 2004-04-10 devnull These may be nested arbitrarily deeply, but only one instance of either
589 cfa37a7b 2004-04-10 devnull .B X
590 cfa37a7b 2004-04-10 devnull or
591 cfa37a7b 2004-04-10 devnull .B Y
592 cfa37a7b 2004-04-10 devnull may appear in a \%single command.
593 cfa37a7b 2004-04-10 devnull An empty command in an
594 cfa37a7b 2004-04-10 devnull .B x
595 cfa37a7b 2004-04-10 devnull or
596 cfa37a7b 2004-04-10 devnull .B y
597 cfa37a7b 2004-04-10 devnull defaults to
598 cfa37a7b 2004-04-10 devnull .BR p ;
599 cfa37a7b 2004-04-10 devnull an empty command in
600 cfa37a7b 2004-04-10 devnull .B X
601 cfa37a7b 2004-04-10 devnull or
602 cfa37a7b 2004-04-10 devnull .B Y
603 cfa37a7b 2004-04-10 devnull defaults to
604 cfa37a7b 2004-04-10 devnull .BR f .
605 cfa37a7b 2004-04-10 devnull .B g
606 cfa37a7b 2004-04-10 devnull and
607 cfa37a7b 2004-04-10 devnull .B v
608 cfa37a7b 2004-04-10 devnull do not have defaults.
609 cfa37a7b 2004-04-10 devnull .PD
610 cfa37a7b 2004-04-10 devnull .SS Miscellany
611 cfa37a7b 2004-04-10 devnull .TF (empty)
612 cfa37a7b 2004-04-10 devnull .TP
613 cfa37a7b 2004-04-10 devnull .B k
614 cfa37a7b 2004-04-10 devnull Set the current file's mark to the range. Does not set dot.
615 cfa37a7b 2004-04-10 devnull .TP
616 cfa37a7b 2004-04-10 devnull .B \*aq
617 cfa37a7b 2004-04-10 devnull Quit.
618 cfa37a7b 2004-04-10 devnull It is an error to quit with modified files, but a second
619 cfa37a7b 2004-04-10 devnull .B q
620 cfa37a7b 2004-04-10 devnull will succeed.
621 cfa37a7b 2004-04-10 devnull .TP
622 cfa37a7b 2004-04-10 devnull .BI \*au " n
623 cfa37a7b 2004-04-10 devnull Undo the last
624 cfa37a7b 2004-04-10 devnull .I n
625 cfa37a7b 2004-04-10 devnull (default 1)
626 cfa37a7b 2004-04-10 devnull top-level commands that changed the contents or name of the
627 cfa37a7b 2004-04-10 devnull current file, and any other file whose most recent change was simultaneous
628 cfa37a7b 2004-04-10 devnull with the current file's change.
629 cfa37a7b 2004-04-10 devnull Successive
630 cfa37a7b 2004-04-10 devnull .BR u 's
631 cfa37a7b 2004-04-10 devnull move further back in time.
632 cfa37a7b 2004-04-10 devnull The only commands for which u is ineffective are
633 cfa37a7b 2004-04-10 devnull .BR cd ,
634 cfa37a7b 2004-04-10 devnull .BR u ,
635 cfa37a7b 2004-04-10 devnull .BR q ,
636 cfa37a7b 2004-04-10 devnull .B w
637 cfa37a7b 2004-04-10 devnull and
638 cfa37a7b 2004-04-10 devnull .BR D .
639 cfa37a7b 2004-04-10 devnull If
640 cfa37a7b 2004-04-10 devnull .I n
641 cfa37a7b 2004-04-10 devnull is negative,
642 cfa37a7b 2004-04-10 devnull .B u
643 cfa37a7b 2004-04-10 devnull `redoes,' undoing the undo, going forwards in time again.
644 cfa37a7b 2004-04-10 devnull .TP
645 cfa37a7b 2004-04-10 devnull (empty)
646 cfa37a7b 2004-04-10 devnull If the range is explicit, set dot to the range.
647 cfa37a7b 2004-04-10 devnull If
648 cfa37a7b 2004-04-10 devnull .I sam
649 cfa37a7b 2004-04-10 devnull is downloaded, the resulting dot is selected on the screen;
650 cfa37a7b 2004-04-10 devnull otherwise it is printed.
651 cfa37a7b 2004-04-10 devnull If no address is specified (the
652 cfa37a7b 2004-04-10 devnull command is a newline) dot is extended in either direction to
653 cfa37a7b 2004-04-10 devnull line boundaries and printed.
654 cfa37a7b 2004-04-10 devnull If dot is thereby unchanged, it is set to
655 bfe4377e 2020-05-19 rsc .B .+1
656 cfa37a7b 2004-04-10 devnull and printed.
657 cfa37a7b 2004-04-10 devnull .PD
658 cfa37a7b 2004-04-10 devnull .SS Grouping and multiple changes
659 cfa37a7b 2004-04-10 devnull Commands may be grouped by enclosing them in braces
660 cfa37a7b 2004-04-10 devnull .BR {} .
661 cfa37a7b 2004-04-10 devnull Commands within the braces must appear on separate lines (no backslashes are
662 cfa37a7b 2004-04-10 devnull required between commands).
663 cfa37a7b 2004-04-10 devnull Semantically, an opening brace is like a command:
664 cfa37a7b 2004-04-10 devnull it takes an (optional) address and sets dot for each sub-command.
665 cfa37a7b 2004-04-10 devnull Commands within the braces are executed sequentially, but changes made
666 cfa37a7b 2004-04-10 devnull by one command are not visible to other commands (see the next
667 cfa37a7b 2004-04-10 devnull paragraph).
668 cfa37a7b 2004-04-10 devnull Braces may be nested arbitrarily.
669 cfa37a7b 2004-04-10 devnull .PP
670 cfa37a7b 2004-04-10 devnull When a command makes a number of changes to a file, as in
671 cfa37a7b 2004-04-10 devnull .BR x/re/c/text/ ,
672 cfa37a7b 2004-04-10 devnull the addresses of all changes to the file are computed in the original file.
673 cfa37a7b 2004-04-10 devnull If the changes are in sequence,
674 cfa37a7b 2004-04-10 devnull they are applied to the file.
675 cfa37a7b 2004-04-10 devnull Successive insertions at the same address are catenated into a single
676 cfa37a7b 2004-04-10 devnull insertion composed of the several insertions in the order applied.
677 cfa37a7b 2004-04-10 devnull .SS The terminal
678 cfa37a7b 2004-04-10 devnull What follows refers to behavior of
679 cfa37a7b 2004-04-10 devnull .I sam
680 cfa37a7b 2004-04-10 devnull when downloaded, that is, when
681 cfa37a7b 2004-04-10 devnull operating as a display editor on a raster display.
682 cfa37a7b 2004-04-10 devnull This is the default
683 cfa37a7b 2004-04-10 devnull behavior; invoking
684 cfa37a7b 2004-04-10 devnull .I sam
685 cfa37a7b 2004-04-10 devnull with the
686 cfa37a7b 2004-04-10 devnull .B -d
687 cfa37a7b 2004-04-10 devnull (no download) option provides access
688 cfa37a7b 2004-04-10 devnull to the command language only.
689 cfa37a7b 2004-04-10 devnull .PP
690 cfa37a7b 2004-04-10 devnull Each file may have zero or more windows open.
691 cfa37a7b 2004-04-10 devnull Each window is equivalent
692 cfa37a7b 2004-04-10 devnull and is updated simultaneously with changes in other windows on the same file.
693 cfa37a7b 2004-04-10 devnull Each window has an independent value of dot, indicated by a highlighted
694 cfa37a7b 2004-04-10 devnull substring on the display.
695 cfa37a7b 2004-04-10 devnull Dot may be in a region not within
696 cfa37a7b 2004-04-10 devnull the window.
697 cfa37a7b 2004-04-10 devnull There is usually a `current window',
698 cfa37a7b 2004-04-10 devnull marked with a dark border, to which typed text and editing
699 cfa37a7b 2004-04-10 devnull commands apply.
700 cfa37a7b 2004-04-10 devnull Text may be typed and edited as in
701 d32deab1 2020-08-16 rsc .MR rio (1) ;
702 cfa37a7b 2004-04-10 devnull also the escape key (ESC) selects (sets dot to) text typed
703 cfa37a7b 2004-04-10 devnull since the last mouse button hit.
704 cfa37a7b 2004-04-10 devnull .PP
705 cfa37a7b 2004-04-10 devnull The button 3 menu controls window operations.
706 cfa37a7b 2004-04-10 devnull The top of the menu
707 cfa37a7b 2004-04-10 devnull provides the following operators, each of which uses one or
708 cfa37a7b 2004-04-10 devnull more
709 cfa37a7b 2004-04-10 devnull .IR rio -like
710 cfa37a7b 2004-04-10 devnull cursors to prompt for selection of a window or sweeping
711 cfa37a7b 2004-04-10 devnull of a rectangle.
712 cfa37a7b 2004-04-10 devnull `Sweeping' a null rectangle gets a large window, disjoint
713 cfa37a7b 2004-04-10 devnull from the command window or the whole screen, depending on
714 cfa37a7b 2004-04-10 devnull where the null rectangle is.
715 cfa37a7b 2004-04-10 devnull .TF resize
716 bfe4377e 2020-05-19 rsc .TP
717 cfa37a7b 2004-04-10 devnull .B new
718 cfa37a7b 2004-04-10 devnull Create a new, empty file.
719 cfa37a7b 2004-04-10 devnull .TP
720 cfa37a7b 2004-04-10 devnull .B zerox
721 cfa37a7b 2004-04-10 devnull Create a copy of an existing window.
722 cfa37a7b 2004-04-10 devnull .TP
723 cfa37a7b 2004-04-10 devnull .B resize
724 cfa37a7b 2004-04-10 devnull As in
725 cfa37a7b 2004-04-10 devnull .IR rio .
726 cfa37a7b 2004-04-10 devnull .TP
727 cfa37a7b 2004-04-10 devnull .B close
728 cfa37a7b 2004-04-10 devnull Delete the window.
729 cfa37a7b 2004-04-10 devnull In the last window of a file,
730 cfa37a7b 2004-04-10 devnull .B close
731 cfa37a7b 2004-04-10 devnull is equivalent to a
732 cfa37a7b 2004-04-10 devnull .B D
733 cfa37a7b 2004-04-10 devnull for the file.
734 cfa37a7b 2004-04-10 devnull .TP
735 cfa37a7b 2004-04-10 devnull .B write
736 cfa37a7b 2004-04-10 devnull Equivalent to a
737 cfa37a7b 2004-04-10 devnull .B w
738 cfa37a7b 2004-04-10 devnull for the file.
739 cfa37a7b 2004-04-10 devnull .PD
740 cfa37a7b 2004-04-10 devnull .PP
741 cfa37a7b 2004-04-10 devnull Below these operators is a list of available files, starting with
742 cfa37a7b 2004-04-10 devnull .BR ~~sam~~ ,
743 cfa37a7b 2004-04-10 devnull the command window.
744 cfa37a7b 2004-04-10 devnull Selecting a file from the list makes the most recently
745 cfa37a7b 2004-04-10 devnull used window on that file current, unless it is already current, in which
746 cfa37a7b 2004-04-10 devnull case selections cycle through the open windows.
747 cfa37a7b 2004-04-10 devnull If no windows are open
748 cfa37a7b 2004-04-10 devnull on the file, the user is prompted to open one.
749 cfa37a7b 2004-04-10 devnull Files other than
750 cfa37a7b 2004-04-10 devnull .B ~~sam~~
751 cfa37a7b 2004-04-10 devnull are marked with one of the characters
752 cfa37a7b 2004-04-10 devnull .B -+*
753 cfa37a7b 2004-04-10 devnull according as zero, one, or more windows
754 cfa37a7b 2004-04-10 devnull are open on the file.
755 cfa37a7b 2004-04-10 devnull A further mark
756 cfa37a7b 2004-04-10 devnull .L .
757 cfa37a7b 2004-04-10 devnull appears on the file in the current window and
758 cfa37a7b 2004-04-10 devnull a single quote,
759 cfa37a7b 2004-04-10 devnull .BR ' ,
760 cfa37a7b 2004-04-10 devnull on a file modified since last write.
761 cfa37a7b 2004-04-10 devnull .PP
762 cfa37a7b 2004-04-10 devnull The command window, created automatically when
763 cfa37a7b 2004-04-10 devnull .B sam
764 cfa37a7b 2004-04-10 devnull starts, is an ordinary window except that text typed to it
765 cfa37a7b 2004-04-10 devnull is interpreted as commands for the editor rather than passive text,
766 cfa37a7b 2004-04-10 devnull and text printed by editor commands appears in it.
767 cfa37a7b 2004-04-10 devnull The behavior is like
768 cfa37a7b 2004-04-10 devnull .IR rio ,
769 cfa37a7b 2004-04-10 devnull with an `output point' that separates commands being typed from
770 cfa37a7b 2004-04-10 devnull previous output.
771 cfa37a7b 2004-04-10 devnull Commands typed in the command window apply to the
772 cfa37a7b 2004-04-10 devnull current open file\(emthe file in the most recently
773 cfa37a7b 2004-04-10 devnull current window.
774 cfa37a7b 2004-04-10 devnull .SS Manipulating text
775 cfa37a7b 2004-04-10 devnull Button 1 changes selection, much like
776 cfa37a7b 2004-04-10 devnull .IR rio .
777 cfa37a7b 2004-04-10 devnull Pointing to a non-current window with button 1 makes it current;
778 cfa37a7b 2004-04-10 devnull within the current window, button 1 selects text, thus setting dot.
779 cfa37a7b 2004-04-10 devnull Double-clicking selects text to the boundaries of words, lines,
780 cfa37a7b 2004-04-10 devnull quoted strings or bracketed strings, depending on the text at the click.
781 cfa37a7b 2004-04-10 devnull .PP
782 cfa37a7b 2004-04-10 devnull Button 2 provides a menu of editing commands:
783 cfa37a7b 2004-04-10 devnull .TF /regexp
784 cfa37a7b 2004-04-10 devnull .TP
785 cfa37a7b 2004-04-10 devnull .B cut
786 cfa37a7b 2004-04-10 devnull Delete dot and save the deleted text in the snarf buffer.
787 cfa37a7b 2004-04-10 devnull .TP
788 cfa37a7b 2004-04-10 devnull .B paste
789 cfa37a7b 2004-04-10 devnull Replace the text in dot by the contents of the snarf buffer.
790 cfa37a7b 2004-04-10 devnull .TP
791 cfa37a7b 2004-04-10 devnull .B snarf
792 cfa37a7b 2004-04-10 devnull Save the text in dot in the snarf buffer.
793 cfa37a7b 2004-04-10 devnull .TP
794 cfa37a7b 2004-04-10 devnull .B plumb
795 cfa37a7b 2004-04-10 devnull Send the text in the selection as a plumb
796 cfa37a7b 2004-04-10 devnull message. If the selection is empty,
797 cfa37a7b 2004-04-10 devnull the white-space-delimited block of text is sent as a plumb message
798 cfa37a7b 2004-04-10 devnull with a
799 cfa37a7b 2004-04-10 devnull .B click
800 cfa37a7b 2004-04-10 devnull attribute defining where the selection lies (see
801 d32deab1 2020-08-16 rsc .MR plumb (7) ).
802 cfa37a7b 2004-04-10 devnull .TP
803 cfa37a7b 2004-04-10 devnull .B look
804 cfa37a7b 2004-04-10 devnull Search forward for the next occurrence of the literal text in dot.
805 cfa37a7b 2004-04-10 devnull If dot is the null string, the text in the snarf buffer is
806 cfa37a7b 2004-04-10 devnull used.
807 cfa37a7b 2004-04-10 devnull The snarf buffer is unaffected.
808 cfa37a7b 2004-04-10 devnull .TP
809 cfa37a7b 2004-04-10 devnull .B <rio>
810 cfa37a7b 2004-04-10 devnull Exchange snarf buffers with
811 cfa37a7b 2004-04-10 devnull .IR rio .
812 cfa37a7b 2004-04-10 devnull .TP
813 cfa37a7b 2004-04-10 devnull .BI / regexp
814 cfa37a7b 2004-04-10 devnull Search forward for the next match of the last regular expression
815 cfa37a7b 2004-04-10 devnull typed in a command.
816 cfa37a7b 2004-04-10 devnull (Not in command window.)
817 cfa37a7b 2004-04-10 devnull .TP
818 cfa37a7b 2004-04-10 devnull .B send
819 cfa37a7b 2004-04-10 devnull Send the text in dot, or the snarf buffer if
820 cfa37a7b 2004-04-10 devnull dot is the null string, as if it were typed to the command window.
821 cfa37a7b 2004-04-10 devnull Saves the sent text in the snarf buffer.
822 bfe4377e 2020-05-19 rsc (Command window only.)
823 cfa37a7b 2004-04-10 devnull .PD
824 35abfa1b 2017-07-16 rsc .SS Simulated buttons
825 35abfa1b 2017-07-16 rsc For systems without a three-button mouse, the keyboard modifier
826 35abfa1b 2017-07-16 rsc keys can be used to modify the effect of the main mouse button.
827 35abfa1b 2017-07-16 rsc On Unix systems, the Control key changes the main button to button 2,
828 35abfa1b 2017-07-16 rsc and the Alt key changes it to button 3.
829 35abfa1b 2017-07-16 rsc On Mac systems, the Option key changes the main button to button 2,
830 35abfa1b 2017-07-16 rsc and the Command key changes it to button 3.
831 35abfa1b 2017-07-16 rsc Also on Mac systems, the usual keyboard shortcuts
832 35abfa1b 2017-07-16 rsc Command-C, -V, and -X invoke
833 35abfa1b 2017-07-16 rsc copy, paste, and cut,
834 35abfa1b 2017-07-16 rsc as in other programs.
835 cfa37a7b 2004-04-10 devnull .SS External communication
836 cfa37a7b 2004-04-10 devnull .I Sam
837 cfa37a7b 2004-04-10 devnull listens to the
838 cfa37a7b 2004-04-10 devnull .B edit
839 cfa37a7b 2004-04-10 devnull plumb port.
840 cfa37a7b 2004-04-10 devnull If plumbing is not active,
841 cfa37a7b 2004-04-10 devnull on invocation
842 cfa37a7b 2004-04-10 devnull .I sam
843 cfa37a7b 2004-04-10 devnull creates a named pipe
844 cfa37a7b 2004-04-10 devnull .BI /srv/sam. user
845 cfa37a7b 2004-04-10 devnull which acts as an additional source of commands. Characters written to
846 cfa37a7b 2004-04-10 devnull the named pipe are treated as if they had been typed in the command window.
847 cfa37a7b 2004-04-10 devnull .PP
848 cfa37a7b 2004-04-10 devnull .I B
849 cfa37a7b 2004-04-10 devnull is a shell-level command that causes an instance of
850 cfa37a7b 2004-04-10 devnull .I sam
851 cfa37a7b 2004-04-10 devnull running on the same terminal to load the named
852 cfa37a7b 2004-04-10 devnull .IR files .
853 cfa37a7b 2004-04-10 devnull .I B
854 cfa37a7b 2004-04-10 devnull uses either plumbing or the named pipe, whichever service is available.
855 cfa37a7b 2004-04-10 devnull If plumbing is not enabled,
856 cfa37a7b 2004-04-10 devnull the option allows a line number to be specified for
857 cfa37a7b 2004-04-10 devnull the initial position to display in the last named file
858 cfa37a7b 2004-04-10 devnull (plumbing provides a more general mechanism for this ability).
859 058b0118 2005-01-03 devnull .PP
860 058b0118 2005-01-03 devnull .I E
861 058b0118 2005-01-03 devnull is a shell-level command that can be used as
862 058b0118 2005-01-03 devnull .B $EDITOR
863 058b0118 2005-01-03 devnull in a Unix environment.
864 058b0118 2005-01-03 devnull It runs
865 058b0118 2005-01-03 devnull .I B
866 058b0118 2005-01-03 devnull on
867 058b0118 2005-01-03 devnull .I file
868 c8b6342d 2005-01-13 devnull and then does not exit until
869 058b0118 2005-01-03 devnull .I file
870 058b0118 2005-01-03 devnull is changed, which is taken as a signal that
871 058b0118 2005-01-03 devnull .I file
872 058b0118 2005-01-03 devnull is done being edited.
873 cfa37a7b 2004-04-10 devnull .SS Abnormal termination
874 cfa37a7b 2004-04-10 devnull If
875 cfa37a7b 2004-04-10 devnull .I sam
876 cfa37a7b 2004-04-10 devnull terminates other than by a
877 cfa37a7b 2004-04-10 devnull .B q
878 cfa37a7b 2004-04-10 devnull command (by hangup, deleting its window, etc.), modified
879 cfa37a7b 2004-04-10 devnull files are saved in an
880 cfa37a7b 2004-04-10 devnull executable file,
881 c8b6342d 2005-01-13 devnull .BR $HOME/sam.save .
882 cfa37a7b 2004-04-10 devnull This program, when executed, asks whether to write
883 cfa37a7b 2004-04-10 devnull each file back to a external file.
884 cfa37a7b 2004-04-10 devnull The answer
885 cfa37a7b 2004-04-10 devnull .L y
886 cfa37a7b 2004-04-10 devnull causes writing; anything else skips the file.
887 cfa37a7b 2004-04-10 devnull .SH FILES
888 c8b6342d 2005-01-13 devnull .TF $HOME/sam.save
889 cfa37a7b 2004-04-10 devnull .TP
890 c8b6342d 2005-01-13 devnull .B $HOME/sam.save
891 cfa37a7b 2004-04-10 devnull .TP
892 c8b6342d 2005-01-13 devnull .B $HOME/sam.err
893 c8b6342d 2005-01-13 devnull .TP
894 c3674de4 2005-01-11 devnull .B \*9/bin/samsave
895 cfa37a7b 2004-04-10 devnull the program called to unpack
896 c8b6342d 2005-01-13 devnull .BR $HOME/sam.save .
897 cfa37a7b 2004-04-10 devnull .SH SOURCE
898 c3674de4 2005-01-11 devnull .TF \*9/src/cmd/samterm
899 cfa37a7b 2004-04-10 devnull .TP
900 c3674de4 2005-01-11 devnull .B \*9/src/cmd/sam
901 cfa37a7b 2004-04-10 devnull source for
902 cfa37a7b 2004-04-10 devnull .I sam
903 cfa37a7b 2004-04-10 devnull itself
904 cfa37a7b 2004-04-10 devnull .TP
905 c3674de4 2005-01-11 devnull .B \*9/src/cmd/samterm
906 cfa37a7b 2004-04-10 devnull source for the separate terminal part
907 cfa37a7b 2004-04-10 devnull .TP
908 c3674de4 2005-01-11 devnull .B \*9/bin/B
909 c8b6342d 2005-01-13 devnull .TP
910 c8b6342d 2005-01-13 devnull .B \*9/bin/E
911 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
912 d32deab1 2020-08-16 rsc .MR ed (1) ,
913 d32deab1 2020-08-16 rsc .MR sed (1) ,
914 d32deab1 2020-08-16 rsc .MR grep (1) ,
915 d32deab1 2020-08-16 rsc .MR rio (1) ,
916 d32deab1 2020-08-16 rsc .MR regexp (7) .
917 cfa37a7b 2004-04-10 devnull .PP
918 cfa37a7b 2004-04-10 devnull Rob Pike,
919 cfa37a7b 2004-04-10 devnull ``The text editor sam''.