|
|
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.