home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume8 / jove / part09 < prev    next >
Encoding:
Internet Message Format  |  1987-02-03  |  52.1 KB

  1. Subject:  v08i028:  The JOVE text editor, Part09/13
  2. Newsgroups: mod.sources
  3. Approved: mirror!rs
  4.  
  5. Submitted by: seismo!rochester!jpayne (Jonathan Payne)
  6. Mod.sources: Volume 8, Issue 28
  7. Archive-name: jove/Part09
  8.  
  9. #! /bin/sh
  10. # This is a shell archive.  Remove anything before this line,
  11. # then unpack it by saving it in a file and typing "sh file".
  12. # If all goes well, you will see the message "End of archive 9 (of 13)."
  13. # Contents:  doc/jove.1 doc/jove.nr
  14. PATH=/bin:/usr/bin:/usr/ucb; export PATH
  15. echo shar: extracting "'doc/jove.1'" '(41172 characters)'
  16. if test -f 'doc/jove.1' ; then 
  17.   echo shar: will not over-write existing file "'doc/jove.1'"
  18. else
  19. sed 's/^X//' >doc/jove.1 <<'@//E*O*F doc/jove.1//'
  20. X.\" ditroff -ms
  21. X.de IQ
  22. X\\fI\\$1\\fP
  23. X..
  24. X.de dc
  25. X.NH 2
  26. X\\$1
  27. X.if '\\$2'(variable)' (variable)
  28. X.if !'\\$2'(variable)' (\\$2)
  29. X.LP
  30. X..
  31. X.nr LL 6.5i
  32. X.nr LT 6.5i
  33. X.EH 'USD:17-%''JOVE Manual for UNIX Users'
  34. X.OH 'JOVE Manual for UNIX Users''USD:17-%'
  35. X.LP
  36. X.TL
  37. XJOVE Manual for UNIX Users
  38. X.AU
  39. XJonathan Payne
  40. X(revised for 4.3BSD by Doug Kingston and Mark Seiden)
  41. X.AI
  42. X.AB no
  43. X.AE
  44. X.NH 1
  45. XIntroduction
  46. X.XS \n(PN
  47. X\*(SN Introduction
  48. X.XE
  49. X.LP
  50. X\s-2JOVE\s0*
  51. X.FS
  52. X*\s-2JOVE\s0 stands for Jonathan's Own Version of Emacs.
  53. X.FE
  54. Xis an advanced, self-documenting, customizable real-time display editor.
  55. XIt (and this tutorial introduction) are based on the original EMACS
  56. Xeditor and user manual written at M.I.T. by Richard Stallman+.
  57. X.FS
  58. X+Although \s-2JOVE\s0 is meant to be compatible with EMACS,
  59. Xand indeed many of the basic commands are very similar,
  60. Xthere are some major differences between the two editors,
  61. Xand you should not rely on their behaving identically.
  62. X.FE
  63. X.LP
  64. X\s-2JOVE\s0 is considered a
  65. X.I display 
  66. Xeditor because normally the text being
  67. Xedited is visible on the screen and is updated automatically as you
  68. Xtype your commands.
  69. X.LP
  70. XIt's considered a
  71. X.I real-time 
  72. Xeditor because the display is updated very
  73. Xfrequently, usually after each character or pair of characters you type.
  74. XThis minimizes the amount of information you must keep in your
  75. Xhead as you edit.
  76. X.LP
  77. X\s-2JOVE\s0 is 
  78. X.I advanced 
  79. Xbecause it provides facilities that go beyond
  80. Xsimple insertion and deletion:
  81. Xfilling of text;
  82. Xautomatic indentations of programs;
  83. Xview more than one file at once;
  84. Xand dealing in terms of characters, words, lines, sentences and paragraphs.
  85. XIt is much easier
  86. Xto type one command meaning "go to the end of the paragraph" than to
  87. Xfind the desired spot with repetition of simpler commands.
  88. X.LP
  89. X.I Self-documenting 
  90. Xmeans that at almost any time you can easily
  91. Xfind out what a command does,
  92. Xor to find all the commands that pertain to a topic.
  93. X.LP
  94. X.I Customizable
  95. Xmeans that you can change the definition of \s-2JOVE\s0 commands
  96. Xin little ways.
  97. XFor example, you can rearrange the command set;
  98. Xif you prefer to use arrow keys for the four basic cursor motion commands
  99. X(up, down, left and right), you can.
  100. XAnother sort of customization is
  101. Xwriting new commands by combining built in commands.
  102. X.NH 1
  103. XThe Organization of the Screen
  104. X.XS \n(PN
  105. X\*(SN The Organization of the Screen
  106. X.XE
  107. X.LP
  108. X\s-2JOVE\s0 divides the screen up into several sections.
  109. XThe biggest of these sections is used to display the text you are editing.
  110. XThe terminal's cursor shows the position of \fIpoint\fP,
  111. Xthe location at which editing takes place.
  112. XWhile the cursor appears to point \fIat\fP a character,
  113. Xpoint should be thought of as between characters;
  114. Xit points \fIbefore\fP the character that the cursor appears on top of.
  115. XTerminals have only one cursor,
  116. Xand when output is in progress it must appear where the typing is being done.
  117. XThis doesn't mean that point is moving;
  118. Xit is only that \s-2JOVE\s0 has no way of
  119. Xshowing you the location of point except when the terminal is idle.
  120. X.LP
  121. XThe lines of the screen are usually available for displaying text but
  122. Xsometimes are pre-empted by typeout from certain commands (such as a
  123. Xlisting of all the editor commands).
  124. XMost of the time,
  125. Xoutput from commands like these is only desired for a short period of time,
  126. Xusually just long enough to glance at it.
  127. XWhen you have finished looking at the output,
  128. Xyou can type Space to make your text reappear.
  129. X(Usually a Space that you type inserts itself, but when there is typeout on
  130. Xthe screen, it does nothing but get rid of that).
  131. XAny other command executes normally,
  132. X.I after
  133. Xredrawing your text.
  134. X.NH 2
  135. XThe Message Line
  136. X.XS \n(PN 5n
  137. X\*(SN The Message Line
  138. X.XE
  139. X.LP
  140. XThe bottom line on the screen, called the
  141. X\fImessage line\fP,
  142. Xis reserved for printing messages and for accepting input from the user,
  143. Xsuch as filenames or search strings.
  144. XWhen
  145. X\s-2JOVE\s0 
  146. Xprompts for input,
  147. Xthe cursor will temporarily appear on the bottom line, waiting for you
  148. Xto type a string.
  149. XWhen you have finished typing your input, you can
  150. Xtype a Return to send it to \s-2JOVE\s0.
  151. XIf you change your mind about running the command that is waiting for input,
  152. Xyou can type Control-G to abort,
  153. Xand you can continue with your editing.
  154. X.LP
  155. XWhen \s-2JOVE\s0 is prompting for a filename,
  156. Xall the usual editing facilities can be used to fix typos and such;
  157. Xin addition, \s-2JOVE\s0 has the following extra functions:
  158. X.IP "^N"
  159. XInsert the next filename from the argument list.
  160. X.IP "^P"
  161. XInsert the previous filename from the argument list.
  162. X.IP "^R"
  163. XInsert the full pathname of the file in the current buffer.
  164. X.LP
  165. XSometimes you will see \fB--more--\fP on the message line.
  166. XThis happens when typeout from a command is too long to fit in the screen.
  167. XIt means that if you type a Space the next screenful of typeout will be
  168. Xprinted.
  169. XIf you are not interested,
  170. Xtyping anything but a Space will cause the rest of the output to be discarded.
  171. XTyping C-G will discard the output and print \fIAborted\fP where the \fB--more--\fP was.
  172. XTyping any other command will discard the rest of the output and
  173. Xalso execute the command.
  174. X.LP
  175. XThe message line and the list of filenames from the shell command that
  176. Xinvoked \s-2JOVE\s0 are kept in a special buffer called
  177. X\fIMinibuf\fP that can be edited like any other buffer.
  178. X.NH 2
  179. XThe Mode Line
  180. X.XS \n(PN 5n
  181. X\*(SN The Mode Line
  182. X.XE
  183. X.LP
  184. XAt the bottom of the screen, but above the message line, is the
  185. X\fImode line\fP.  The mode line format looks like this:
  186. X.DS I
  187. X\fBJOVE (major minor)   Buffer: bufr  "file" *\fP
  188. X.DE
  189. X\fImajor\fP is the name of the current \fImajor mode\fP.
  190. XAt any time, \s-2JOVE\s0 can be in only one major mode at a time.
  191. XCurrently there are only four major modes: \fIFundamental\fP,
  192. X\fIText\fP, \fILisp\fP and \fIC\fP.
  193. X.LP
  194. X\fIminor\fP is a list of the minor modes that are turned on.
  195. X\fBAbbrev\fP means that \fIWord Abbrev\fP mode is on;
  196. X\fBAI\fP means that \fIAuto Indent\fP mode is on;
  197. X\fBFill\fP means that \fIAuto Fill\fP mode is on;
  198. X\fBOvrWt\fP means that \fIOver Write\fP mode is on.
  199. X\fBDef\fP means that you are in the process of defining a keyboard macro.
  200. XThis is not really a mode,
  201. Xbut it's useful to be reminded about it.
  202. XThe meanings of these modes are described later in this document.
  203. X.LP
  204. X\fIbufr\fP is the name of the currently selected \fIbuffer\fP.
  205. XEach buffer has its own name and holds a file being edited;
  206. Xthis is how \s-2JOVE\s0 can hold several files at once.
  207. XBut at any given time you are editing only one of them,
  208. Xthe \fIselected\fP buffer.
  209. XWhen we speak of what some command does to "the buffer",
  210. Xwe are talking about the currently selected buffer.
  211. XMultiple buffers makes it easy to switch around between several files,
  212. Xand then it is very useful that
  213. Xthe mode line tells you which one you are editing at any time.  (You
  214. Xwill see later that it is possible to divide the
  215. Xscreen into multiple \fIwindows\fP, each showing a different buffer.  If you
  216. Xdo this, there is a mode line beneath each window.)
  217. X.LP
  218. X\fIfile\fP is the name of the file that you are editing.
  219. XThis is the default filename for commands that expect a filename as input.
  220. X.LP
  221. XThe asterisk at the end of the mode line means that there are changes in
  222. Xthe buffer that have not been saved in the file.
  223. XIf the file has not been changed since it was read in or saved,
  224. Xthere is no asterisk.
  225. X.NH 1
  226. XCommand Input Conventions
  227. X.XS \n(PN
  228. X\*(SN Command Input Conventions
  229. X.XE
  230. X.LP
  231. X.NH 2
  232. XNotational Conventions for ASCII Characters
  233. X.XS \n(PN 5n
  234. X\*(SN Notational Conventions for ASCII Characters
  235. X.XE
  236. X.LP
  237. XIn this manual,
  238. X"Control" characters
  239. X(that is, characters that are typed with the Control key
  240. Xand some other key at the same time)
  241. Xare represented by "C-" followed by another character.
  242. XThus,
  243. XC-A is the character you get when you type A with the Control key
  244. X(sometimes labeled CTRL) down.
  245. XMost control characters when present in the \s-2JOVE\s0
  246. Xbuffer are displayed with a caret; thus, ^A for C-A.
  247. XRubout (or DEL) is displayed as ^?, escape as ^[.
  248. X.NH 2
  249. XCommand and Filename Completion
  250. X.XS \n(PN 5n
  251. X\*(SN Command and Filename Completion
  252. X.XE
  253. X.LP
  254. XWhen you are typing the name of a \s-2JOVE\s0 command, you need type only
  255. Xenough letters to make the name unambiguous.  At any point in the course of
  256. Xtyping the name, you can type question mark (?) to see a list of all the
  257. Xcommands whose names begin with the characters you've already typed; you can
  258. Xtype Space to have \s-2JOVE\s0 supply as many characters as it can; or you
  259. Xcan type Return to complete the command if there is only one possibility.
  260. XFor example, if you have typed the letters "\fIau\fP" and you then type a
  261. Xquestion mark, you will see the list
  262. X.DS I
  263. X   auto-execute-command
  264. X   auto-execute-macro
  265. X   auto-fill-mode
  266. X   auto-indent-mode
  267. X.DE
  268. XIf you type a Return at this point, \s-2JOVE\s0 will complain by ringing
  269. Xthe bell, because the letters you've typed do not unambiguously specify a
  270. Xsingle command.  But if you type Space, \s-2JOVE\s0 will supply the
  271. Xcharacters "\fIto-\fP" because all commands that begin "\fIau\fP" also
  272. Xbegin "\fIauto-\fP".  You could then type the letter "\fIf\fP" followed
  273. Xby either Space or Return, and \s-2JOVE\s0 would complete the entire
  274. Xcommand.
  275. X.LP
  276. XWhenever \s-2JOVE\s0 is prompting you for a filename, say in the
  277. X\fIfind-file\fP command, you also need only type enough of the name to
  278. Xmake it unambiguous with respect to files that already exist.  In this
  279. Xcase, question mark and Space work just as they do in command completion,
  280. Xbut Return always accepts the name just as you've typed it, because you
  281. Xmight want to create a new file with a name similar to that of an
  282. Xexisting file.  The variable \fIbad-filename-extensions\fP contains a
  283. Xlist of words separated by spaces which are to be considered bad
  284. Xfilename extensions, and so will not be counted in filename completion.
  285. XThe default is ".o" so if you have jove.c and jove.o in the same
  286. Xdirectory, the filename completion will not complain of an ambiguity
  287. Xbecause it will ignore jove.o.
  288. X
  289. X.NH 1
  290. XCommands and Variables
  291. X.XS \n(PN
  292. X\*(SN Commands and Variables
  293. X.XE
  294. X.LP
  295. X\s-2JOVE\s0 is composed of \fIcommands\fP
  296. Xwhich have long names such as
  297. X\fInext-line\fP.
  298. XThen \fIkeys\fP such as C-N are connected to
  299. Xcommands through the \fIcommand dispatch table\fP.
  300. XWhen we say that C-N moves the cursor down a line,
  301. Xwe are glossing over a distinction which is unimportant for ordinary use,
  302. Xbut essential for simple customization:
  303. Xit is the command \fInext-line\fP which knows how to move a down line,
  304. Xand C-N moves down a line because it is connected to that command.
  305. XThe name for this connection is a \fIbinding\fP; we say that the key
  306. XC-N \fIis bound to\fP the command \fInext-line\fP.
  307. X.LP
  308. XNot all commands are bound to keys.  To invoke a command that isn't bound
  309. Xto a key, you can type the sequence ESC X, which is bound to the command
  310. X\fIexecute-named-command\fP.  You will then be able to type the name of
  311. Xwhatever command you want to execute on the message line.
  312. X.LP
  313. XSometimes the description of a command will say
  314. X"to change this, set the variable \fImumble\-foo\fP".
  315. XA variable is a name used to remember a value.
  316. X\s-2JOVE\s0 contains variables which are there so that you can change
  317. Xthem if you want to customize.
  318. XThe variable's value is examined by some command,
  319. Xand changing that value makes the command behave differently.
  320. XUntil you are interesting in customizing \s-2JOVE\s0,
  321. Xyou can ignore this information.
  322. X.NH 2
  323. XPrefix Characters
  324. X.XS \n(PN 5n
  325. X\*(SN Prefix Characters
  326. X.XE
  327. X.LP
  328. XBecause there are more command names than keys,
  329. X\s-2JOVE\s0 provides
  330. X\fIprefix characters\fP to increase the number of commands that can
  331. Xbe invoked quickly and easily.
  332. XWhen you type a prefix character \s-2JOVE\s0 will wait
  333. Xfor another character before deciding what to do.
  334. XIf you wait more than a second or so,
  335. X\s-2JOVE\s0 will print the prefix character on the
  336. Xmessage line as a reminder and leave the cursor down there until you type your next
  337. Xcharacter.
  338. XThere are two prefix characters built into \s-2JOVE\s0:
  339. XEscape and Control-X.
  340. XHow the next character is interpreted depends on which
  341. Xprefix character you typed.
  342. XFor example,
  343. Xif you type Escape followed by B you'll run \fIbackward-word\fP,
  344. Xbut if you type Control-X followed by B you'll run \fIselect-buffer\fP.
  345. XElsewhere in this manual, the Escape key is indicated as "ESC", which is
  346. Xalso what \s-2JOVE\s0 displays on the message line for Escape.
  347. X.NH 2
  348. XHelp
  349. X.XS \n(PN
  350. X\*(SN Help
  351. X.XE
  352. X.LP
  353. XTo get a list of keys and their associated commands,
  354. Xyou type ESC X \fIdescribe-bindings\fP.
  355. XIf you want to describe a single key,
  356. XESC X \fIdescribe-key\fP will work.  A description of an
  357. Xindividual command is available by using ESC X \fIdescribe-command\fP,
  358. Xand descriptions of variables by using  ESC X \fIdescribe-variable\fP.
  359. XIf you can't remember the name of the thing you want to know about,
  360. XESC X \fIapropos\fP will tell you if a command or variable has a given
  361. Xstring in its name.  For example, ESC X \fIapropos describe\fP will
  362. Xlist the names of the four describe commands mentioned briefly in this
  363. Xsection.
  364. X.NH 1
  365. XBasic Editing Commands
  366. X.XS \n(PN
  367. X\*(SN Basic Editing Commands
  368. X.XE
  369. X.LP
  370. X.NH 2
  371. XInserting Text
  372. X.XS \n(PN 5n
  373. X\*(SN Inserting Text
  374. X.XE
  375. X.LP
  376. XTo insert printing characters into the text you are editing,
  377. Xjust type them.
  378. XAll printing characters you type are inserted into the text at
  379. Xthe cursor (that is, at \fIpoint\fP),
  380. Xand the cursor moves forward.
  381. XAny characters after the cursor move forward too.
  382. XIf the text in the buffer is FOOBAR,
  383. Xwith the cursor before the B,
  384. Xthen if you type XX,
  385. Xyou get FOOXXBAR,
  386. Xwith the cursor still before the B.
  387. X.LP
  388. XTo correct text you have just inserted,
  389. Xyou can use Rubout.
  390. XRubout deletes the character \fIbefore\fP the cursor (not the one that the
  391. Xcursor is on top of or under; that is the character \fIafter\fP the
  392. Xcursor).
  393. XThe cursor and all characters after it move backwards.
  394. XTherefore,
  395. Xif you typing a printing character and then type Rubout,
  396. Xthey cancel out.
  397. X.LP
  398. XTo end a line and start typing a new one,
  399. Xtype Return.
  400. XReturn operates by inserting a \fIline-separator\fP,
  401. Xso if you type Return in
  402. Xthe middle of a line,
  403. Xyou break the line in two.
  404. XBecause a line-separator is just a single character,
  405. Xyou can type Rubout at the
  406. Xbeginning of a line to delete the line-separator and join it with the
  407. Xpreceding line.
  408. X.LP
  409. XAs a special case, if you type Return at the end of a line and there are
  410. Xtwo or more empty lines just below it, \s-2JOVE\s0 does not insert a
  411. Xline-separator but instead merely moves to the next (empty) line.  This
  412. Xbehavior is convenient when you want to add several lines of text in the
  413. Xmiddle of a buffer.  You can use the Control-O (\fInewline-and-backup\fP)
  414. Xcommand to "open" several empty lines at once; then you can insert the new
  415. Xtext, filling up these empty lines.  The advantage is that \s-2JOVE\s0 does
  416. Xnot have to redraw the bottom part of the screen for each Return you type,
  417. Xas it would ordinarily.  That "redisplay" can be both slow and distracting.
  418. X.LP
  419. XIf you add too many characters to one line,
  420. Xwithout breaking it with Return,
  421. Xthe line will grow too long to display on one screen line.
  422. XWhen this happens,
  423. X\s-2JOVE\s0 puts an "!" at the extreme right margin,
  424. Xand doesn't bother to display the rest of the line unless the
  425. Xcursor happens to be in it.
  426. XThe "!" is not part of your text;
  427. Xconversely,
  428. Xeven though you can't see the rest of your line,
  429. Xit's still there,
  430. Xand if you break the line,
  431. Xthe "!" will go away.
  432. X.LP
  433. XDirect insertion works for printing characters and space,
  434. Xbut other
  435. Xcharacters act as editing commands and do not insert themselves.
  436. XIf you need to insert a control character,
  437. XEscape,
  438. Xor Rubout,
  439. Xyou must first \fIquote\fP it by typing the Control-Q command first.
  440. X.NH 2
  441. XMoving the Cursor
  442. X.XS \n(PN 5n
  443. X\*(SN Moving the Cursor
  444. X.XE
  445. X.LP
  446. XTo do more than insert characters,
  447. Xyou have to know how to move the cursor.
  448. XHere are a few of the commands for doing that.
  449. X.IP "C-A" 15n
  450. XMove to the beginning of the line.
  451. X.IP "C-E" 15n
  452. XMove to the end of the line.
  453. X.IP "C-F" 15n
  454. XMove forward over one character.
  455. X.IP "C-B" 15n
  456. XMove backward over one character.
  457. X.IP "C-N" 15n
  458. XMove down one line,
  459. Xvertically.
  460. XIf you start in the middle of one line,
  461. Xyou end in the middle of the next.
  462. X.IP "C-P" 15n
  463. XMove up one line,
  464. Xvertically.
  465. X.IP "ESC <" 15n
  466. XMove to the beginning of the entire buffer.
  467. X.IP "ESC >" 15n
  468. XMove to the end of the entire buffer.
  469. X.IP "ESC ," 15n
  470. XMove to the beginning of the visible window.
  471. X.IP "ESC ." 15n
  472. XMove to the end of the visible window.
  473. X.NH 2
  474. XErasing Text
  475. X.XS \n(PN 5n
  476. X\*(SN Erasing Text
  477. X.XE
  478. X.LP
  479. X.IP "Rubout" 15n
  480. XDelete the character before the cursor.
  481. X.IP "C-D" 15n
  482. XDelete the character after the cursor.
  483. X.IP "C-K" 15n
  484. XKill to the end of the line.
  485. X.LP
  486. XYou already know about the Rubout command which deletes the character
  487. Xbefore the cursor.
  488. XAnother command,
  489. XControl-D,
  490. Xdeletes the character
  491. Xafter the cursor,
  492. Xcausing the rest of the text on the line to shift left.
  493. XIf Control-D is typed at the end of a line,
  494. Xthat line and the next line are joined together.
  495. X.LP
  496. XTo erase a larger amount of text,
  497. Xuse the Control-K command,
  498. Xwhich kills a line at a time.
  499. XIf Control-K is done at the beginning or
  500. Xmiddle of a line,
  501. Xit kills all the text up to the end of the line.
  502. XIf Control-K is done at the end of a line,
  503. Xit joins that line and the next line.
  504. XIf Control-K is done twice, it kills the rest of the line and the line
  505. Xseparator also.
  506. X.NH 2
  507. XFiles \(em Saving Your Work
  508. X.XS \n(PN 5n
  509. X\*(SN Files \(em Saving Your Work
  510. X.XE
  511. X.LP
  512. XThe commands above are sufficient for creating text in the \s-2JOVE\s0 buffer.
  513. XThe more advanced \s-2JOVE\s0 commands just make things easier.
  514. XBut to keep any text permanently you must put it in a \fIfile\fP.
  515. XFiles are the objects which
  516. X.UX
  517. Xuses for storing data for a length of time.
  518. XTo tell \s-2JOVE\s0 to read text into a file,
  519. Xchoose a filename,
  520. Xsuch as \fIfoo.bar\fP,
  521. Xand type C-X C-R \fIfoo.bar\fP<return>.
  522. XThis reads the file \fIfoo.bar\fP so that its contents appear on the screen
  523. Xfor editing.
  524. XYou can make changes,
  525. Xand then save the file by typing C-X C-S (save-file).
  526. XThis makes the changes permanent and actually changes the file \fIfoo.bar\fP.
  527. XUntil then,
  528. Xthe changes are only inside \s-2JOVE\s0,
  529. Xand the file \fIfoo.bar\fP is not really changed.
  530. XIf the file \fIfoo.bar\fP doesn't exist,
  531. Xand you want to create it,
  532. Xread it as if it did exist.
  533. XWhen you save your text with C-X C-S the file will be created.
  534. X.NH 2
  535. XExiting and Pausing \(em Leaving \s-2JOVE\s0
  536. X.XS \n(PN 5n
  537. X\*(SN Exiting and Pausing \(em Leaving \s-2JOVE\s0
  538. X.XE
  539. X.LP
  540. XThe command C-X C-C (\fIexit-jove\fP) will terminate the \s-2JOVE\s0
  541. Xsession and return to the shell.  If there are modified but 
  542. Xunsaved buffers, \s-2JOVE\s0 will ask you for confirmation, and you
  543. Xcan abort the command, look at what buffers are
  544. Xmodified but unsaved using C-X C-B (\fIlist-buffers\fP), save the 
  545. Xvaluable ones, and then exit.  If what you want to do, on the other hand,
  546. Xis \fIpreserve\fP the editing session but return to the shell temporarily
  547. Xyou can (under Berkeley 
  548. X.UX
  549. Xonly) issue the command ESC S (\fIpause-jove\fP), do your 
  550. X.UX 
  551. Xwork within the c-shell, then return to \s-2JOVE\s0 using the 
  552. X\fIfg\fP command to resume editing at the point where you paused.
  553. XFor this sort of situation you might consider using an \fIinteractive
  554. Xshell\fP (that is, a shell in a \s-2JOVE\s0 window) which lets you use
  555. Xeditor commands to manipulate your 
  556. X.UX 
  557. Xcommands (and their output) while never leaving the editor.
  558. X(The interactive shell feature is described below.)
  559. X.NH 2
  560. XGiving Numeric Arguments to \s-2JOVE\s0 Commands
  561. X.XS \n(PN 5n
  562. X\*(SN Giving Numeric Arguments to \s-2JOVE\s0 Commands
  563. X.XE
  564. X.LP
  565. XAny \s-2JOVE\s0 command can be given a \fInumeric argument\fP.
  566. XSome commands interpret the argument as a repetition count.
  567. XFor example,
  568. Xgiving an argument of ten to the C-F command (forward-character) moves forward
  569. Xten characters.
  570. XWith these commands,
  571. Xno argument is equivalent to an argument of 1.
  572. X.LP
  573. XSome commands use the value of the argument,
  574. Xbut do something peculiar (or nothing) when there is no argument.
  575. XFor example,
  576. XESC G (\fIgoto-line\fP) with an argument \fBn\fP
  577. Xgoes to the beginning of the \fBn\fP'th line.
  578. XBut ESC G with no argument doesn't do anything.
  579. XSimilarly, C-K with an argument kills that many lines, including their line
  580. Xseparators.  Without an argument, C-K when there is text on the line to the
  581. Xright of
  582. Xthe cursor kills that text; when there is no text after the cursor, C-K
  583. Xdeletes the line separator.
  584. X.LP
  585. XThe fundamental way of specifying an argument is to use ESC followed
  586. Xby the digits of the argument, for example, ESC 123 ESC G to go to line
  587. X123. Negative arguments are allowed,
  588. Xalthough not all of the commands know what to do with one.
  589. X.LP
  590. XTyping C-U means do the next command four times.
  591. XTwo such C-U's multiply the next command by sixteen.
  592. XThus,
  593. XC-U C-U C-F moves forward sixteen characters.
  594. XThis is a good way to move forward quickly,
  595. Xsince it moves about 1/4 of a line on most terminals.
  596. XOther useful combinations are:
  597. XC-U C-U C-N (move down a good fraction of the screen),
  598. XC-U C-U C-O (make "a lot" of blank lines),
  599. Xand C-U C-K (kill four lines \(em note that typing C-K four times
  600. Xwould kill 2 lines).
  601. X.LP
  602. XThere are other,
  603. Xterminal-dependent ways of specifying arguments.
  604. XThey have the same effect but may be easier to type.
  605. XIf your terminal
  606. Xhas a numeric keypad which sends something recognizably different from
  607. Xthe ordinary digits,
  608. Xit is possible to program \s-2JOVE\s0 to to allow use of
  609. Xthe numeric keypad for specifying arguments.
  610. X.NH 2
  611. XThe Mark and the Region
  612. X.XS \n(PN 5n
  613. X\*(SN The Mark and the Region
  614. X.XE
  615. X.LP
  616. XIn general,
  617. Xa command that processes an arbitrary part of the buffer
  618. Xmust know where to start and where to stop.
  619. XIn \s-2JOVE\s0,
  620. Xsuch commands usually operate on the text between point and \fIthe mark\fP.
  621. XThis body of text is called \fIthe region\fP.
  622. XTo specify a region,
  623. Xyou set point to one end of it and mark at the other.
  624. XIt doesn't matter which one comes earlier in the text.
  625. X.IP "C-@" 15n
  626. XSet the mark where point is.
  627. X.IP "C-X C-X" 15n
  628. XInterchange mark and point.
  629. X.LP
  630. XFor example,
  631. Xif you wish to convert part of the buffer to all upper-case,
  632. Xyou can use the C-X C-U command,
  633. Xwhich operates on the text in the region.
  634. XYou can first go to the beginning of the text to be capitalized,
  635. Xput the mark there, move to the end, and then type C-X C-U.
  636. XOr,
  637. Xyou can set the mark at the end of the text,
  638. Xmove to the beginning,
  639. Xand then type C-X C-U.
  640. XC-X C-U runs the command \fIcase-region-upper\fP,
  641. Xwhose name signifies that the region,
  642. Xor everything between point and mark,
  643. Xis to be capitalized.
  644. X.LP
  645. XThe way to set the mark is with the C-@ command or (on some
  646. Xterminals) the C-Space command.
  647. XThey set the mark where point is.
  648. XThen you can move point away,
  649. Xleaving mark behind.  When the mark is set, "[Point pushed]" is printed on
  650. Xthe message line.
  651. X.LP
  652. XSince terminals have only one cursor,
  653. Xthere is no way for \s-2JOVE\s0 to show you where the mark is located.
  654. XYou have to remember.
  655. XThe usual solution to this problem is to set the mark and then use it soon,
  656. Xbefore you forget where it is.
  657. XBut you can see where the mark is with
  658. Xthe command C-X C-X which puts the mark where point was and point
  659. Xwhere mark was.
  660. XThe extent of the region is unchanged,
  661. Xbut the cursor and point are now at the previous location of the mark.
  662. X.NH 2
  663. XThe Ring of Marks
  664. X.XS \n(PN 5n
  665. X\*(SN The Ring of Marks
  666. X.XE
  667. X.LP
  668. XAside from delimiting the region,
  669. Xthe mark is also useful for remembering a spot that you may want to go back to.
  670. XTo make this feature more useful,
  671. X\s-2JOVE\s0 remembers 16 previous locations of the mark.
  672. XMost commands that set the mark push the old mark onto this stack.
  673. XTo return to a marked location, use C-U C-@.
  674. XThis moves point to where the mark was,
  675. Xand restores the mark from the stack of former marks.
  676. XSo repeated use of this command moves point to all of the old
  677. Xmarks on the stack,
  678. Xone by one.
  679. XSince the stack is actually a ring,
  680. Xenough uses of C-U C-@ bring point back to where it was originally.
  681. X.LP
  682. XSome commands whose primary purpose is to move point a great distance
  683. Xtake advantage of the stack of marks to give you a way to undo the
  684. Xcommand.
  685. XThe best example is ESC <,
  686. Xwhich moves to the beginning of the buffer.
  687. XIf there are more than 22 lines between the beginning of
  688. Xthe buffer and point,
  689. XESC < sets the mark first,
  690. Xso that you can use C-U C-@ or C-X C-X to go back to where you were.
  691. XYou can change the number of lines from 22 since it is kept in the variable \fImark-threshold\fP.
  692. XBy setting it to 0,
  693. Xyou can make these commands always set the mark.
  694. XBy setting it to a very large number you can prevent these commands from ever
  695. Xsetting the mark.
  696. XIf a command decides to set the mark,
  697. Xit prints the message \fI[Point pushed]\fP.
  698. X.NH 2
  699. XKilling and Moving Text
  700. X.XS \n(PN 5n
  701. X\*(SN Killing and Moving Text
  702. X.XE
  703. X.LP
  704. XThe most common way of moving or copying text with \s-2JOVE\s0 is to kill it,
  705. Xand get it back again in one or more places.
  706. XThis is very safe
  707. Xbecause the last several pieces of killed text are all remembered,
  708. Xand it is versatile,
  709. Xbecause the many commands for killing syntactic units
  710. Xcan also be used for moving those units.
  711. XThere are also other ways of moving text for special purposes.
  712. X.NH 2
  713. XDeletion and Killing
  714. X.XS \n(PN 5n
  715. X\*(SN Deletion and Killing
  716. X.XE
  717. X.LP
  718. XMost commands which erase text from the buffer save it so that you can
  719. Xget it back if you change your mind,
  720. Xor move or copy it to other parts of the buffer.
  721. XThese commands are known as \fIkill\fP commands.
  722. XThe rest of the commands that erase text do not save it;
  723. Xthey are known as \fIdelete\fP commands.
  724. XThe delete commands include C-D and Rubout,
  725. Xwhich delete only one character at a time,
  726. Xand those commands that delete only spaces or line separators.
  727. XCommands that can destroy significant amounts of nontrivial data generally kill.
  728. XA command's
  729. Xname and description will use the words \fIkill\fP or \fIdelete\fP to
  730. Xsay which one it does.
  731. X.IP "C-D" 20n
  732. XDelete next character.
  733. X.IP "Rubout" 20n
  734. XDelete previous character.
  735. X.IP "ESC \\\\\\\\" 20n
  736. XDelete spaces and tabs around point.
  737. X.IP "C-X C-O" 20n
  738. XDelete blank lines around the current line.
  739. X.IP "C-K" 20n
  740. XKill rest of line or one or more lines.
  741. X.IP "C-W" 20n
  742. XKill region (from point to the mark).
  743. X.IP "ESC D" 20n
  744. XKill word.
  745. X.IP "ESC Rubout" 20n
  746. XKill word backwards.
  747. X.IP "ESC K" 20n
  748. XKill to end of sentence.
  749. X.IP "C-X Rubout" 20n
  750. XKill to beginning of sentence.
  751. X.NH 2
  752. XDeletion
  753. X.XS \n(PN 5n
  754. X\*(SN Deletion
  755. X.XE
  756. X.LP
  757. XThe most basic delete commands are C-D and Rubout.
  758. XC-D deletes the character after the cursor,
  759. Xthe one the cursor is "on top of" or "underneath".
  760. XThe cursor doesn't move.
  761. XRubout deletes the character before the cursor,
  762. Xand moves the cursor back.
  763. XLine separators act like normal characters when deleted.
  764. XActually,
  765. XC-D and Rubout aren't always \fIdelete\fP commands;
  766. Xif you give an argument,
  767. Xthey \fIkill\fP instead.
  768. XThis prevents you from losing a great deal of text by typing a large
  769. Xargument to a C-D or Rubout.
  770. X.LP
  771. XThe other delete commands are those which delete only formatting
  772. Xcharacters:
  773. Xspaces,
  774. Xtabs,
  775. Xand line separators.
  776. XESC \\ (\fIdelete-white-space\fP)
  777. Xdeletes all the spaces and tab characters before and after point.
  778. XC-X C-O (\fIdelete-blank-lines\fP) deletes all blank lines after the current line,
  779. Xand if the current line is blank deletes all the blank
  780. Xlines preceding the current line as well
  781. X(leaving one blank line, the current line).
  782. X.NH 2
  783. XKilling by Lines
  784. X.XS \n(PN 5n
  785. X\*(SN Killing by Lines
  786. X.XE
  787. X.LP
  788. XThe simplest kill command is the C-K command.
  789. XIf issued at the beginning of a line,
  790. Xit kills all the text on the line,
  791. Xleaving it blank.
  792. XIf given on a line containing only white space (blanks and tabs)
  793. Xthe line disappears.
  794. XAs a consequence,
  795. Xif you go to the front of a non-blank line and type two C-K's,
  796. Xthe line disappears completely.
  797. X.LP
  798. XMore generally,
  799. XC-K kills from point up to the end of the line,
  800. Xunless it is at the end of a line.
  801. XIn that case,
  802. Xit kills the line separator following the line,
  803. Xthus merging the next line into the current one.
  804. XInvisible spaces and tabs at the end of the line are ignored when
  805. Xdeciding which case applies,
  806. Xso if point appears to be at the end of the line,
  807. Xyou can be sure the line separator will be killed.
  808. X.LP
  809. XC-K with an argument of zero kills all the text before
  810. Xpoint on the current line.
  811. X.NH 2
  812. XOther Kill Commands
  813. X.XS \n(PN 5n
  814. X\*(SN Other Kill Commands
  815. X.XE
  816. X.LP
  817. XA kill command which is very general is C-W (\fIkill-region\fP),
  818. Xwhich kills everything between point and the mark.*
  819. X.FS
  820. X*Often users switch this binding from C-W to C-X C-K because it is too
  821. Xeasy to hit C-W accidentally.
  822. X.FE
  823. XWith this command,
  824. Xyou can kill and save contiguous characters,
  825. Xif you first set the mark at one end of them and go to the other end.
  826. X.LP
  827. XOther syntactic units can be killed, too;
  828. Xwords,
  829. Xwith ESC Rubout and ESC D;
  830. Xand, sentences,
  831. Xwith ESC K and C-X Rubout.
  832. X.NH 2
  833. XUn-killing
  834. X.XS \n(PN 5n
  835. X\*(SN Un-killing (Yanking)
  836. X.XE
  837. X.LP
  838. XUn-killing (yanking) is getting back text which was killed.
  839. XThe usual way to
  840. Xmove or copy text is to kill it and then un-kill it one or more times.
  841. X.IP "C-Y" 10n
  842. XYank (re-insert) last killed text.
  843. X.IP "ESC Y" 10n
  844. XReplace re-inserted killed text with the previously killed text.
  845. X.IP "ESC W" 10n
  846. XSave region as last killed text without killing.
  847. X.LP
  848. XKilled text is pushed onto a \fIring buffer\fP called the \fIkill
  849. Xring\fP that remembers the last 10 blocks of text that were killed.
  850. X(Why it is called a ring buffer will be explained below).
  851. XThe command C-Y (\fIyank\fP) reinserts the text of the most recent kill.
  852. XIt leaves the cursor at the end of the text,
  853. Xand puts the mark at the beginning.
  854. XThus,
  855. Xa single C-Y undoes the C-W.
  856. X.LP
  857. XIf you wish to copy a block of text,
  858. Xyou might want to use ESC W (\fIcopy-region\fP),
  859. Xwhich copies the region into the kill ring without removing it from the buffer.
  860. XThis is approximately equivalent to C-W followed by C-Y,
  861. Xexcept that ESC W does not mark the buffer as
  862. X"changed" and does not cause the screen to be rewritten.
  863. X.LP
  864. XThere is only one kill ring shared among all the buffers.
  865. XAfter visiting a new file,
  866. Xwhatever was last killed in the previous file is still on top of the kill ring.
  867. XThis is important for moving text between files.
  868. X.NH 2
  869. XAppending Kills
  870. X.XS \n(PN 5n
  871. X\*(SN Appending Kills
  872. X.XE
  873. X.LP
  874. XNormally,
  875. Xeach kill command pushes a new block onto the kill ring.
  876. XHowever,
  877. Xtwo or more kill commands immediately in a row (without any other
  878. Xintervening commands) combine their text into a
  879. Xsingle entry on the ring,
  880. Xso that a single C-Y command gets it all back as it was before it was killed.
  881. XThis means that you don't have to kill all the text in one command;
  882. Xyou can keep killing line after line,
  883. Xor word after word,
  884. Xuntil you have killed it all,
  885. Xand you can still get it all back at once.
  886. X.LP
  887. XCommands that kill forward from 
  888. X.I point 
  889. Xadd onto the end of the previous
  890. Xkilled text.
  891. XCommands that kill backward from 
  892. X.I point
  893. Xadd onto the beginning.
  894. XThis way,
  895. Xany sequence of mixed forward and backward kill
  896. Xcommands puts all the killed text into one entry without needing rearrangement.
  897. X.NH 2
  898. XUn-killing Earlier Kills
  899. X.XS \n(PN 5n
  900. X\*(SN Un-killing Earlier Kills
  901. X.XE
  902. X.LP
  903. XTo recover killed text that is no longer the most recent kill,
  904. Xyou need the ESC Y (\fIyank-pop\fP) command.
  905. XThe ESC Y command can be used
  906. Xonly after a C-Y (yank) command or another ESC Y.
  907. XIt takes the un-killed
  908. Xtext inserted by the C-Y and replaces it with the text from an earlier
  909. Xkill.
  910. XSo,
  911. Xto recover the text of the next-to-the-last kill,
  912. Xyou first use C-Y to recover the last kill,
  913. Xand then discard it by use of ESC Y to move back to the previous kill.
  914. X.LP
  915. XYou can think of all the last few kills as living on a ring.
  916. XAfter a C-Y command,
  917. Xthe text at the front of the ring is also present in the buffer.
  918. XESC Y "rotates" the ring bringing the previous string of text to the front
  919. Xand this text replaces the other text in the buffer as well.
  920. XEnough ESC Y commands can rotate any part of the ring to the front,
  921. Xso you can get at any killed text so long as it is recent enough
  922. Xto be still in the ring.
  923. XEventually the ring rotates all the way
  924. Xaround and the most recently killed text comes to the front
  925. X(and into the buffer) again.
  926. XESC Y with a negative argument rotates the ring backwards.
  927. X.LP
  928. XWhen the text you are looking for is brought into the buffer,
  929. Xyou can stop doing ESC Y's and the text will stay there.
  930. XIt's really just a copy of what's at the front of the ring,
  931. Xso editing it does not change what's in the ring.
  932. XAnd the ring,
  933. Xonce rotated,
  934. Xstays rotated,
  935. Xso that doing another C-Y gets another copy of what you rotated to the
  936. Xfront with ESC Y.
  937. X.LP
  938. XIf you change your
  939. Xmind about un-killing,
  940. XC-W gets rid of the un-killed text, even
  941. Xafter any number of ESC Y's.
  942. X.NH 1
  943. XSearching
  944. X.XS \n(PN
  945. X\*(SN Searching
  946. X.XE
  947. X.LP
  948. XThe search commands are useful for finding and moving to arbitrary
  949. Xpositions in the buffer in one swift motion.
  950. XFor example,
  951. Xif you just ran the spell program on a paper
  952. Xand you want to correct some word,
  953. Xyou can use the search commands to move directly to that word.  There are
  954. Xtwo flavors of search: \fIstring search\fP and \fIincremental search\fP.
  955. XThe former is the default flavor\(emif you want to use incremental search
  956. Xyou must rearrange the key bindings (see below).
  957. X.NH 2
  958. XConventional Search
  959. X.XS \n(PN 5n
  960. X\*(SN Conventional Search
  961. X.XE
  962. X.LP
  963. X.IP "C-S" 15n
  964. XSearch forward.
  965. X.IP "C-R" 15n
  966. XSearch backward.
  967. X.LP
  968. XTo search for the string "FOO" you type "C-S FOO<return>".
  969. XIf \s-2JOVE\s0 finds
  970. XFOO it moves point to the end of it; otherwise \s-2JOVE\s0 prints an error
  971. Xmessage and leaves point unchanged.
  972. XC-S searches forward from point
  973. Xso only occurrences of FOO after point are found.
  974. XTo search in the other direction use C-R.
  975. XIt is exactly the same as C-S except it searches in the opposite direction,
  976. Xand if it finds the string,
  977. Xit leaves point at the beginning of it,
  978. Xnot at the end as in C-S.
  979. X.LP
  980. XWhile \s-2JOVE\s0 is searching it prints the search string on the message line.
  981. XThis is so you know what \s-2JOVE\s0 is doing.
  982. XWhen the system is heavily loaded and
  983. Xediting in exceptionally large buffers,
  984. Xsearches can take several (sometimes many) seconds.
  985. X.LP
  986. X\s-2JOVE\s0 remembers the last search string you used,
  987. Xso if you want to search for the same string you can type "C-S <return>".
  988. XIf you mistyped the last search string,
  989. Xyou can type C-S followed by C-R.
  990. XC-R,
  991. Xas usual,
  992. Xinserts the default search string into the minibuffer,
  993. Xand then you can fix it up.
  994. X.NH 2
  995. XIncremental Search
  996. X.XS \n(PN 5n
  997. X\*(SN Incremental Search
  998. X.XE
  999. X.LP
  1000. XThis search command is unusual in that is is \fIincremental\fP;
  1001. Xit begins to search before you have typed the complete search string.
  1002. XAs you type in the search string,
  1003. X\s-2JOVE\s0 shows you where it would be found.
  1004. XWhen you have typed enough characters to identify the place you want,
  1005. Xyou can stop.
  1006. XDepending on what you will do next,
  1007. Xyou may or may not need to terminate the search explicitly with a Return first.
  1008. X.LP
  1009. XThe command to search is C-S (\fIi-search-forward\fP).
  1010. XC-S reads in characters and positions the cursor at the first
  1011. Xoccurrence of the characters that you have typed so far.
  1012. XIf you type C-S and then F,
  1013. Xthe cursor moves in the text just after the next "F".
  1014. XType an "O",
  1015. Xand see the cursor move to after the next "FO".
  1016. XAfter another "O",
  1017. Xthe cursor is after the next "FOO".
  1018. XAt the same time,
  1019. Xthe "FOO" has echoed on the message line.
  1020. X.LP
  1021. XIf you type a mistaken character,
  1022. Xyou can rub it out.
  1023. XAfter the FOO,
  1024. Xtyping a Rubout makes the "O" disappear from the message line,
  1025. Xleaving only "FO".
  1026. XThe cursor moves back in the buffer to the "FO".
  1027. XRubbing out the "O" and "F" moves the cursor back to where you
  1028. Xstarted the search.
  1029. X.LP
  1030. XWhen you are satisfied with the place you have reached,
  1031. Xyou can type a Return,
  1032. Xwhich stops searching,
  1033. Xleaving the cursor where the search brought it.
  1034. XAlso,
  1035. Xany command not specially meaningful in searches stops
  1036. Xthe searching and is then executed.
  1037. XThus,
  1038. Xtyping C-A would exit the search and then move to the beginning of the line.
  1039. XReturn is necessary only if the next character you want to type is a printing
  1040. Xcharacter,
  1041. XRubout,
  1042. XReturn,
  1043. Xor another search command,
  1044. Xsince those are the characters that have special meanings inside the search.
  1045. X.LP
  1046. XSometimes you search for "FOO" and find it,
  1047. Xbut not the one you hoped to find.
  1048. XPerhaps there is a second FOO that you forgot about,
  1049. Xafter the one you just found.
  1050. XThen type another C-S and the cursor will find the next FOO.
  1051. XThis can be done any number of times.
  1052. XIf you overshoot,
  1053. Xyou can return to previous finds by rubbing out the C-S's.
  1054. X.LP
  1055. XAfter you exit a search,
  1056. Xyou can search for the same string again by typing just C-S C-S:
  1057. Xone C-S command to start the search and then
  1058. Xanother C-S to mean "search again for the same string".
  1059. X.LP
  1060. XIf your string is not found at all,
  1061. Xthe message line says "Failing I-search".
  1062. XThe cursor is after the place where \s-2JOVE\s0 found as much of
  1063. Xyour string as it could.
  1064. XThus,
  1065. Xif you search for FOOT and there is no FOOT,
  1066. Xyou might see the cursor after the FOO in FOOL.
  1067. XAt this point there are several things you can do.
  1068. XIf your string was mistyped,
  1069. Xyou can rub some of it out and correct it.
  1070. XIf you like the place you have found,
  1071. Xyou can type Return or some other \s-2JOVE\s0 command
  1072. Xto "accept what the search offered".
  1073. XOr you can type C-G,
  1074. Xwhich undoes the search altogether and positions you back where you started
  1075. Xthe search.
  1076. X.LP
  1077. XYou can also type C-R at any time to start searching backwards.
  1078. XIf a search fails because the place you started was too late in the file,
  1079. Xyou should do this.
  1080. XRepeated C-R's keep looking backward for more occurrences of the last search string.
  1081. XA C-S starts going forward again.
  1082. XC-R's can be rubbed out just like anything else.
  1083. X.NH 2
  1084. XSearching with Regular Expressions
  1085. X.XS \n(PN 5n
  1086. X\*(SN Searching with Regular Expressions
  1087. X.XE
  1088. X.LP
  1089. XIn addition to the searching facilities described above,
  1090. X\s-2JOVE\s0
  1091. Xcan search for patterns using regular expressions.
  1092. XThe handling of regular expressions in \s-2JOVE\s0 is like that of \fIed(1)\fP
  1093. Xor \fIvi(1)\fP, but with some notable additions.
  1094. XThe extra metacharacters understood by \s-2JOVE\s0 are \e<,
  1095. X\e>,
  1096. X\e\|| and \e\|{.
  1097. XThe first two of these match the beginnings and endings of words;
  1098. XThus the search pattern,
  1099. X"\|\e<Exec" would match all words beginning with the letters "Exec".
  1100. X.LP
  1101. XAn \e\|| signals the beginning of an alternative \(em that is, the
  1102. Xpattern "foo\e\||bar" would match either "foo" or "bar".  The "curly
  1103. Xbrace" is a way of introducing several sub-alternatives into a pattern.
  1104. XIt parallels the [] construct of regular expressions, except it specifies
  1105. Xa list of alternative words instead of just alternative characters.  So
  1106. Xthe pattern "foo\e\|{bar,baz\e\|}bie" matches "foobarbie" or "foobazbie".
  1107. X.LP
  1108. X\s-2JOVE\s0 only regards metacharacters as special if the variable
  1109. X\fImatch-regular-expressions\fP is set to "on".
  1110. XThe ability to have \s-2JOVE\s0 ignore these characters is useful if
  1111. Xyou're editing a document about patterns and regular expressions or
  1112. Xwhen a novice is learning \s-2JOVE\s0.
  1113. X.LP
  1114. XAnother variable that affects searching is \fIcase-ignore-search\fP.  If
  1115. Xthis variable is set to "on" then upper case and lower case letters are
  1116. Xconsidered equal.
  1117. X.NH 1
  1118. XReplacement Commands
  1119. X.XS \n(PN
  1120. X\*(SN Replacement Commands
  1121. X.XE
  1122. X.LP
  1123. XGlobal search-and-replace operations are not needed as often in \s-2JOVE\s0
  1124. Xas they are in other editors,
  1125. Xbut they are available.
  1126. XIn addition to
  1127. Xthe simple Replace operation which is like that found in most editors,
  1128. Xthere is a Query Replace operation which asks,
  1129. Xfor each occurrence of the pattern,
  1130. Xwhether to replace it.
  1131. X.NH 2
  1132. XGlobal replacement
  1133. X.XS \n(PN 5n
  1134. X\*(SN Global Replacement
  1135. X.XE
  1136. X.LP
  1137. XTo replace every occurrence of FOO after point with BAR,
  1138. Xyou can do, e.g., "ESC R FOO<return>BAR" as the \fIreplace-string\fP command
  1139. Xis bound to the ESC R.
  1140. XReplacement takes place only between point and the end of the buffer
  1141. Xso if you want to cover the whole buffer you must go to the beginning first.
  1142. X.NH 2
  1143. XQuery Replace
  1144. X.XS \n(PN 5n
  1145. X\*(SN Query Replace
  1146. X.XE
  1147. X.LP
  1148. XIf you want to change only some of the occurrences of FOO,
  1149. Xnot all,
  1150. Xthen the global \fIreplace-string\fP is inappropriate;
  1151. XInstead,
  1152. Xuse, e.g., "ESC Q FOO<return>BAR", to run the command \fIquery-replace-string\fP.
  1153. XThis displays each occurrence of FOO and waits for you to say whether
  1154. Xto replace it with a BAR.
  1155. XThe things you can type when you are shown an occurrence of FOO are:
  1156. X.IP "Space" 15n
  1157. Xto replace the FOO.
  1158. X.IP "Rubout" 15n
  1159. Xto skip to the next FOO without replacing this one.
  1160. X.IP "Return" 15n
  1161. Xto stop without doing any more replacements.
  1162. X.IP "Period" 15n
  1163. Xto replace this FOO and then stop.
  1164. X.IP "! or P" 15n
  1165. Xto replace all remaining FOO's without asking.
  1166. X.IP "C-R or R" 15n
  1167. Xto enter a recursive editing level,
  1168. Xin case the FOO needs to be edited rather than just replaced with a BAR.
  1169. XWhen you are done,
  1170. Xexit the recursive editing level with C-X C-C and the next FOO will
  1171. Xbe displayed.
  1172. X.IP "C-W" 15n
  1173. Xto delete the FOO, and then start editing the buffer.
  1174. XWhen you are finished editing whatever is to replace the FOO,
  1175. Xexit the recursive editing level with C-X C-C
  1176. Xand the next FOO will be displayed.
  1177. X.IP "U" 15n
  1178. Xmove to the last replacement and undo it.
  1179. X.LP
  1180. XAnother alternative is using \fIreplace-in-region\fP which is just like
  1181. X\fIreplace-string\fP except it searches only within the region.
  1182. X.LP
  1183. @//E*O*F doc/jove.1//
  1184. if test 41172 -ne "`wc -c <'doc/jove.1'`"; then
  1185.     echo shar: error transmitting "'doc/jove.1'" '(should have been 41172 characters)'
  1186. fi
  1187. fi # end of overwriting check
  1188. echo shar: extracting "'doc/jove.nr'" '(9034 characters)'
  1189. if test -f 'doc/jove.nr' ; then 
  1190.   echo shar: will not over-write existing file "'doc/jove.nr'"
  1191. else
  1192. sed 's/^X//' >doc/jove.nr <<'@//E*O*F doc/jove.nr//'
  1193. X.hy 0
  1194. X.TH JOVE 1 "12 February 1986"
  1195. X.ad
  1196. X.SH NAME
  1197. Xjove - an interactive display-oriented text editor
  1198. X.SH SYNOPSIS
  1199. X.nf
  1200. Xjove [-d directory] [-w] [-t tag] [+n file] [-p file] [files]
  1201. Xjove -r
  1202. X.fi
  1203. X.SH DESCRIPTION
  1204. XJOVE is Jonathan's Own Version of Emacs.  It is based on the original EMACS
  1205. Xeditor written at MIT by Richard Stallman.  Although JOVE is meant to be
  1206. Xcompatible with EMACS, there are some major differences between the two
  1207. Xeditors and you shouldn't rely on their behaving identically.
  1208. X.LP
  1209. XJOVE works on any reasonable display terminal that is described in the
  1210. X.I termcap
  1211. Xfile (see TERMCAP(5) for more details).  When you start up JOVE, it checks
  1212. Xto see whether you have your
  1213. X.I TERM
  1214. Xenvironment variable set.  On most systems that will automatically be set up
  1215. Xfor you, but if it's not JOVE will ask you what kind of terminal you are
  1216. Xusing.  To avoid having to type this every time you run JOVE you can set your
  1217. X.I TERM
  1218. Xenvironment variable yourself.  How you do this depends on which shell you
  1219. Xare running.  If you are running the C Shell, as most of you are, you type
  1220. X.sp 1
  1221. X     % setenv TERM
  1222. X.I type
  1223. X.sp 1
  1224. Xand with the Bourne Shell, you type
  1225. X.sp 1
  1226. X     $ TERM=
  1227. X.I type
  1228. X; export TERM
  1229. X.sp 1
  1230. Xwhere
  1231. X.I type
  1232. Xis the name of the kind of terminal you are using (e.g., vt100).  If
  1233. Xneither of these works get somebody to help you.
  1234. X.SH INVOKING JOVE
  1235. XIf you run JOVE with no arguments you will be placed in an empty buffer,
  1236. Xcalled
  1237. X.I Main.
  1238. XOtherwise, any arguments you supply are considered file names and each is
  1239. X"given" its own buffer.  Only the first file is actually read in--reading
  1240. Xother files is deferred until you actually try to use the buffers they are
  1241. Xattached to.  This is for efficiency's sake: most of the time, when you run
  1242. XJOVE on a big list of files, you end up editing only a few of them.
  1243. X.LP
  1244. XThe names of all of the files specified on the command line are saved in a
  1245. Xbuffer, called
  1246. X.I *minibuf*.
  1247. XThe mini-buffer is a special JOVE buffer that is used when JOVE is prompting
  1248. Xfor some input to many commands (for example, when JOVE is prompting for a
  1249. Xfile name).  When you are being prompted for a file name, you can type C-N
  1250. X(that's Control-N) and C-P to cycle through the list of files that were
  1251. Xspecified on the command line.  The file name will be inserted where you are
  1252. Xtyping and then you can edit it as if you typed it in yourself.
  1253. X.LP
  1254. XJOVE recognizes the following switches:
  1255. X.TP
  1256. X.I -d
  1257. XThe following argument is taken to be the name of the current directory.
  1258. XThis is for systems that don't have a version of C shell that automatically
  1259. Xmaintains the
  1260. X.I CWD
  1261. Xenvironment variable.  If
  1262. X.I -d
  1263. Xis not specified on a system without a modified C shell, JOVE will have to
  1264. Xfigure out the current directory itself, and that can be VERY slow.  You
  1265. Xcan simulate the modified C shell by putting the following lines in your
  1266. XC shell initialization file (.cshrc):
  1267. X.nf
  1268. X.sp 1
  1269. X    alias cd        'cd \\!*; setenv CWD $cwd'
  1270. X    alias popd      'popd \\!*; setenv CWD $cwd'
  1271. X    alias pushd     'pushd \\!*; setenv CWD $cwd'
  1272. X.fi
  1273. X.TP
  1274. X.I +n
  1275. XReads the file, designated by the following argument, and positions point at
  1276. Xthe
  1277. X.I n'th
  1278. Xline instead of the (default) 1'st line.  This can be specified more than
  1279. Xonce but it doesn't make sense to use it twice on the same file; in that
  1280. Xcase the second one wins.
  1281. X.TP
  1282. X.I -p
  1283. XParses the error messages in the file designated by the following argument.
  1284. XThe error messages are assumed to be in a format similar to the C compiler,
  1285. XLINT, or GREP output.
  1286. X.TP
  1287. X.I -t
  1288. XRuns the
  1289. X.I find-tag 
  1290. Xcommand on the following argument (see ctags(1)).
  1291. X.TP
  1292. X.I -w
  1293. XDivides the window in two.  When this happens, either the same file is
  1294. Xdisplayed in both windows, or the second file in the list is read in and
  1295. Xdisplayed in its window.
  1296. X.LP
  1297. XAs a special case, invoking JOVE with the -r option runs the JOVE recover
  1298. Xprogram.  Use this when the system crashes, or JOVE crashes, or you
  1299. Xaccidently get logged out while in JOVE.  If there are any buffers to be
  1300. Xrecovered, this will find them.  Read the documentation for RECOVER.
  1301. X.LP
  1302. X.SH GETTING HELP
  1303. XOnce in JOVE, there are several commands available to get help.  To execute
  1304. Xany JOVE command, you type "<ESC> X command-name" followed by <Return>.  To
  1305. Xget a list of all the JOVE commands you type "<ESC> X" followed by "?".  The
  1306. X.I describe-bindings
  1307. Xcommand can be used to get a list containing each key, and its associated
  1308. Xcommand (that is, the command that gets executed when you type that key).
  1309. XIf you want to save the list of bindings, you can set the jove variable
  1310. X.I send-typeout-to-buffer
  1311. Xto ON (using the 
  1312. X.I set
  1313. Xcommand), and then execute the
  1314. X.I describe-bindings
  1315. Xcommand.  This will create a buffer and put in it the bindings list it
  1316. Xnormally would have printed on the screen.  Then you can save that buffer to
  1317. Xa file and print it to use as a quick reference card.  (See VARIABLES below.)
  1318. X.LP
  1319. XOnce you know the name of a command, you can find out what it does with the
  1320. X.I describe-command
  1321. Xcommand, which you can invoke quickly by typing "ESC ?".  The
  1322. X.I apropos
  1323. Xcommand will give you a list of all the command with a specific string in
  1324. Xtheir names.  For example, if you want to know the names of all the
  1325. Xcommands that are concerned with windows, you can run "apropos" with the
  1326. Xkeyword
  1327. X.I window.
  1328. X.LP
  1329. XIf you're not familar with the EMACS command set, it would be worth your
  1330. Xwhile to use run TEACHJOVE.  Do do that, just type "teachjove" to your shell
  1331. Xand you will be placed in JOVE in a file which contains directions.  I highly
  1332. Xrecommend this for beginners; you may save yourself a lot of time and
  1333. Xheadaches.
  1334. X.SH KEY BINDINGS and VARIABLES
  1335. XYou can alter the key bindings in JOVE to fit your personal tastes.  That
  1336. Xis, you can change what a key does every time you strike it.  For example,
  1337. Xby default the C-N key is bound to the command
  1338. X.I next-line
  1339. Xand so when you type it you move down a line.  If you want to change a
  1340. Xbinding or add a new one, you use the
  1341. X.I bind-to-key
  1342. Xcommand.  The syntax is "bind-to-key <command> key".
  1343. X.LP
  1344. XYou can also change the way JOVE behaves in little ways by changing the
  1345. Xvalue of some variables with the
  1346. X.I set
  1347. Xcommand.  The syntax is "set <variable> value", where value is a number or a
  1348. Xstring, or "on" or "off", depending on the context.  For example, if you
  1349. Xwant JOVE to make backup files, you set the "make-backup-files" variable to
  1350. X"on".  To see the value of a variable, use the "print <variable>" command.
  1351. X.SH INITIALIZATION
  1352. XJOVE automatically reads commands from an initialization file in your HOME
  1353. Xdirectory, called ".joverc".  In this file you can place commands that you
  1354. Xwould normally type in JOVE.  If you like to rearrange the key bindings and
  1355. Xset some variables every time you get into JOVE, you should put them in your
  1356. Xinitialization file.  Here are a few lines from mine:
  1357. X.nf
  1358. X    set match-regular-expressions on
  1359. X    auto-execute-command auto-fill /tmp/Re\\|.*drft
  1360. X    bind-to-key i-search-forward ^\\
  1361. X    bind-to-key i-search-reverse ^R
  1362. X    bind-to-key find-tag-at-point ^[^T
  1363. X    bind-to-key scroll-down ^C
  1364. X    bind-to-key grow-window ^Xg
  1365. X    bind-to-key shrink-window ^Xs
  1366. X.fi
  1367. X(Note that the Control Characters can be either two character sequences
  1368. X(e.g. ^ and C together as ^C) or the actual control character.  If you want
  1369. Xto use an ^ by itself you must BackSlash it (e.g., bind-to-key grow-window
  1370. X^X\\^ binds grow-window to "^X^").
  1371. X.SH SOME MINOR DETAILS
  1372. XYou should type C-\\ instead of C-S in many instances.  For example, the way
  1373. Xto search for a string is documented as being "C-S" but in reality you
  1374. Xshould type "C-\\".  This is because C-S is the XOFF character (what gets
  1375. Xsent when you type the NO SCROLL key), and clearly that won't work.  The XON
  1376. Xcharacter is "C-Q" (what gets sent when you type NO SCROLL again) which is
  1377. Xdocumented as the way to do a quoted-insert.  The alternate key for this is
  1378. X"C-^" (typed as "C-`" on vt100's and its look-alikes).  If you want to
  1379. Xenable C-S and C-Q and you know what you are doing, you can put the line:
  1380. X.nf
  1381. X    set allow-^S-and-^Q on
  1382. X.fi
  1383. Xin your initialization file.
  1384. X.LP
  1385. XIf your terminal has a metakey, JOVE will use it if you turn on the
  1386. X"meta-key" variable.  JOVE will automatically turn on "meta-key" if the
  1387. XMETAKEY environment variable exists.  This is useful for if you have
  1388. Xdifferent terminals (e.g., one at home and one at work) and one has a
  1389. Xmetakey and the other doesn't.
  1390. X.SH FILES
  1391. XLIBDIR/.joverc - system wide initialization file
  1392. X.sp 0
  1393. X~/.joverc - personal initialization file
  1394. X.sp 0
  1395. XTMPDIR - where temporary files are stored
  1396. X.sp 0
  1397. XLIBDIR/teach-jove - the interactive tutorial
  1398. X.sp 0
  1399. XLIBDIR/portsrv - for running shells in windows (pdp11 only)
  1400. X.SH SEE ALSO
  1401. X.nf
  1402. Xed(1) - for a description of regular expressions
  1403. X.sp 0
  1404. Xteachjove(1) - for an interactive JOVE tutorial.
  1405. X.fi
  1406. X.SH DIAGNOSTICS
  1407. XJOVE diagnostics are meant to be self-explanatory, but you are advised
  1408. Xto seek help whenever you are confused.  You can easily lose a lot of
  1409. Xwork if you don't know EXACTLY what you are doing.
  1410. X.SH BUGS
  1411. XLines can't be more than 1024 characters long.
  1412. X.sp 1
  1413. XSearches can't cross line boundaries.
  1414. X.SH AUTHOR
  1415. XJonathan Payne
  1416. @//E*O*F doc/jove.nr//
  1417. if test 9034 -ne "`wc -c <'doc/jove.nr'`"; then
  1418.     echo shar: error transmitting "'doc/jove.nr'" '(should have been 9034 characters)'
  1419. fi
  1420. fi # end of overwriting check
  1421. echo shar: "End of archive 9 (of 13)."
  1422. cp /dev/null ark9isdone
  1423. DONE=true
  1424. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13; do
  1425.     if test -f ark${I}isdone; then
  1426.         echo "You have run archive ${I}."
  1427.     else
  1428.         echo "You still need to run archive ${I}."
  1429.         DONE=false
  1430.     fi
  1431. done
  1432. case $DONE in
  1433.     true)
  1434.         echo "You have run all 13 archives."
  1435.         echo 'Now read the README and Makefile.'
  1436.         ;;
  1437. esac
  1438. ##  End of shell archive.
  1439. exit 0
  1440.