|
|
1.1 root 1: .TH JIM 9.1
2: .SH NAME
3: jim, jim.recover \- text editor
4: .SH SYNOPSIS
5: .B jim
6: [
7: .I file ...
8: ]
9: .br
10: .B jim.recover
11: [
12: .B -f
13: ]
14: [
15: .B -t
16: ]
17: [
18: .I file ...
19: ]
20: .SH DESCRIPTION
21: .I Jim
22: is an old text editor for the jerq terminal.
23: It relies on the mouse to select text and commands.
24: It runs only under
25: .IR mux (9.1).
26: .IR Jim 's
27: screen consists of a number of
28: .IR frames ,
29: a one-line command and diagnostic frame at the bottom
30: and zero or more larger file frames above it.
31: Except where indicated, these frames behave identically.
32: One of the frames is always the current frame,
33: to which typing and editing commands refer,
34: and one of the file frames is the working frame,
35: to which file commands such as pattern searching and IO refer.
36: .PP
37: A frame has at any time a selected region of text,
38: indicated by reverse video highlighting.
39: The selected region may be a null string between two characters,
40: indicated by a narrow vertical bar between the characters.
41: The editor has a single
42: `save buffer'
43: containing an arbitrary string.
44: The editing commands invoke transformers between the
45: selected region and the save buffer.
46: .PP
47: The mouse buttons are used for the most common operations.
48: Button 1 (left) is used for selection.
49: Clicking button 1 in a frame
50: which is not the current frame makes the indicated frame current.
51: Clicking button 1 in the current frame selects the null string closest
52: to the mouse cursor.
53: Making the same null selection twice (`double clicking') selects
54: (in decreasing precedence) the bracketed or quoted string, word or line
55: enclosing the selection.
56: By pushing and holding button 1, an arbitrary contiguous visible string
57: may be selected.
58: Button 2 provides a small menu of text manipulation functions, described below.
59: Button 3 provides control for inter-frame operations.
60: .PP
61: The button 2 menu entries are:
62: .TP .7i
63: .B cut
64: Copy the selected text to the save buffer and delete it from the frame.
65: If the selected text is null, the save buffer is unaffected.
66: .TP
67: .B paste
68: Replace the selected text by the contents of the save buffer.
69: .TP
70: .B snarf
71: Copy the selected text to the save buffer.
72: If the selected text is null, the save buffer is unaffected.
73: .TP
74: .B look
75: Search forward for the next occurrence of
76: the selected text or, if the selection is null,
77: to the next occurrence of the text in the save buffer.
78: .TP
79: .B <mux>
80: Exchange save buffers with
81: .IR mux .
82: .PP
83: Also stored on the button 2 menu are the last Unix command and last
84: search string typed (see below); these may be selected to repeat the action.
85: .PP
86: Typing
87: replaces the selected text with the typed text.
88: If the selected text is not null,
89: the first character typed forces an implicit
90: .BR cut .
91: Control characters are discarded, but
92: BS
93: .RB (control- H ),
94: ETB
95: .RB (control- W )
96: and ESC have special meanings.
97: BS is the usual backspace character, which erases the character
98: before the selected text (which is a null string when it takes effect).
99: ETB erases back to the word boundary preceding the selected text.
100: There is no line kill character.
101: ESC selects the text typed since the last button hit or ESC.
102: If an ESC is typed immediately after a button hit or ESC,
103: it is identical to a
104: .BR cut .
105: ESC and
106: .B paste
107: provide the functionality for a simple undo feature.
108: .PP
109: The button 3 menu entries are:
110: .TP
111: .B new
112: Create a new frame, much as in
113: .IR mux .
114: .TP
115: .B reshape
116: Change the shape of the indicated frame, as in
117: .IR mux .
118: The frame is indicated by a button 3 hit after the selection.
119: .TP
120: .B close
121: Close the indicated frame and its associated file.
122: .TP
123: .B write
124: Write the indicated frame's contents to its associated file.
125: .PP
126: The rest of the menu is a list of file names available for editing.
127: To work in a different file, select the file from the menu.
128: If the file is not open on the screen, the cursor will switch to an
129: outline box to prompt for a rectangle to be swept out with button 3,
130: as in the New operator of
131: .IR mux .
132: (Unlike
133: .IR mux ,
134: there is a shorthand: sweeping the empty rectangle creates the largest
135: possible rectangle.)
136: The file is not read until its frame is first opened.
137: If the file is already open, it will simply be made the workframe and
138: current frame (for typing).
139: The format of the lines in the menu is
140: .TP
141: -
142: possibly an apostrophe, indicating that the file has been modified since
143: last written,
144: .TP
145: -
146: possibly a period or asterisk, indicating the file is open (asterisk) or
147: the workframe (period),
148: .TP
149: -
150: a blank,
151: .TP
152: -
153: and the file name.
154: The file name may be abbreviated by compacting path components to keep
155: the menu manageable, but the last component will always be complete.
156: .PP
157: The work frame has a
158: `scroll bar'\(ema black vertical bar down the left edge.
159: A small tick in the bar indicates the relative position of the frame
160: within the file.
161: Pointing to the scroll bar and clicking a button controls scrolling
162: operations in the file:
163: .TP 1i
164: button 1
165: Move the line at the top of the screen to the
166: .I y
167: position of the mouse.
168: .TP
169: button 2
170: Move to the absolute position in the file indicated by the y position of the mouse.
171: .TP
172: button 3
173: Move the line at the
174: .I y
175: position of the mouse to the top of the screen.
176: .PP
177: The bottom line frame is used for a few typed commands, modeled on
178: .IR ed (1),
179: which operate on the work frame.
180: When a carriage return is typed in the bottom line,
181: the line is interpreted as a command.
182: The bottom line scrolls, but only
183: when the first character of the next line is typed.
184: Thus, typically, after some message appears in the bottom line,
185: a command need only be typed;
186: the previous contents of the line will be automatically cleared.
187: The commands available are:
188: .TP
189: .BI e " file"
190: Edit the named
191: .IR file ,
192: or use the current file name if none specified.
193: Note that each file frame has an associated file name.
194: .TP
195: .BI f " file"
196: Set the name of the
197: file associated with the work frame, if one is specified,
198: and display the result.
199: .TP
200: .BI g " file ..."
201: Enter the named
202: .I files
203: into the filename menu, without duplication,
204: and set the work frame to one of the named files.
205: If the new work frame's file is not open, the user is prompted to create its frame.
206: The arguments to
207: .B g
208: are passed through
209: .IR echo (1)
210: for shell metacharacter interpretation.
211: .TP
212: .BI w " file"
213: Write the named
214: .IR file ,
215: or use the current file name if none specified.
216: The special command
217: .IR w \(aa
218: writes all modified files with file names.
219: .TP
220: .B q
221: Quit the editor.
222: .TP
223: .B =
224: Print the line number of the beginning of the selected text.
225: .TP
226: .B /
227: Search forward for the string matching the regular expression after the slash.
228: If found, the matching text is selected.
229: The regular expressions are exactly as in
230: .IR egrep (1),
231: with two additions: the character
232: .L @
233: matches any character, including
234: newline, and the sequence
235: .L \en
236: specifies a newline, even in character classes.
237: The negation of a character class does not match a newline.
238: An empty regular expression (slash-newline) repeats the last regular expression.
239: .TP
240: .B ?
241: Search backwards for the expression after the query.
242: .TP
243: .B 94
244: Select the text of line 94, as in
245: .IR ed .
246: .TP
247: .B cd
248: Set the working directory, as in the shell.
249: There is no
250: .B CDPATH
251: search.
252: .TP
253: .BI > command
254: Send the selected text to the standard input of the Unix
255: .IR command .
256: .TP
257: .B < command
258: Replace the selected text by the standard output of the Unix
259: .IR command .
260: .TP
261: .B | command
262: Replace the selected text by the standard output of the Unix
263: .IR command,
264: given the original selected text as standard input.
265: .PP
266: If any of
267: .B < > |
268: is preceded by an asterisk
269: .BR * ,
270: the command is applied to the entire file, instead of just the selected text.
271: If the command for
272: .B <
273: or
274: .B |
275: exits with non-zero status, the original text
276: is not deleted; otherwise, the new text is selected.
277: Finally, the standard error output of the command, which is merged with the
278: standard output for
279: .BR > ,
280: is saved in the file
281: .FR $HOME/jim.err .
282: If the file is non-empty when the command completes, the first line is
283: displayed in the diagnostic frame.
284: Therefore the command
285: .L >pwd
286: will report
287: .I jim 's
288: current directory.
289: .PP
290: Attempts to quit with modified files, or edit a new file
291: in a modified frame, are rejected.
292: A second
293: .L q
294: or
295: .L e
296: command will succeed.
297: The
298: .L Q
299: or
300: .L E
301: commands ignore modifications and work immediately.
302: Some consistency checks are performed for the
303: .L w
304: command.
305: .I Jim
306: will reject write requests which it considers dangerous
307: (such as writes which would change a file modified since
308: .I jim
309: read it into its memory).
310: A second
311: .L w
312: will always write the file.
313: .PP
314: If
315: .I jim
316: receives a hangup signal, it writes a file
317: .FR $HOME/jim.recover ,
318: which is a shell command file that, when executed, will retrieve
319: the files that were modified when
320: .I jim
321: exited.
322: The
323: .B -t
324: option prints a table of contents, but does not unpack the files.
325: By default,
326: .I jim.recover
327: is interactive; the
328: .B -f
329: option suppresses the interaction.
330: If no files are named to
331: .FR jim.recover ,
332: it will recover all the saved files.
333: .SH FILES
334: .F $HOME/jim.err
335: .br
336: .F $HOME/jim.recover
337: .SH BUGS
338: The regular expression matcher is non-deterministic,
339: and may be slow for spectacular expressions.
340: .br
341: When reshaped, the open frames must be re-opened manually.
342: .br
343: The
344: .B <
345: and
346: .B |
347: operators should snarf the original text.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.