home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / ehp14ce.zip / ehp.INF (.txt) < prev    next >
OS/2 Help File  |  1995-06-28  |  62KB  |  1,804 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Introduction ΓòÉΓòÉΓòÉ
  3.  
  4.  First of all note, that since release 1.4 EHP is shareware. If you are using 
  5. it for longer than four weeks you will have to  register. Please DO register. 
  6. EHP is not crippled in anyway and I expect the appropriate fairness from you. 
  7. The registration fee is a joke compared against the efforts needed to port the 
  8. editor to OS/2 and maintaining it. 
  9.  
  10. The shortcut EHP comes from "Editor for HP workstation" and was invented during 
  11. the first implementation on a HP 350. This first implementation was done by 
  12. Maximilian Riesenhuber and me during 1990. Since then EHP has gone its way via 
  13. DOS to OS/2. Of course the name remains only for historical reasons, since it 
  14. has no real meaning for the editor now running with OS/2. 
  15.  
  16. EHP is an interactive fullscreen text editor, running also in a PM text window 
  17. and allowing quasi-parallel editing of multiple texts using window technique. 
  18. 3-button mouse support is provided (of course only, if a 3-button mouse driver 
  19. is installed). 
  20.  
  21. Compared with the UNIX vi, EHP does not distinguish an edit- and a command 
  22. mode. Instead, the control- and the alt-keys are used for invoking commands, as 
  23. most today-editors do.  Why use EHP instead of e.g. EPM or other PM editors? Of 
  24. course, discussing this topic is a very subjective issue, and we're aware, that 
  25. people don't change their favourite editor like others change their shirt. The 
  26. first reason is, that EHP starts up more quickly than EPM. EHP, as mentioned 
  27. and runs also full-screen, which makes it a possible choice for system 
  28. recovery, if PM doesn't come up. Furthermore, EHP can be - and has been - 
  29. easily ported to other platforms like UNIX, since it was implemented upon the 
  30. curses library initiallly. In some way it has more powerful features than, say, 
  31. EPM. E.g. the possibilty of intermixing macros and repeat commands and nesting 
  32. them into each other might be possible only with EMACS. By the way one more 
  33. word on EMACS: Though I'm not using it, I'm sure it's a very powerful editor. 
  34. But the torture of installing and learning it, the gigantic ressource 
  35. comsumption, the overhad of having a complete LISP system while not really 
  36. using it and so on make EMACS not the first choice for everybody.  As a quick 
  37. overview, we might give a list of the distinguishing features of EHP: 
  38.  
  39. o Interactive 32-bit text editor, well-suited for programming or writing TeX 
  40.  
  41. o Runs OS/2 fullscreen or in PM text window in different text resolutions 
  42.   (80x25, 80x50, etc.) 
  43.  
  44. o Windowed user interface with mouse support 
  45.  
  46. o Keybindings redefinable 
  47.  
  48. o Full-featured regular expressions for search 
  49.  
  50. o Powerful macro and repeat commands 
  51.  
  52. o Powerful block commands 
  53.  
  54. o Support for rectangular blocks (wonderful for maintaining comments) 
  55.  
  56. o Mode with automatic linebreaking and paragraph reflowing 
  57.  
  58. o Remembers its configuration exactly when exiting 
  59.  
  60. o Copes with underlined characters (Unix-style: _^H) and can easily manage them 
  61.  
  62. o Comes with detailed online documentation in .INF format 
  63.  
  64. In the sequel all available commands will be listed in a semantic grouping. For 
  65. a command reference see Command reference in the apppendix. 
  66.  
  67. Note, that when this document speaks about a 'screen', and you are running EHP 
  68. in an OS/2 PM text window, then screen means that window. Don't intermix PM 
  69. windows with EHP windows! 
  70.  
  71. Note, that the following words are sometimes used as synonyms: 
  72.  
  73. o RETURN and ENTER 
  74.  
  75. o Space and blank 
  76.  
  77. o Tab and tabstop 
  78.  
  79.  
  80. ΓòÉΓòÉΓòÉ 2. Registration ΓòÉΓòÉΓòÉ
  81.  
  82. If you are using EHP for more than four weeks you will have to register. Please 
  83. register by sending $10 or DM 10,- and your EMail address to 
  84.  
  85.     Axel Uhl
  86.     Weinbrennerstra╤üe 108
  87.     76185 Karlsruhe
  88.     Germany
  89.  
  90. This will yield you an unlimited license of using all further releases of EHP. 
  91. Additionally, it will provide you the advantage of receiving the latest updates 
  92. via UUENCODED EMail (please write if you don't need this, e.g. due to EMail 
  93. cost). 
  94.  
  95. To state it once again: EHP is completely uncrippled. Please note this, be 
  96. equally fair and register if you are really using this editor. 10$ is nothing 
  97. for an editor with EHP's features. 
  98.  
  99.  
  100. ΓòÉΓòÉΓòÉ 3. Installing EHP ΓòÉΓòÉΓòÉ
  101.  
  102. The installation of EHP is quite simple. Place the file EHP.EXE in a directory 
  103. contained in your PATH, e.g. c:\os2\bin. Place the keyboard definition file 
  104. tasten.inf in a directory of your choice, say also c:\os2\bin. Edit your 
  105. CONFIG.SYS file and insert the line SET EHPINIT=keys c:\os2\bin\tasten.inf. 
  106. This forwards the path of the keyboard file to EHP. For further settings via 
  107. EHPINIT see EHPINIT. Further, the dynamic link library EMX.DLL must be in a 
  108. directory contained in your LIBPATH. 
  109.  
  110.  
  111. ΓòÉΓòÉΓòÉ 4. General information ΓòÉΓòÉΓòÉ
  112.  
  113. This section contains information about invoking EHP, the contents of the 
  114. screen, user interaction and accepted fileformats. 
  115.  
  116.  
  117. ΓòÉΓòÉΓòÉ 4.1. Invoking EHP ΓòÉΓòÉΓòÉ
  118.  
  119. Precondition for invoking EHP is the correct installation of EHP. If this is 
  120. done, you can start the editor by typing ehp at the command prompt. You can 
  121. provide the names of files to load as parameters. E.g. the command 
  122.  
  123. ehp x y z 
  124.  
  125. loads the files x, y and z each into a seperate window. The window displayed on 
  126. top of the others is the one named first, in this case x, since files are 
  127. loaded in reverse order, and each newly opened window becomes the top window. 
  128. Note, that the numbering of the windows is also in reverse order. The numbering 
  129. can be used to switch among the windows. 
  130.  
  131. If no parameters were provided, EHP looks for a configuration file. If such a 
  132. file exists, the editor is restored in the state it was in when quitting it 
  133. before. Otherwise you are asked for the name of a file to load. If a file with 
  134. that name does not exist, you are asked whether you want to create it. If so, a 
  135. new empty file is presented. Otherwise the editor terminates with a 
  136. corresponding message. 
  137.  
  138.  
  139. ΓòÉΓòÉΓòÉ 4.2. Screen contents ΓòÉΓòÉΓòÉ
  140.  
  141. This section describes the outfit of windows, the position and the contents of 
  142. the status line and the colors. 
  143.  
  144.  
  145. ΓòÉΓòÉΓòÉ 4.2.1. Windows ΓòÉΓòÉΓòÉ
  146.  
  147. A window is a rectangular part of the screen, on which text is presented in a 
  148. frame. Since it is possible to look at multiple windows at the same time, the 
  149. current window's frame is highlighted. The frame contains helpful information 
  150. and control areas for the mouse. 
  151.  
  152.  
  153. Headline 
  154.  
  155. In the headline you find the current line and column number, information about 
  156. insert/overwrite (Insert or Overwrite), underline (Under), autoindent (Indent), 
  157. shell (SHELL) and tab (Tabs or Spcs) mode. 
  158.  
  159.  
  160. Footline 
  161.  
  162. In the footline the window number and the filename are displayed. If the file 
  163. is read only, then WRITEPROTECTED is displayed. If the file was modified after 
  164. loading or after the last saving, then MODIFIED is displayed in the footline. 
  165. Such modified files are saved when quitting the editor with the save option (of 
  166. course only, if the file was not write protected). 
  167.  
  168.  
  169. ΓòÉΓòÉΓòÉ 4.2.2. Status line ΓòÉΓòÉΓòÉ
  170.  
  171. The status line is the bottom line of the screen. Here the helptexts for the 
  172. keycommands and error messages are displayed. 
  173.  
  174.  
  175. ΓòÉΓòÉΓòÉ 4.2.3. Colors ΓòÉΓòÉΓòÉ
  176.  
  177. The default color setting is the following: 
  178.  
  179. o Grey 
  180.  
  181.   This is the color normal text and frames of inactive windows appear in. 
  182.  
  183. o Green 
  184.  
  185.   Highlighted blocks and the frame of the current window appear green. 
  186.  
  187. o Red 
  188.  
  189.   With red underlined text passages are displayed. 
  190.  
  191. o Brown 
  192.  
  193.   If underlined text appears in a highlighted block, it is colored brown. 
  194.  
  195.  
  196. ΓòÉΓòÉΓòÉ 4.3. Interaction ΓòÉΓòÉΓòÉ
  197.  
  198. An input consisting of more than one letter (except the key commands) has to be 
  199. terminated with the ENTER-key. This are for example filenames or line numbers. 
  200. If EHP expects exactly one letter (for example in a yes/no query), pressing the 
  201. letter suffices and pressing ENTER is not needed. 
  202.  
  203. Error messages, which are displayed in the status line must be confirmed with 
  204. ENTER. If a hint is displayed in the status line, e.g. the new status of the 
  205. the status of a binary variable, like the blockhighlighting status, this hint 
  206. will disappear automatically after a couple of seconds. 
  207.  
  208. The keyboard commands are case sensitive. That means, if e.g. in the command 
  209. reference there is a command CTRL-x n then you have to use a lower-case n. 
  210. Note, that hence having Caps Lock activated accidently will cause troubles in 
  211. executing commands. 
  212.  
  213.  
  214. ΓòÉΓòÉΓòÉ 4.4. Fileformat ΓòÉΓòÉΓòÉ
  215.  
  216. The files to edit must be in ASCII format. With OS/2 the size of texts is 
  217. limited to some GB, which will satisfy most needs and will exceed swap space in 
  218. most cases. However, if a file should still be too large to load, an error 
  219. message will be displayed. 
  220.  
  221. If lines longer than 500 characters appear, they will be wrapped (see also 
  222. Limits and bugs). The limit on the number of lines is 4G due to the limit of 
  223. integers, but this has no effect, since memory limits are more strict. 
  224.  
  225. Note, that binary files should not be edited with EHP, since e.g. tabs are 
  226. expanded during load, and are only recompressed at the beginning of a line 
  227. (important for tools like MAKE). This could lead to an unexpected and 
  228. unpleasant change in representation. 
  229.  
  230. A combination of an underscore followed by a backspace and a character is 
  231. interpreted as if that character is underlined. Characters entered in EHP's 
  232. underline mode are written to file in the same representation. Due to this 
  233. representation, if manually an underscore followed by a backspace (entered via 
  234. CTRL-c Backspace) is inserted before a character, this character will appear 
  235. underlined in the sequel. This is also true for an underscore-backspace 
  236. combination entered at the end of a line, which will be converted into an 
  237. underlined space. 
  238.  
  239.  
  240. ΓòÉΓòÉΓòÉ 5. Commands ΓòÉΓòÉΓòÉ
  241.  
  242. The keyboard mapping for commands was chosen in a way that key combinations can 
  243. be remembered as easily as possible. However, a compromise had to be found 
  244. between shortness of commands and the mnemonic property. So for heavily used 
  245. commands sometimes in the predefined keyboard mapping a somewhat cryptical 
  246. combination has been chosen to speed up everyday's work (e.g. CTRL-t for 
  247. 'delete word'). 
  248.  
  249. The key combinations for invoking the commands may be changed by using the 
  250. withcoming tool KM, explained below (see Keyboard remapping). 
  251.  
  252. Note, that if typing an illegal combination, all typed keys belonging to the 
  253. current command are discarded up to and including the one causing the sequence 
  254. to be illegal. Say for example you wanted to type the command for deleting a 
  255. block (CTRL-b d) but you hit s instead of d, then the CTRL-b and the s are 
  256. discarded. This can of course be used as a kind of escape facility. E.g. the 
  257. spacebar is currently not assigned any command. So pressing SPACE escapes from 
  258. a multi-key command. 
  259.  
  260.  
  261. ΓòÉΓòÉΓòÉ 5.1. Moving text and cursor ΓòÉΓòÉΓòÉ
  262.  
  263.  
  264. ΓòÉΓòÉΓòÉ 5.1.1. Change cursorposition ΓòÉΓòÉΓòÉ
  265.  
  266. In order to position the cursor there are many commands. All have in common 
  267. that they can't move the cursor beyond the last line of the text and beyond 
  268. column 501 (see Limits and Bugs). If the cursor would move out of the window, 
  269. the text is scrolled accordingly. 
  270.  
  271. The following sections will describe the single commands in detail. 
  272. Character oriented 
  273.  
  274. o Arrow-left 
  275.  
  276.   moves the cursor one column left, if not already in column 1. If in column 1, 
  277.   then the cursor is moved to the end of the previous line, if the current line 
  278.   number was greater than 1. 
  279.  
  280. o Arrow-right 
  281.  
  282.   moves the cursor one column right, if not already in column 501. 
  283.  
  284. Word oriented 
  285.  
  286. Word separator are the following characters: .,#:;]@$&()[]{}!?'`/\<>-+*=" in 
  287. addition to TAB, SPACE and a line break. 
  288.  
  289. o CTRL-Arrow left 
  290.  
  291.   moves the cursor one word left, if not already at the beginning of the line. 
  292.   Consecutive word separators (except if separated by blanks or tabs) are 
  293.   treated as one word, which makes word skipping much more convenient. By the 
  294.   way: this is the way, VI does word skipping, too. 
  295.  
  296. o CTRL-Arrow right 
  297.  
  298.   moves the cursor one word right, if not already at the last word of the line. 
  299.   As stated above, consecutive word separators not separated by blanks or tabs 
  300.   are treated as one word. If the cursor is placed on the last word in a line, 
  301.   this function places the cursor immediately right to the end of the line (as 
  302.   if the End-key had been pressed). 
  303.  
  304. Line oriented 
  305.  
  306. o Home 
  307.  
  308.   moves cursor to the beginning of the current line. 
  309.  
  310. o End 
  311.  
  312.   moves cursor to the end of the current line. 
  313.  
  314. o Arrow up 
  315.  
  316.   moves cursor up one line, if not already in first line of current file. 
  317.  
  318. o Arrow down 
  319.  
  320.   moves cursor down one line, if not already in last line of current file. 
  321.  
  322. o ENTER (in overwrite mode, see Insert and delete) 
  323.  
  324.   moves cursor to the beginning of the following line, if the current line is 
  325.   not the last line of the current file. 
  326.  
  327. Window oriented 
  328.  
  329. o CTRL-Home 
  330.  
  331.   moves the cursor to the top of the current window. Note that this need not be 
  332.   the first line of the file. 
  333.  
  334. o ALT-Arrow right 
  335.  
  336.   move the cursor to the middle line of the current window. If the last line of 
  337.   the file is displayed above the middle of the window or the window is empty, 
  338.   then the cursor is placed to the last line of the file. 
  339.  
  340. o CTRL-End 
  341.  
  342.   moves the cursor to the bottom of the current window. Note that this need not 
  343.   be the last line of the current file. If the last line of the file is 
  344.   displayed above the bottom of the window, then the cursor is places in the 
  345.   last line of the file. 
  346.  
  347.  
  348. ΓòÉΓòÉΓòÉ 5.1.2. Change window contents ΓòÉΓòÉΓòÉ
  349.  
  350.  
  351. Line oriented 
  352.  
  353. o ALT-Arrow up 
  354.  
  355.   makes current line the top line of the current window. 
  356.  
  357. o ALT-Arrow left 
  358.  
  359.   makes current line the middle line of the current window. 
  360.  
  361. o ALT-Arrow down 
  362.  
  363.   makes current line the bottom line of the current window. 
  364.  
  365. o CTRL-Arrow up 
  366.  
  367.   moves window content up one line, if the current line is not the last line of 
  368.   the current file and is located at the top of the window. The cursor stays in 
  369.   the same line number, if it was not in the top line of the window. If the 
  370.   latter was the case, then it is moved down to the next line. That means it 
  371.   stays on the same screen position in that case. 
  372.  
  373. o CTRL-Arrow down 
  374.  
  375.   moves window content down one line, if the first line on the current file is 
  376.   not already visible in the window. The cursor stays in the same line number, 
  377.   if it was not in the bottom line of the window. If the latter was the case, 
  378.   then it is moved up to the next line. That means it stays on the same screen 
  379.   position in that case. 
  380.  
  381. Page oriented 
  382.  
  383. o PgUp 
  384.  
  385.   scrolls up one page, if not already at the beginning of the file. The 
  386.   direction is hence towards smaller line numbers. 
  387.  
  388. o PgDn 
  389.  
  390.   scrolls down one page, if not already at the end of the file. The direction 
  391.   is hence towards greater line numbers. 
  392.  
  393. o ALT-PgUp 
  394.  
  395.   sctolls up half a page, if not already at the beginning of the file. The 
  396.   direction is hence towards smaller line numbers. 
  397.  
  398. o ALT-PgDn 
  399.  
  400.   scrolls down half a page, if not already at the end of the file. The 
  401.   direction is hence towards greater line numbers. 
  402.  
  403.  
  404. ΓòÉΓòÉΓòÉ 5.1.3. Absolute jumps ΓòÉΓòÉΓòÉ
  405.  
  406. o CTRL-PgUp 
  407.  
  408.   moves the cursor to the first line of the current file. 
  409.  
  410. o CTRL-PgDn 
  411.  
  412.   moves the cursor to the last line of the current file. 
  413.  
  414. o CTRL-g n 
  415.  
  416.   go to a specific line number. The query for the line number is displayed in 
  417.   the status line. 
  418.  
  419. o CTRL-g b 
  420.  
  421.   moves cursor to the beginning of the block marked in the current window. If 
  422.   no block is marked in the current window, then the corsorposition remains 
  423.   unchanged. 
  424.  
  425. o CTRL-g e 
  426.  
  427.   moves cursor to the end of the block marked in the current window. If no 
  428.   block is marked in the current window, then the corsorposition remains 
  429.   unchanged. 
  430.  
  431. o CTRL-g l 
  432.  
  433.   move the cursor to the so-called 'last position'. This position is saved, 
  434.   when a jump to the beginning or the end of a file, a search, a replace or any 
  435.   of the CTRL-g commands is performed. By the latter it is possible to jump 
  436.   back and forth between two positions by repeatedly doing CTRL-g l. 
  437.  
  438. o Left mouse button 
  439.  
  440.   By moving the mouse pointer to a suitable position and pressing the left 
  441.   mouse button once, the cursor is moved to the mouse position. Note, that this 
  442.   also works, if the mouse pointer is located outsinde the current window (see 
  443.   window switching). 
  444.  
  445. o CTRL-p 
  446.  
  447.   move the cursor to the bracket or parenthesis matching the one being nearest 
  448.   to the cursor. This command is extremely useful for testing the matching of 
  449.   nested parenthesis / curly braces as they appear in C or in LISP. If no 
  450.   matching parenthesis / bracket is found, EHP issues a beep. 
  451.  
  452.  
  453. ΓòÉΓòÉΓòÉ 5.1.4. Marker ΓòÉΓòÉΓòÉ
  454.  
  455. There is a total of ten markers which may be set anywhere in open windows. 
  456. Markers are global, which means, that a marker not only contains the cursor 
  457. line and column, but also the window index. This may be helpful for performing 
  458. fast window switching, since of course the window of the marker jumped to is 
  459. made to be the current window. 
  460.  
  461. o CTRL-g s <n> 
  462.  
  463.   sets marker number <n> at the current position. 
  464.  
  465. o CTRL-g g <n> 
  466.  
  467.   goes to marker number <n> and activates the corresponding window. 
  468.  
  469.  
  470. ΓòÉΓòÉΓòÉ 5.2. File operations ΓòÉΓòÉΓòÉ
  471.  
  472. The following operations always refer to the current window and to the whole 
  473. file in the window. 
  474.  
  475. o CTRL-e l 
  476.  
  477.   loads a file into the current window. The file in the current window, and all 
  478.   unsaved changes applied to it, are discarded after a security query. The name 
  479.   of the file to load is asked for in the status line. If a file with that name 
  480.   is already contained in another open window, then this is announced and one 
  481.   can choose to edit that window or nevertheless load the file in the current 
  482.   window. Note, that the latter causes two possibly different copies of the 
  483.   same file to be held in EHP, which could lead to loss of changes. 
  484.  
  485. o CTRL-e s 
  486.  
  487.   saves the file contained in the current window. If the backupoption is 
  488.   activated, the file, which would be going to be overwritten, gets the 
  489.   extension '.bak'. File attributes (system, hidden etc.) remain as they were 
  490.   when loading the file. New files are created as non-system, non-hidden and 
  491.   writeable. 
  492.  
  493. o CTRL-e r 
  494.  
  495.   renames the file and saves it under the new name. The new file name is asked 
  496.   for in the status line. Note, that the file with the old name is not deleted. 
  497.   Subsequent saving causes the file to be saved with the new name. 
  498.  
  499. o CTRL-e m 
  500.  
  501.   saves all modified files. Files not modified are not written to disk on this 
  502.   command. 
  503.  
  504.  
  505. ΓòÉΓòÉΓòÉ 5.3. Block operations ΓòÉΓòÉΓòÉ
  506.  
  507. EHP offers a great variety of block commands. It is important to know, that EHP 
  508. supports two kinds of blocks. There are the so-called rectangular blocks. They 
  509. are defined by marking the upper left corner and the character right to the 
  510. lower right corner. The rectangular field between is the block. These blocks 
  511. are nice to move parts of tables or comments in a program. 
  512.  
  513. The second block kind is the so-called normal block. One marks the first 
  514. character and the character right to the last character. All the text between 
  515. (with line wrapping etc.) belongs to the block. These blocks are good for 
  516. moving whole paragraphs or parts of paragraphs. 
  517.  
  518.  
  519. ΓòÉΓòÉΓòÉ 5.3.1. Updating of block boundaries ΓòÉΓòÉΓòÉ
  520.  
  521. When inserting lines before a block, then the beginning and the end of the 
  522. block are moved correspondingly. So the text does not move through the block, 
  523. but the marked block moves and the block contents stay the same. When a line is 
  524. inserted within the block, then the block end moves one line down. When 
  525. characters are inserted or deleted within a block, then the resulting block 
  526. changes depend on the block kind. 
  527.  
  528. For normal blocks if the character was inserted/deleted in the last block line 
  529. (i.e. the block end is on the current line), then the block end moves 
  530. right/left one position. 
  531.  
  532. For rectangular blocks the block remains rectangular with the same width all 
  533. the time. That means, that characters may be moved outside/into the block. 
  534.  
  535.  
  536. ΓòÉΓòÉΓòÉ 5.3.2. Blockhighlighting ΓòÉΓòÉΓòÉ
  537.  
  538. If a block was correctly marked, i.e. the block end comes after the block 
  539. beginning (though you can mark them in any order) and the blockhighlighting is 
  540. activated, then the block is displayed in a color different from the standard 
  541. text color. The blockhighlighting can also be turned off via the environment 
  542. variable EHPINIT. 
  543.  
  544.  
  545. ΓòÉΓòÉΓòÉ 5.3.3. Block oriented commands ΓòÉΓòÉΓòÉ
  546.  
  547. Note, that the following commands perform actions on blocks local to the 
  548. current window except the commands 'Cut' and 'Paste'. Only with these two 
  549. commands it is possible to move blocks between windows. 
  550.  
  551. o CTRL-b b 
  552.  
  553.   marks the beginning of a block. The character the cursor is on is the first 
  554.   one belonging to the block. 
  555.  
  556. o CTRL-b n 
  557.  
  558.   marks the end of a normal block. The current character is the first one not 
  559.   belonging to the block. 
  560.  
  561. o CTRL-b r 
  562.  
  563.   marks the end of a rectangular block. The current character is the first one 
  564.   not belonging to the block. 
  565.  
  566. o CTRL-b u 
  567.  
  568.   unmarks the block. That means, that block beginning and block end are 
  569.   unmarked and that, if it was activated, the blockhighlighting disappears. 
  570.  
  571. o CTRL-b c 
  572.  
  573.   copies the marked block to the current cursor position. The block is 
  574.   inserted, so no characters are overwritten. In case of a rectangular block a 
  575.   check is performed, if insertion of the block does not collide with the 
  576.   maximum line length. If it does, then the block is not inserted. If no block 
  577.   was marked, nothing happens. 
  578.  
  579. o CTRL-b m 
  580.  
  581.   moves the marked block to the cursor position. As with copying, a check is 
  582.   done to see, if a rectangular block does not collide with the maximum line 
  583.   length, if inserted at the cursor position. It is not moved, if it does 
  584.   collide. If no block was marked, nothing happens. 
  585.  
  586. o CTRL-b d 
  587.  
  588.   deletes the marked block. You can undo this command by using the block copy 
  589.   command CTRL-b c. But note, that this undoing only works as long as no new 
  590.   block boundary has been set. Furthermore, the buffered deleted block is 
  591.   discarded when exiting EHP and is not stored in the configuration file. 
  592.  
  593. o CTRL-b i 
  594.  
  595.   indents the block by a certain amount of columns to the right or left. The 
  596.   number of columns is queried in the status line. Providing a positive number 
  597.   shifts the block to the right, a negative number to the left. Note, that a 
  598.   negative number with an absolute value greater than the maximum number of 
  599.   leading spaces in the block leads to loss of characters in such lines, since 
  600.   they are shifted 'outside the window'. All block lines including block 
  601.   starting line and block ending line are shifted, except when the block end is 
  602.   on the first column of a line. Then this line is not shifted left, since no 
  603.   character of that line belongs to the block. Block start and end column are 
  604.   shifted also, except the block end column was in the first column. In this 
  605.   case indenting the block will leave the block end column unchanged. This will 
  606.   cause the line, where the block end is set, not to fall into the block, which 
  607.   would be surprising, when indenting the same block again. 
  608.  
  609. o CTRL-b r 
  610.  
  611.   reads a file, of which the name is asked for in the status line and inserts 
  612.   it at the cursor position. The file contents are marked as a normal block. 
  613.  
  614. o CTRL-b w 
  615.  
  616.   writes the marked block to a file, of which the name is asked for in the 
  617.   status line. This works for normal and rectangular blocks. 
  618.  
  619. o CTRL-b f 
  620.  
  621.   passes the block contents to an external filter (e.g. SORT), deletes the 
  622.   block and inserts the filter outputs as a new block at the position of the 
  623.   old one. If the filter returns with a non-zero value, one can decide, whether 
  624.   the results should nevertheless be inserted as block or if they should be 
  625.   discarded. The former can be useful for programs, which are known to return 
  626.   non-zero values even if no error occurred. 
  627.  
  628.   Note, that the name of the used filter serves as default for the next call. 
  629.   Thus the previously used filter name is displayed in the prompt for the new 
  630.   filter name. If one wants to use the default, one just has to press ENTER 
  631.   without providing the filter name. 
  632.  
  633. o CTRL-b t 
  634.  
  635.   cuts the block. This is not a cut in the common sense, since it has become a 
  636.   standard for cut operations to delete the cutted part. This cut only copies 
  637.   the marked block into the so-called 'paste buffer'. The contents of the paste 
  638.   buffer can be inserted in any window, as described in the sequel. 
  639.  
  640. o CTRL-b p 
  641.  
  642.   pastes the contents of the paste buffer into the current window at the cursor 
  643.   position. To do this, one previously has to cut a block with the CTRL-b p 
  644.   command. The paste buffer is not emptied by this command. Hence one can 
  645.   repeatedly insert the same block by iterating the command. 
  646.  
  647. o Left mouse button with moving 
  648.  
  649.   By pressing the left mouse button on the first block character and releasing 
  650.   it on the first non-block character, one marks a normal block. 
  651.  
  652. o Right mouse button with moving 
  653.  
  654.   By pressing the right mouse button on the first block character and releasing 
  655.   it on the first non-block character, one marks a rectangular block. 
  656.  
  657. o Clicking the right mouse button 
  658.  
  659.   has two functions depending on whether a block is marked in the current 
  660.   window and whether a block is contained in the paste buffer. If a block is 
  661.   marked in the current window, then the cut command is performed, storing the 
  662.   block in the paste buffer. In addition the block is unmarked. 
  663.  
  664.   If no block is marked in the current window, but the paste buffer is not 
  665.   empty, then the paste buffer contents are inserted at the mouse position 
  666.   (corresponds to the paste command). If the paste buffer is empty, only the 
  667.   cursor is positioned at the mouse position. 
  668.  
  669. o Middle mouse button with left mouse button 
  670.  
  671.   If the middle mouse button is held down and then the left button is pressed, 
  672.   a block marked in the current window is moved to the mouse position. If no 
  673.   block was marked in the current window, nothing happens. 
  674.  
  675. o Middle mouse button with right mouse button 
  676.  
  677.   If the middle mouse button is held down and then the right button is pressed, 
  678.   a block marked in the current window is deleted. If no block was marked in 
  679.   the current window, nothing happens. 
  680.  
  681.  
  682. ΓòÉΓòÉΓòÉ 5.4. Window commands ΓòÉΓòÉΓòÉ
  683.  
  684. The most obvious feature of EHP is the possibility to edit multiple texts quasi 
  685. simultaneously by using windows. The editor functions for the use of windows 
  686. are explained below. 
  687.  
  688.  
  689. ΓòÉΓòÉΓòÉ 5.5. Window switching ΓòÉΓòÉΓòÉ
  690.  
  691. o CTRL-w p 
  692.  
  693.   makes the window which was previously active become the current window. 
  694.   Successively using CTRL-w p thus jumps back and forth between two windows. 
  695.  
  696. o CTRL-w n 
  697.  
  698.   makes the next window the current one (whatever 'next' will be). Only one 
  699.   this about 'next' is asserted: one can use it to cycle through all opened 
  700.   windows. 
  701.  
  702. o CTRL-w d 
  703.  
  704.   makes a window containing a certain file become the current window. The file 
  705.   name must be entered in the status line after issuing the command. If no file 
  706.   with the desired name is in any window, one gets the option to load the 
  707.   specified file into a new window. 
  708.  
  709. o CTRL-w i 
  710.  
  711.   makes the window with a certain number the current window. The window number 
  712.   is queried in the status line. If a window with the specified number does not 
  713.   exist, an error message is displayed. 
  714.  
  715. o Left mouse button 
  716.  
  717.   By clicking with the left mouse button, the window on which the mouse points 
  718.   becomes the current window and the cursor is placed on the mouse position 
  719.   (except the window frame was hit). 
  720.  
  721.  
  722. ΓòÉΓòÉΓòÉ 5.5.1. Changing size and position ΓòÉΓòÉΓòÉ
  723.  
  724. The size and position of each window can be changed either by using the 
  725. corresponding key commands or by using the mouse. In general it is advisable to 
  726. use the mouse. Key commands for that take some time to get used to... 
  727.  
  728. o CTRL-w s 
  729.  
  730.   leads to a mode where you can use the cursor keys to resize the current 
  731.   window. Only the corners of the window frame are displayed. Cursor keys move 
  732.   the lower right corner. Hitting ENTER confirms the chosen size. 
  733.  
  734.   By pressing 's' during adjustment one can toggle the stepwidth between 5 and 
  735.   1. 
  736.  
  737. o CTRL-w m 
  738.  
  739.   leads to a mode, in which the position of the current window can be changed. 
  740.   The whole window, of which only the corners are displayed during movement, 
  741.   can be moved via the cursor keys. As in resizing, pressing 's' toggles the 
  742.   stepwidth between 5 and 1. 
  743.  
  744. o CTRL-w t 
  745.  
  746.   EHP stores two positions for each window. When a window is opened, both are 
  747.   set to full size. When you now move or resize the window, the second stored 
  748.   size/position remains unchanged. You can switch between these two 
  749.   sizes/positions by using this command. Of course the second position remains 
  750.   only as long full screen as you don't change it. It is thus possible to work 
  751.   with two size/position pairs which are both non-fullscreen. 
  752.  
  753. o Left mouse button on lower right corner 
  754.  
  755.   By pressing the left mouse button on the lower right window corner and 
  756.   holding it down, one can resize the window by moving the mouse with the left 
  757.   button pressed. As when changing window position by key commands, the window 
  758.   size is indicated only by its four corners. Releasing the button confirms the 
  759.   chosen size. 
  760.  
  761. o Left mouse button on upper window border 
  762.  
  763.   By pressing the left mouse button on the top window border and holding it 
  764.   down, one can move the window by moving the mouse with the left button 
  765.   pressed. As when changing window position by key commands, the window 
  766.   position is indicated only by its four corners. Releasing the button confirms 
  767.   the chosen position. 
  768.  
  769. o Left mouse button on upper right corner 
  770.  
  771.   By pressing the left mouse button on the upper right window corner and 
  772.   holding it down, one can switch between the two window sizes. This 
  773.   corresponds to the key command CTRL-w t. 
  774.  
  775.  
  776. ΓòÉΓòÉΓòÉ 5.5.2. Open and close windows ΓòÉΓòÉΓòÉ
  777.  
  778. EHP allows to have as many windows open simultaneously, as there are 32-bit 
  779. integers (though this limit may be somewhat theoretically, since memory limits 
  780. will be much more severe. 
  781.  
  782. o CTRL-w o 
  783.  
  784.   asks for the file name in the status line and loads the named file into a new 
  785.   window. If the file is already in an open window, EHP asks, whether it is 
  786.   desired to switch to that window instead of opening a new one. 
  787.  
  788.   The newly opened window is assigned the smallest free window number and both 
  789.   window sizes are set to the size of the screen. The cursor is placed in the 
  790.   first line and the first column and autoindent is activated, if specified in 
  791.   EHPINIT. The tab-compression is activated by default. The tab length is set 
  792.   to the default 8, if not specified different by command or via EHPINIT. The 
  793.   window is put to insert mode by default and underlining is turned off. Shell 
  794.   mode is deactivated by default. 
  795.  
  796. o CTRL-w c 
  797.  
  798.   closes the current window. If changes were made to the text (indicated by 
  799.   MODIFIED in the bottom frame border), a confirmation is requested, avoiding 
  800.   accidental loss of changes. 
  801.  
  802.  
  803. ΓòÉΓòÉΓòÉ 5.6. Insert and delete ΓòÉΓòÉΓòÉ
  804.  
  805. EHP distinguishs the insert mode and the overwrite mode. The mode is local to 
  806. each window and is indicated in the top frame border (Insert or Overwrt). If in 
  807. insert mode, typed characters are inserted in the text, in overwrite mode 
  808. existing characters are overwritten. In order to switch between modes, use the 
  809. following: 
  810.  
  811. o Ins 
  812.  
  813.   toggles between insert and overwrite mode 
  814.  
  815. o Del 
  816.  
  817.   deletes the current character (the one the cursor is on). If there are 
  818.   characters to the right of the cursor, they are pulled left one position. If 
  819.   the cursor was right of the end of the line, hitting Del causes the current 
  820.   line to be joined with the subsequent one (see also CTRL-j described below). 
  821.  
  822. o Backspace 
  823.  
  824.   deletes the character left to the cursor. Characters to the right of the 
  825.   cursor including the one the cursor is on are pulled left one position. If 
  826.   the cursor was on the first column of a line, then the current line is joined 
  827.   with the line above, provided that the current line was not the first line of 
  828.   the current file. See also CTRL-j described below for joining lines. 
  829.  
  830. o CTRL-t 
  831.  
  832.   deletes all characters beginning with the one under the cursor up to the last 
  833.   character before the next word. If there is no next word, because the cursor 
  834.   is placed in the last word of the line, then all characters up to the end of 
  835.   the line are deleted. 
  836.  
  837. o CTRL-y 
  838.  
  839.   deletes the current line. It can be restored with CTRL-k as described below. 
  840.  
  841. o CTRL-k 
  842.  
  843.   inserts the last deleted line before the current line. 
  844.  
  845. o CTRL-q 
  846.  
  847.   deletes from the cursor to the right up to the end of the line including the 
  848.   current character. 
  849.  
  850. o CTRL-a 
  851.  
  852.   inserts an empty line at the current cursor position. The current line is 
  853.   thus moved down one line. If autoindent is active, then the cursor is 
  854.   indented accoring to the current line. That means, if e.g. the current line 
  855.   starts with 5 blanks and CTRL-a is performed with autoindent active, then the 
  856.   cursor is positioned in column 6 of the inserted line. Note, that only 
  857.   non-underlined blanks count for this purpose, as well as only non-underlined 
  858.   blanks are inserted for doing the indentation, regardless of the current 
  859.   underline mode. 
  860.  
  861. o CTRL-o 
  862.  
  863.   inserts a line below the current line. If autoindent is active, then the 
  864.   cursor is indented according to the current line. That means, if e.g. the 
  865.   current line starts with 5 blanks and CTRL-a is performed with autoindent 
  866.   active, then the cursor is positioned in column 6 of the inserted line. As 
  867.   with all indentation, underlined blanks do not count as blanks for 
  868.   determining the indent width. Also, the inserted blanks are not underlined, 
  869.   no matter what the current underline mode is. 
  870.  
  871. o ENTER 
  872.  
  873.   If in insert mode, the current line is splitted at the cursor position and 
  874.   the part from the cursor to the right is placed in the inserted line. The new 
  875.   line is indented according to the splitted line, if autoindent is active. For 
  876.   this indentation always non-underlined blanks are used, for doing the 
  877.   indentation as well as for determining the indentation width (see also 
  878.   Underline). The cursor will be located in the first column of the inserted 
  879.   line afterwards. If in overwrite mode, then the cursor is placed in the first 
  880.   column of the next line, if the current line is not the last line in the 
  881.   file. No line is inserted in overwrite mode. 
  882.  
  883. o CTRL-j 
  884.  
  885.   joins the current line with the subsequent line. First the cursor is placed 
  886.   two characters behind the end of the current line. Then the following line is 
  887.   moved to the cursor position, if the length of the line doesn't exceed 500 
  888.   characters (see Limits and Bugs). While doing this, leading blanks are 
  889.   removed from the line moved to the corsor position. So, there remains exactly 
  890.   one blank character between the current line and the following line. 
  891.  
  892.   Note the funny feature, that CTRL-ENTER is equal to CTRL-j under OS/2 and 
  893.   thus invokes the joining of lines. 
  894.  
  895.  
  896. ΓòÉΓòÉΓòÉ 5.7. Find and replace ΓòÉΓòÉΓòÉ
  897.  
  898. Searching with EHP supports regular expressions for matching patterns. All 
  899. expressions available with grep should work with EHP, too. If there is much 
  900. searching done on special characters like '[' or '.', then regular expressions 
  901. might slow down work and can therefore be turned off by using EHPINIT or by 
  902. command (see Miscellaneous for a description of the command) or by option when 
  903. doing the search. 
  904.  
  905.  
  906. ΓòÉΓòÉΓòÉ 5.7.1. Regular expressions ΓòÉΓòÉΓòÉ
  907.  
  908. Regular expression pattern matching is done with the GNU REGEX package. Thus 
  909. the recognized expressions should be the same as with grep. The most important 
  910. regular expression rules will now be summarized. Note, that 'X' stands for an 
  911. arbitrary regular expression. 
  912.  
  913. Pattern   matches 
  914.  
  915. non-special character Each non-special character builds a basic regular 
  916.           expression. 
  917.  
  918. . (dot)   matches any character. 
  919.  
  920. \(X\)     groups the expression X. May be used nested. 
  921.  
  922. \n        where n is a number, refers to the n-th group. Groups are numbered in 
  923.           increasing order depending on the position of the left group 
  924.           parenthesis from left to right. The \n refers to the text matched by 
  925.           the group (not the pattern itself). That means for example, that 
  926.           '\(oh+\) \1' matches 'oh oh' and 'ohh ohh', but not 'oh ohh' or 'ohh 
  927.           oh'. 
  928.  
  929. X+        matches an non-zero number of subsequent X's. 
  930.  
  931. X*        matches an arbitrary number of subsequent X's. Zero occurrences are 
  932.           included. For example '\(ab\)*' matches 'abab'. 
  933.  
  934. X?        matches zero or one occurrence of X. 
  935.  
  936. [Y]       matches all characters contained in Y. Here Y is not an arbitrary 
  937.           regular expression. Instead, Y may consist of a number of single 
  938.           characters ([yYnN]) and of sequences. Sequences are specified by the 
  939.           start and the end of the sequence separated by a dash. For example 
  940.           [a-zA-Z] matches all letters, and [0-9] matches all digits. 
  941.  
  942. ^X        matches X, if it is found at the beginning of the line. 
  943.  
  944. X$        matches X, if it is found at the end of the line. 
  945.  
  946. \<X       matches X at the beginning of a word. 
  947.  
  948. X\>       matches X at the end of a word. 
  949.  
  950. \         is the escape character. To avoid interpretation of a special 
  951.           character (like '[' or '*'), such characters must be preceded by a 
  952.           backslash. To search for a backslash double the backslash ('\\'). 
  953.           Note, that a parenthesis matches itself, while an escaped parenthesis 
  954.           is good for grouping patterns (see above). 
  955.  
  956.  
  957. ΓòÉΓòÉΓòÉ 5.7.2. Find and replace commands ΓòÉΓòÉΓòÉ
  958.  
  959. o CTRL-f f 
  960.  
  961.   searches for a pattern, which is asked for in the status line. By default the 
  962.   search is case sensitive and is directed forward. It starts at the character 
  963.   right to the cursor (important for repeated searches) and wraps around the 
  964.   end of the text to the beginning. By default, the search pattern is 
  965.   interpreted as a regular expression as used with grep. See above for turning 
  966.   regular expressions off and note the options 'x' and 'n' explained in the 
  967.   sequel. When the search pattern is empty, no search is done. 
  968.  
  969.   When the search pattern has been entered, EHP asks for the options in the 
  970.   status line. The following options can be combined as you like (no options is 
  971.   allowed, too; just press ENTER). Exceptions are, that b and e exclude each 
  972.   other and that r has no effect, if b or e are used. Available are: 
  973.  
  974.    Option         Effect 
  975.    <number>       find the <number>th occurrence of the pattern 
  976.    r              search in reverse direction 
  977.    i              ignore case (case insensitive search) 
  978.    w              find words only (found pattern must be limited by a word 
  979.                   separator 
  980.    b              search from the beginning of the text 
  981.    e              search from the end of the text in reverse direction 
  982.    x              interpret regular expressions in search pattern 
  983.    n              don't interpret regular expressions in search pattern 
  984.  
  985. o CTRL-f r 
  986.  
  987.   ssearches a specified number of times for a pattern and replaces it. By 
  988.   default, EHP asks before replacing a found pattern. This can be turned off 
  989.   using the options. Another default is, to underline the replace expression 
  990.   according to the underlining of the first character of the found pattern. 
  991.   Imagine, the text was 'documentation for editor EHP in INF format', and the 
  992.   replace is started with search pattern 'EHP' and replace pattern 'VI', then 
  993.   the replacement string is underlined, since the first letter of the found 
  994.   'EHP' was underlined. The resulting text is thus 'documentation for editor VI 
  995.   in INF format'. The underlining of the replace expression can be modified 
  996.   using the options. Note the difference between the number option with the 
  997.   find and the replace command: when doing find with option '10', the 10th 
  998.   occurrence is found. When replacing with option '10', the first 10 
  999.   occurrences are replaced (NOT only the 10th occurrence!). Options are as with 
  1000.   find, additionally the following options are available: 
  1001.  
  1002.    Option    Effect 
  1003.    a         replace all occurrences in the current file 
  1004.    g         global: don't ask for replacement 
  1005.    u         underline according to underline state This means, that the 
  1006.              replace expression underlining is not determined from the 
  1007.              underline state of the found pattern's first character, but from 
  1008.              the current underline state in the current window (indicated in 
  1009.              the window's top border). Thus, if underlining is turned on for 
  1010.              the current window, then the replace expression is underlined 
  1011.              regardless of underlining of the found pattern. 
  1012.  
  1013. o CTRL-n or CTRL-f a 
  1014.  
  1015.   repeats the last search or replace action. The search and replace patterns 
  1016.   remain the same. Only the number provided in the options is reset to 1 
  1017.   (nevertheless, when doing replace, option a is interpreted as before), and 
  1018.   options b and e are removed. 
  1019.  
  1020.  
  1021. ΓòÉΓòÉΓòÉ 5.7.3. Find multiple spaces ΓòÉΓòÉΓòÉ
  1022.  
  1023. When searching or replacing, the search pattern may contain blanks. Due to 
  1024. EHP's internal representation of text, blanks beyond the end of the line are 
  1025. not matched. That implies, that an empty line is not matched by a search 
  1026. pattern consisting of one blank. Note this for example, if a search is done for 
  1027. 'not ': a 'not' at the end of line is not found with this pattern. Use either 
  1028. the w option (for finding words only) or construct a suitable regular 
  1029. expression. 
  1030.  
  1031.  
  1032. ΓòÉΓòÉΓòÉ 5.8. Tabs and indentation ΓòÉΓòÉΓòÉ
  1033.  
  1034. EHP supports two kinds of tabstops: tabs with fixed width and tabs depending on 
  1035. word boundaries of the above line. Which kind of tabs is used depends on the 
  1036. autoindent mode of the current window. 
  1037.  
  1038. Tabs are expanded to spaces in the text. If tab-compression is activated, each 
  1039. 8 (independent of the chosen tabwidth) leading spaces on a line are compressed 
  1040. into a tab when the text is written to a file. Otherwise they remain spaces. 
  1041. Tab-compression is turned on by default. 
  1042.  
  1043. o CTRL-s a 
  1044.  
  1045.   toggles the autoindent mode for the current window. The mode is displayed in 
  1046.   the top window border (Insert or Overwrt). 
  1047.  
  1048.  
  1049. ΓòÉΓòÉΓòÉ 5.8.1. With autoindent ΓòÉΓòÉΓòÉ
  1050.  
  1051. If autoindent is active for the current window, the tabwidth is determined by 
  1052. looking at the line above the current line. The tab forward skips as far as a 
  1053. 'word right' command would skip in the above line. Similar, a tab back skips as 
  1054. far as a 'word left' command would skip in the above line. This is good for 
  1055. indenting comments or for jumping to the same indentation as used in the above 
  1056. line. If the cursor is located beyond the end of the above line, tabs proceed 
  1057. as without autoindent. Note, that tab backward and tab forward are inverse 
  1058. operations except when the cursor is located below the last word of the above 
  1059. line. In this case, the tab forward skips below the position immediately behind 
  1060. the end of the word in the above line, while the tab backward skips below the 
  1061. beginning of that word. 
  1062.  
  1063. If a line is splitted in autoindent mode using ENTER, the line on which the 
  1064. cursor is after the operation is indented that way, that it starts below the 
  1065. start of the first word of the above line. Inserting a line before or after the 
  1066. current line using CTRL-a or CTRL-o places the cursor in the column, where the 
  1067. first word of the previously current line starts. 
  1068.  
  1069.  
  1070. ΓòÉΓòÉΓòÉ 5.8.2. Without autoindent ΓòÉΓòÉΓòÉ
  1071.  
  1072. In this mode the tabwidth is determined only by the predefined tabwidth, which 
  1073. is 8 by default. This tabwidth can be modified by two ways: These are the 
  1074. environment variable EHPINIT or by the command 
  1075.  
  1076. o CTRL-s t 
  1077.  
  1078.   asks for the new tabwidth, which can be entered in the status line. As 
  1079.   default for this input yields the currently chosen tabwidth. Thus, pressing 
  1080.   ENTER upon this query keeps the tabwidth unchanged. 
  1081.  
  1082.  
  1083. ΓòÉΓòÉΓòÉ 5.9. Repeating ΓòÉΓòÉΓòÉ
  1084.  
  1085. o CTRL-r 
  1086.  
  1087.   repeats a command to specify a certain number of times. EHP first asks for 
  1088.   the number of repetitions in the status line. Here an empty or zero input 
  1089.   causes the command to repeat nothing. If a non-zero input was made, the 
  1090.   command to repeat is asked for. One can enter the command as if it should be 
  1091.   executed directly with one exception: the ENTER key must be escaped by 
  1092.   prefixing it with CTRL-c (see also Controlcodes), since pressing the 
  1093.   ENTER-key unescaped will be interpreted as the end of the command sequence. 
  1094.   Note, that during input of the command the usual help texts will be displayed 
  1095.   in the status line, if not turned off. 
  1096.  
  1097.   Repeating may be nested up to a depth of 20. Note, that macros also each take 
  1098.   one of those nesting levels. So, if your command to repeat contains a macro, 
  1099.   which itself has a nesting depth of say n, then there must be less than 20-n 
  1100.   nested repeats around it. 
  1101.  
  1102.   Look at the following example for a better understanding. It causes five new 
  1103.   lines to be inserted at the cursor position, where each of them is filled 
  1104.   with the string 'hello': 
  1105.  
  1106.    Key commands      Effect 
  1107.    CTRL-r            For invoking the repeat command 
  1108.    5 ENTER           For specifying the number of repetitions 
  1109.    CTRL-c            For escaping the subsequent ENTER 
  1110.    ENTER             For inserting the new line at the cursor position 
  1111.    hello             The text to be inserted in the new line 
  1112.    ENTER             For terminating the command sequence to repeat 
  1113.  
  1114. o CTRL-n or CTRL-f a 
  1115.  
  1116.   repeats the last find/replace command. 
  1117.  
  1118.  
  1119. ΓòÉΓòÉΓòÉ 5.10. Underline ΓòÉΓòÉΓòÉ
  1120.  
  1121. EHP offers the possibility to enter underlined text. See Fileformat for the 
  1122. representation of underlined characters in the resulting file and consequences 
  1123. of this representation. On the screen, underlined characters are displayed in 
  1124. red color. The underline mode is local to each window and is displayed in the 
  1125. top window border (Under in activated underline mode, nothing in non-active 
  1126. underline mode). 
  1127.  
  1128. If underlining is active, each inserted / overwritten character is 
  1129. automatically underlined. Furthermore, underline mode influences replacing 
  1130.  
  1131. To toggle the underline mode for the current window, use the following command: 
  1132.  
  1133. o CTRL-u 
  1134.  
  1135.   toggles the underline mode for the current window. 
  1136.  
  1137.  
  1138. ΓòÉΓòÉΓòÉ 5.11. Automatic line break ΓòÉΓòÉΓòÉ
  1139.  
  1140. EHP supports a mode for automatically breaking the current line if the cursor 
  1141. otherwise would leave the window to the right. If this linebreak mode is 
  1142. active, then if the cursor would step on the right window margin, the next 
  1143. blank left to the cursor is searched, the cursor is placed right to this 
  1144. position (i.e. on the beginning of the current word) and a newline is executed. 
  1145.  
  1146. Note, that if the autoindent mode is active, then the splitting of the current 
  1147. line will indent the new created line according to the current line. If 
  1148. overwrite mode is active, then the cursor will be placed on the next line by 
  1149. the execution of the newline. This is exactly what happens in overwrite mode, 
  1150. if the ENTER key is hit. This, of course, does not make much sense. So the use 
  1151. of insert mode is highly recommended when using the automatic linebreak mode. 
  1152. The automatic linebreak mode is toggled by the following command: 
  1153.  
  1154. o CTRL-s l 
  1155.  
  1156.   toggles the automatic linebreak mode 
  1157.  It can furthermore be set as the default for window creation by the flag 
  1158. linebrk in the environment variable EHPINIT. 
  1159.  
  1160.  
  1161. ΓòÉΓòÉΓòÉ 5.12. Reflowing of paragraphs ΓòÉΓòÉΓòÉ
  1162.  
  1163. EHP enables its user to reflow paragraphs so that they are as close as possible 
  1164. aligned to the right window margin. Reflowing is started at the corsor line and 
  1165. ends before the next empty line or the end of the text. 
  1166.  
  1167. The margins used for reflowing are as follows: As right margin the right window 
  1168. margin is used. So if reflowing to a certain size differing from the current 
  1169. window size is desired, first resize the window, then reflow and afterwards 
  1170. change the window size back to the previous size (see also changing window 
  1171. size). What is taken to be the left margin for reflowing depends on the 
  1172. autoindent flag. If it is set, then the column of the first non-whitespace in 
  1173. each current line is taken as the left reflow margin. Otherwise, the left 
  1174. reflow margin defaults to column 1. 
  1175.  
  1176. Reflowing only breaks lines at blank characters. Character sequences separated 
  1177. only by the so-called 'word separators' (e.g. '-' or '.') are not broken apart. 
  1178. The cursor is positioned at the character where it was when reflowing started. 
  1179. This may of course be in a line further down and more to the left due to moving 
  1180. of that character during the reflowing process. 
  1181.  
  1182. Reflowing might not work for two reasons. First, the maximum line capacity of 
  1183. EHP might become exceeded by the breaking of the lines. Second, an error may 
  1184. occur, when a line is shorter than the reflow width and the subsequent line 
  1185. can't be joined because the length would go beyond EHP's line length limit. 
  1186.  
  1187. o CTRL-d 
  1188.  
  1189.   initiates the reflowing of the current paragraph beginning at the cursor 
  1190.   position and ending at the next empty line or the end of the text. 
  1191.  
  1192. Handle this command with care, since at the moment there exists no undoing for 
  1193. this command. So, if the empty line you expected to be there isn't there, then 
  1194. the results may be quite farther-going than you wanted. You can stop this 
  1195. command by hitting CTRL-Break. 
  1196.  
  1197. Regrettably, there was no mnemomical key binding available for this command. If 
  1198. someone has a good idea, how CTRL-d* ************************************ 
  1199.  
  1200.  
  1201. ΓòÉΓòÉΓòÉ 5.13. Controlcodes ΓòÉΓòÉΓòÉ
  1202.  
  1203. Controlcodes cannot simply be typed to insert them into the text beacuse they 
  1204. would issue a command. Nevertheless EHP allows to insert them by escaping them 
  1205. with CTRL-c. 
  1206.  
  1207. o CTRL-c <character> 
  1208.  
  1209.   insert <character> into the text, regardless whether it is a controlcode or 
  1210.   even the escape key. Only a NULL character cannot be inserted at all, since 
  1211.   this would mark the end of line. CTRL-c CTRL-c inserts a ^C into the text, 
  1212.   for example. Characters with ASCII code smaller than 28 are displayed as 
  1213.   invers character with 64 added to the ASCII code. Thus, e.g. an CTRL-a is 
  1214.   displayed as invers A. 
  1215.  
  1216.  
  1217. ΓòÉΓòÉΓòÉ 5.14. Quit EHP ΓòÉΓòÉΓòÉ
  1218.  
  1219. o CTRL-x s 
  1220.  
  1221.   leaves EHP and saves all modified files. If the backupoption is active, then 
  1222.   the old file is saved by appending '.bak' to its name. The file attributes 
  1223.   remain as they were when loading the file, they are set to writeable, 
  1224.   non-system and non-hidden, if a new file is saved. If files cannot be saved 
  1225.   for some reasons, a warning is displayed. EHP offers the possibility to leave 
  1226.   anyway or to proceed with further editing. 
  1227.  
  1228. o CTRL-x n 
  1229.  
  1230.   leaves EHP without saving modified files. For safety, this action has to be 
  1231.   acknowledged in the status line. 
  1232.  
  1233. o CTRL-x S 
  1234.  
  1235.   leaves EHP without saving modified files after an acknowledgement, 
  1236.   additionally the load file is executed. 
  1237.  
  1238. o CTRL-x N 
  1239.  
  1240.   leaves EHP with saving modified files after an acknowledgement (see above), 
  1241.   additionally the load file is executed. 
  1242.  
  1243.  
  1244. ΓòÉΓòÉΓòÉ 5.15. Undo ΓòÉΓòÉΓòÉ
  1245.  
  1246. The only undo implemented so far is restoring a deleted line. 
  1247.  
  1248. o CTRL-k 
  1249.  
  1250.   inserts the last deleted line before the current line and makes this line the 
  1251.   current line. This command can be executed multiply (good for quickly 
  1252.   duplicating the current line or copying it to many different locations). 
  1253.  
  1254.  
  1255. ΓòÉΓòÉΓòÉ 5.16. Macros ΓòÉΓòÉΓòÉ
  1256.  
  1257. Macros are user-defined key command sequences (no mouse commands can be 
  1258. recorded within a macro). They can be recorded, executed, nested and repeated. 
  1259. Note, that the maximum nesting depth is limited to 20. 
  1260.  
  1261. o CTRL-v X (where X stands for an upcase letter) 
  1262.  
  1263.   records macro X. One can now input the key sequence, which is to make up the 
  1264.   macro. The maximum macro length is limited to 500 characters (the maximum 
  1265.   line length), where keys producing more than one character are counted as 
  1266.   multiple characters. If this sould be a limit to you, make use of nested 
  1267.   macros and the repeat command. During input of the macro, EHP displays the 
  1268.   usual helptexts in the status line, if they are not disabled. To finish the 
  1269.   macro recording hit the ENTER key. To insert an ENTER into the macro, use the 
  1270.   controlcode technique, that means, hit CTRL-c ENTER. 
  1271.  
  1272. o CTRL-v x (where x stands for an lowercase letter) 
  1273.  
  1274.   executes macro x. Note that this command cannot be entered when an input in 
  1275.   the status line is expected (e.g. the search expression). If this is desired, 
  1276.   the command issuing the status line query has to be included in the macro. If 
  1277.   the chosen macro is empty, a warning is displayed. For stopping the execution 
  1278.   of a macro see aboring running macros. 
  1279.  
  1280.  
  1281. ΓòÉΓòÉΓòÉ 5.17. Abort running macro / repeat function ΓòÉΓòÉΓòÉ
  1282.  
  1283. Running macros and running repeat commands can be aborted. 
  1284.  
  1285. o CTRL-Break 
  1286.  
  1287.   aborts all running macros and repeat commands. That means, that also in case 
  1288.   of a running nested macro all involved macros are terminated. 
  1289.  
  1290.  
  1291. ΓòÉΓòÉΓòÉ 5.18. Shell escape ΓòÉΓòÉΓòÉ
  1292.  
  1293. EHP allows to execute shell commands from within a text window. This can be 
  1294. done by using the shell mode. 
  1295.  
  1296. o CTRL-s s 
  1297.  
  1298.   activates/deactivates the shell mode for the current window. If the shell 
  1299.   mode is active for the current window can be determined by looking at the top 
  1300.   border of the current windows's frame. If SHELL is displayed there, then 
  1301.   shell mode is active. To issue a command, hit ENTER. Then the part of the 
  1302.   current line to the left of the cursor will be taken as the command and 
  1303.   passed to the shell. The standard output will be inserted as a block at the 
  1304.   cursor position. Note that the current line will be split at the point where 
  1305.   the cursor was when hitting ENTER. 
  1306.  
  1307.   Commands expecting further user input should not be executed in this way, 
  1308.   since one cannot provide any further interactive input after issuing the 
  1309.   command. The result of invoking such a program would be, that the shell 
  1310.   didn't return. In this case the only way to get back to EHP is to hit 
  1311.   CTRL-Break, which must not be catched by the running program. 
  1312.  
  1313.   Now, which shell is executed? EHP always uses the shell specified by the 
  1314.   environment variable COMSPEC. This is usually c:\os2\cmd.exe. If the command 
  1315.   execution caused an error, a corresponding message is displayed. 
  1316.  
  1317.  
  1318. ΓòÉΓòÉΓòÉ 5.19. Miscellaneous ΓòÉΓòÉΓòÉ
  1319.  
  1320. o CTRL-s a 
  1321.  
  1322.   toggles the autoindent mode for the current window. If autoindent is active 
  1323.   for the current window, this is indicated by the string Indent in the top 
  1324.   frame border. 
  1325.  
  1326. o CTRL-s t 
  1327.  
  1328.   sets the tablength for the current window. The new tablength must be entered 
  1329.   in the status line. As default serves the current tablength, which means, 
  1330.   that pressing ENTER on the query leaves the tablength for the current window 
  1331.   unchanged. Thus this command can also be used to determine the current 
  1332.   window's tablength. See also Tabs and indent for more detailed information 
  1333.   about tabs. 
  1334.  
  1335. o CTRL-s h 
  1336.  
  1337.   toggles activation of helptexts. If active, EHP displays a helptext in the 
  1338.   status line after the first key of a multi-key command. If the machine or the 
  1339.   display or whatever is too slow or one just wants the helptexts to disappear, 
  1340.   then helptexts can be deactivated by using this command. 
  1341.  
  1342. o CTRL-s b 
  1343.  
  1344.   toggles the blockhighlighting. By default, a marked block is displayed 
  1345.   highlighted. This takes some time. As for helptexts, if this seems to be too 
  1346.   slow, this highlighting can be deactivated using this command. 
  1347.  
  1348. o CTRL-s c 
  1349.  
  1350.   toggles the compression of tabs for the current window (see also Tabs and 
  1351.   indent). If activated, this is displayed by the string Tabs in the top frame 
  1352.   border, otherwise Spcs is displayed indicating, that leading spaces are 
  1353.   written out as spaces and not compress. 
  1354.  
  1355. o CTRL-s r 
  1356.  
  1357.   Toggles the default for the usage of regular expressions in searching. This 
  1358.   default overrides the default set in EHPINIT but can be overridden by a 
  1359.   search option (see also Find and replace). 
  1360.  
  1361. o CTRL-s . 
  1362.  
  1363.   toggles the creation of backup (.bak) files. 
  1364.  
  1365.  
  1366. ΓòÉΓòÉΓòÉ 6. Configuration file ΓòÉΓòÉΓòÉ
  1367.  
  1368. The configuration file is updated upon leaving EHP. It contains global flags 
  1369. (like blockhighlight, creation of backup files etc.), all defined macros, 
  1370. information about window size, position and files loaded, and the position of 
  1371. all defined markers. Thus is allows to restore the state exactly as it was when 
  1372. reinvoking EHP. 
  1373.  
  1374. When starting EHP the configuration file is looked for. If it is found, the 
  1375. global flags and the macros are restored in each case. If no filenames were 
  1376. specified in the command line, EHP loads the files specified in the 
  1377. configuration file into windows with the same size and position they had when 
  1378. leaving EHP the last time. In this case the markers are taken over, too. 
  1379.  
  1380. The name of the configuration file is config.ehp in the current directory by 
  1381. default. This is the name, under which it is written to disk as well as the 
  1382. name under which it is searched when starting EHP. This name can be modified by 
  1383. an entry in the environment variable EHPINIT. Via this option even an absolute 
  1384. path for the configuration file may be specified with the effect of having all 
  1385. ever defined macros global, for example. 
  1386.  
  1387.  
  1388. ΓòÉΓòÉΓòÉ 7. Environment variable EHPINIT ΓòÉΓòÉΓòÉ
  1389.  
  1390. If an environment variable named EHPINIT is provided, EHP reads its contents 
  1391. before reading the configuration file (so defaults specified in EHPINIT may be 
  1392. overridden by values stored in the configuration file). Set EHPINIT by invoking 
  1393.  
  1394. SET EHPINIT=... 
  1395.  
  1396. from within config.sys or from the command line, where ... is an arbitrary 
  1397. concatenation of the following options: 
  1398.  
  1399. Option              Effect 
  1400. autoind             Autoindent mode will be active when opening a new window. 
  1401. nohelp              Turns off helptexts when EHP is invoked. 
  1402. noshowblock         Blockhighlighting is turned off by default. 
  1403. nobak               When saving a file, no .bak file will be generated, if a 
  1404.                     file with this name already exists. 
  1405. deftab <n>          where <n> stands for a number. This sets the default 
  1406.                     tablength for a new window to <n>. <n> must be between 0 
  1407.                     and 500. 
  1408. conffile <f>        where <f> is a filename path (absolute or relative). This 
  1409.                     states, that the configuration file is stored and loaded 
  1410.                     with the name <f>. An example might be conffile 
  1411.                     c:\config.ehp. 
  1412. loadfile <f>        The load file is searched under path <f>. 
  1413. screen <mode>       where mode is <#columns>x<#lines> (instead of x also X is 
  1414.                     possible). This sets the screen size to the desired values. 
  1415.                     The provided values must be supported by the video card and 
  1416.                     the operating system, otherwise the values default to 
  1417.                     80x25, which should always be possible. An example might be 
  1418.                     screen 80x50. Note, that after leaving EHP, the screen size 
  1419.                     is switched back to the state it was in before invoking 
  1420.                     EHP. 
  1421. keys <f>            Tells EHP to load the keyboard mapping from file <f> 
  1422.                     instead of tasten.inf in the current directory. <f> may 
  1423.                     contain an absolute path. 
  1424. noregex             Turns off regular expressions for searching be default. 
  1425.                     This can be overridden by setting a global flag within EHP 
  1426.                     by a command or by using a search option. 
  1427. linebrk             Turns on the automatic linebreak mode by default. It is 
  1428.                     overruled by the manual setting for a window as well as by 
  1429.                     the values stored for an open window in the config file. 
  1430. clr_text <fg_color+16*bg_color> sets the color of the text display. Note, that 
  1431.                     the frames around inactive windows are drawn with the same 
  1432.                     color. 
  1433. clr_frame <fg_color+16*bg_color> sets the color of the frame for the active 
  1434.                     window. This is also the color used for highlighting the 
  1435.                     mnemonical letters in the helpline. 
  1436. clr_under <fg_color+16*bg_color> sets the color used for displaying underlined 
  1437.                     characters 
  1438. clr_block <fg_color+16*bg_color> sets the color used for displaying a 
  1439.                     highlighted block. 
  1440.  
  1441. The valued for fg_color and bg_color must lie between 0 and 15 (inclusive). The 
  1442. bit values of each of them is defined as follows: 
  1443.  
  1444. 1         blue 
  1445.  
  1446. 2         green 
  1447.  
  1448. 4         red 
  1449.  
  1450. 8         light 
  1451.  
  1452. Mixing the color bits yields the color resulting from the standard color 
  1453. addition. Perhaps on the fullscreen display a light background may be 
  1454. interpreted as blinking background. Check this out, if you want to use the 
  1455. light-bit for your background setting and at the same time use EHP in a 
  1456. fullscreen session. 
  1457.  
  1458.  
  1459. ΓòÉΓòÉΓòÉ 8. Load file ΓòÉΓòÉΓòÉ
  1460.  
  1461. When leaving EHP, this can be done by a command, which invokes a batch file 
  1462. after terminating EHP. By default, this batch file is searched in the current 
  1463. directory and is assumed to be named load.cmd. This default name can be 
  1464. overridden using the environment variable EHPINIT. A possible application for 
  1465. this is, that load.cmd contains the call of make or a different compilation 
  1466. tool, which performs some actions on the edited file(s). 
  1467.  
  1468.  
  1469. ΓòÉΓòÉΓòÉ 9. Keyboard remapping (KM utility) ΓòÉΓòÉΓòÉ
  1470.  
  1471. To make EHP suit individual keyboard layout requirements, EHP comes with a 
  1472. little tools enabling the modification and creation of own keaboard layout 
  1473. files. Since this tool is used at most only a few times, it is not very gold 
  1474. plated (not to say it is rather prehistoric, but it satisfies the basic needs). 
  1475. This tool is called KM, which stands for 'keymake'. 
  1476.  
  1477. KM can in addition to the modification of keystrokes modify the helptexts, that 
  1478. can be displayed after the first key of the command in the status line. KM 
  1479. assumes the keyboard file, which is called tasten.inf, to be located in the 
  1480. current directory. If no such file exists in the current directory, then an 
  1481. empty one it is created. 
  1482.  
  1483.  
  1484. ΓòÉΓòÉΓòÉ 9.1. Main menu ΓòÉΓòÉΓòÉ
  1485.  
  1486. After invoking KM, it is tried to read in the tasten.inf file. If the file has 
  1487. the wrong format, this is announced by an error message and the program stops. 
  1488. Otherwise, a menu comprising four items will be displayed. These items are 
  1489.  
  1490. o Change key combinations 
  1491.  
  1492. o Change helptexts 
  1493.  
  1494. o Show command names 
  1495.  
  1496. o Exit (save keyboard file) 
  1497.  
  1498. Issue the wished alternative by hitting the corresponding number (without 
  1499. subsequent ENTER key). 
  1500.  
  1501.  
  1502. ΓòÉΓòÉΓòÉ 9.2. Change keyboard command ΓòÉΓòÉΓòÉ
  1503.  
  1504. This command allows to provide key combinations for one or more commands. First 
  1505. the number of the command to change is queried. To answer this question, the 
  1506. below described option Show command names is helpful. Inputting the combination 
  1507. number is quitted by hitting ENTER. If -1 is entered as key combination number, 
  1508. changing of combinations is finished and KM returns to the main menu. 
  1509.  
  1510. If a correct number was provided, KM shows the current mapping in decimal form. 
  1511. If e.g. the combination is currently CTRL-l, then 12 is displayed, since the 
  1512. ASCII code for CTRL-l is 12. 
  1513.  
  1514. If the provided combination number exceeded the number of currently defined 
  1515. combinations, then a new command is established with a number greater by one 
  1516. than the combination number with the previously highest number. This of course 
  1517. only makes sense, if a new tasten.inf file is created or indeed EHP was 
  1518. extended by one or more commands (this would need a source code change as well 
  1519. in EHP as in KM). In the latter case the modification of tasten.inf would 
  1520. probably have been done by the programmer himself. 
  1521.  
  1522. Now KM asks for the new key combination. This may consist of any key 
  1523. combination not containing '/', since this is the key indicating the end of the 
  1524. combination. It cannot be escaped. Note, that of course events like 'hitting 
  1525. the left space key' or something like this can not be input at this point. When 
  1526. chosing your combinations, note that commands must not be prefixes of each 
  1527. other. This implies, that it is unconvenient to use normal letters like a,b,c 
  1528. as the first character of a command, since then inputting these characters in a 
  1529. text would not be easy anymore. 
  1530.  
  1531. The assertion, that commands must not be prefixes of each other is checked 
  1532. after inputting the combination.  If a collision is detected, this is announced 
  1533. by an error message and the old combination remains unchanged. In case the 
  1534. entered combination was a new one (would have been added as the last 
  1535. combination with the highest number), if a collision is detected, no new 
  1536. combination is created. 
  1537.  
  1538. If the provided combination consists of more than one ASCII code (note that 
  1539. this is also true for some function and cursor keys), all existing helptexts 
  1540. are displayed together with their indices. KM asks for a helptext index to link 
  1541. to the current combination. This helptext would then be displayed in EHP's 
  1542. status line after hitting the first character of the combination. If no 
  1543. helptext should be displayed, then one has to enter -1 as helptext index (this 
  1544. makes sense e.g. for the mentioned cases function keys or cursor keys). If a 
  1545. non-existing helptext index is input, then KM asks for a new helptext. See 
  1546. Change helptext for detailed information about changing and inputting the 
  1547. helptexts. 
  1548.  
  1549.  
  1550. ΓòÉΓòÉΓòÉ 9.3. Change helptext ΓòÉΓòÉΓòÉ
  1551.  
  1552. When this option is chosen, first all existing helptexts are displayed together 
  1553. with their indices. KM then asks for the number of the helptext to change. If a 
  1554. non-existing number is entered, the query is repeated. 
  1555.  
  1556. If the helptexts with the provided number exists, it is displayed once more and 
  1557. the new helptext is asked for. To enter letters, that should be highlighted in 
  1558. EHP's helptext display, such letters must be enclosed in parenthesis. For 
  1559. example '(L)ist' causes 'List' to be displayed. It is convention, to highlight 
  1560. the letters, which invoke further commands. 
  1561.  
  1562. One terminates the helptext by pressing ENTER. KM continues asking for helptext 
  1563. numbers, until -1 is entered. This returns to the main menu. 
  1564.  
  1565.  
  1566. ΓòÉΓòÉΓòÉ 9.4. Show command names ΓòÉΓòÉΓòÉ
  1567.  
  1568. All available editor commands are listed together with their numbers and names. 
  1569. Using this command makes sense to get out the number of a certain command, for 
  1570. which one wants to change the key combination. 
  1571.  
  1572. One screen page is filled with command names, then a message is displayed, that 
  1573. a keypress is expected for the continuation of the listing. Here, pressing a 
  1574. aborts the listing. When the listing is finished, one further keypressed is 
  1575. asked for, before KM returns to the main menu. 
  1576.  
  1577.  
  1578. ΓòÉΓòÉΓòÉ 9.5. Quit KM ΓòÉΓòÉΓòÉ
  1579.  
  1580. This choice terminates the KM program. The keyboard mapping is written to the 
  1581. file tasten.inf in the current directory. A possibly existing file will be 
  1582. overwritten. Thus, save one working keyboard mapping file to avoid accidental 
  1583. lost of keyboard definitions. To suppress the writing of the keyboard mapping, 
  1584. terminate the program by hitting CTRL-Break from the main menu. Note that all 
  1585. changes of this KM session will then be lost! 
  1586.  
  1587.  
  1588. ΓòÉΓòÉΓòÉ 10. Appendix ΓòÉΓòÉΓòÉ
  1589.  
  1590.  
  1591. ΓòÉΓòÉΓòÉ 10.1. Limits and bugs ΓòÉΓòÉΓòÉ
  1592.  
  1593. The line length is currently limeted to 500. If this should be a problem for 
  1594. anyone, please report (e.g. via email to auhl@fzi.de). Each window may contain 
  1595. 2^31-1 lines. There must be no more than 2^31-1 windows opened concurrently. 
  1596.  
  1597. If the text in a window contains the mamimal number of lines, no blocks can be 
  1598. moved anymore. 
  1599.  
  1600. An underscore - CTRL-h combination ar the end of line is interpreted as 
  1601. underlined space. 
  1602.  
  1603. Tabs are not stored as tabs but expanded to spaces except at the beginning of a 
  1604. line, where by default each 8 spaces are compressed to one tab. The latter 
  1605. option allows the creation of makefiles, where the tab at the beginning of a 
  1606. line has some concrete semantic. Still, this might be a limitation, especially, 
  1607. if tables with constant column positions (almost) independent of the column 
  1608. contents should be created (like it is possible with the way, VI handles tabs). 
  1609. Also, this might be confusing, if a text containing tabs is loaded, modified 
  1610. and saved, because in this case the tabs in the middle of a line are converted 
  1611. to blanks. 
  1612.  
  1613.  
  1614. ΓòÉΓòÉΓòÉ 10.2. Command reference ΓòÉΓòÉΓòÉ
  1615.  
  1616. Key combination     Associated command 
  1617. CTRL-a              Insert line before current line 
  1618. CTRL-b b            mark beginning of block 
  1619. CTRL-b c            copy block to cursor position 
  1620. CTRL-b d            delete block 
  1621. CTRL-b e            end of rectangular block (good for moving comments) 
  1622. CTRL-b f            filter the block (e.g. pass the block through SORT) 
  1623. CTRL-b i            indent block (left or right) 
  1624. CTRL-b m            move block to cursor position 
  1625. CTRL-b n            end of normal block (with line wrap) 
  1626. CTRL-b p            copy contents of paste-buffer to cursor position 
  1627. CTRL-b r            read block from file and insert at cursor position 
  1628. CTRL-b t            cuT block (means: copy it to the paste-buffer) 
  1629. CTRL-b u            unmark block 
  1630. CTRL-b w            write block to file 
  1631. CTRL-c              abort repeat function or macro execution, insert control 
  1632.                     code in text or command 
  1633. CTRL-d              Reflows the current paragraph 
  1634. CTRL-e l            load file in current window 
  1635. CTRL-e m            save all modified files 
  1636. CTRL-e r            rename file 
  1637. CTRL-e s            save file contained in current window 
  1638. CTRL-f a            Again (repeat last find or replace) 
  1639. CTRL-f f            find. For options see Find and replace. 
  1640. CTRL-f r            replace. For options see Find and replace. 
  1641. CTRL-g b            goto beginning of marked block 
  1642. CTRL-g e            goto end of marked block 
  1643. CTRL-g g            goto marker 
  1644. CTRL-g l            last position (stored before CTRL-g, jump to beginning or 
  1645.                     end of file, searching, replacing) 
  1646. CTRL-g n            goto line number 
  1647. CTRL-g s            set marker 
  1648. CTRL-j              Join (append following line to the current one) 
  1649. CTRL-k              (from the German korrigieren (correct)) insert the line 
  1650.                     deleted last (with CTRL-y) before the current line 
  1651. CTRL-l              Refresh (VI-like) 
  1652. CTRL-n              Repeat find/replace (same as CTRL-f-a) 
  1653. CTRL-o              (VI-like open line) insert line after current line 
  1654. CTRL-p              Jumps to the bracket (Parenthesis), that belongs to the 
  1655.                     one, being nearest to the cursor. 
  1656. CTRL-q              Delete to end-of-line 
  1657. CTRL-r              repeat a command sequence n times 
  1658. CTRL-s a            autoindent 
  1659. CTRL-s b            blockhighlighting 
  1660. CTRL-s c            tabcompression (blanks may be converted to tabs when saving 
  1661.                     the file, this is the default) 
  1662. CTRL-s l            toggle the automatic linebreak mode 
  1663. CTRL-s r            regular expressions (like with GREP) for searching 
  1664. CTRL-s s            shell mode (when pressing RETURN, the part of the current 
  1665.                     line up to the cursor position is passed to the shell, the 
  1666.                     result of the executed command is inserted in the text and 
  1667.                     marked as a block) 
  1668. CTRL-s t            define tablength (how far the TAB key ought to jump, not 
  1669.                     what number of spaces is converted to a tab in the text's 
  1670.                     file representation) 
  1671. CTRL-s .            create .bak-files when overwriting an existing file 
  1672. CTRL-t              Delete word right to the cursor (Borland-like) 
  1673. CTRL-u              toggle underline mode (underlined characters are 
  1674.                     represented by _^H<x> where <x> is the underlined 
  1675.                     character). 
  1676. CTRL-v              Macro definition/execution 
  1677. CTRL-w c            close current window 
  1678. CTRL-w d            switch direct to another window by supplying the name of 
  1679.                     the file contained in the window 
  1680. CTRL-w i            switch to window by index (number of the window displayed 
  1681.                     in the lower left corner of each window) 
  1682. CTRL-w m            move window on the screen 
  1683. CTRL-w n            switch to next window 
  1684. CTRL-w o            open new window 
  1685. CTRL-w p            switch to previous window. This operation is symmetric, 
  1686.                     i.e. applied twice, you get to the window where you were 
  1687.                     before. 
  1688. CTRL-w s            change size of current window 
  1689. CTRL-w t            toggle window size (two sizes exist, both of which are 
  1690.                     initially set to full size) 
  1691. CTRL-x n            exit without saving and without executing the load file 
  1692.                     (the load file is a batch file, which can optionally be 
  1693.                     executed when quitting the editor, e.g. it may contain the 
  1694.                     call to MAKE) 
  1695. CTRL-x s            exit with saving all modified files, but without executing 
  1696.                     the load file 
  1697. CTRL-x N            exit without saving, but with loadfile execution. The 
  1698.                     default name for the load file is load.bat in the current 
  1699.                     directory, but it can be modified using the environment 
  1700.                     variable EHPINIT. 
  1701. CTRL-x S            exit with saving all modified files and executing the load 
  1702.                     file. 
  1703. CTRL-y              delete the current line (can be undone using CTRL-k) 
  1704. arr_left            move cursor left one character 
  1705. arr_right           move cursor right one character 
  1706. arr_up              move cursor up one character 
  1707. arr_down            move cursor down one character 
  1708. CTRL-arr_left       move cursor left one word 
  1709. CTRL-arr_right      move cursor right one word 
  1710. CTRL-arr_up         move window content including cursor one line up 
  1711. CTRL-arr_down       move window content including cursor one line down 
  1712. ALT-arr_left        make current line appear in the middle of the window 
  1713. ALT-arr_right       move cursor to the middle of the current window 
  1714. ALT-arr_up          make current line first line of window 
  1715. ALT-arr_down        make current line last line of window 
  1716. HOME                move cursor to beginning of current line 
  1717. END                 move cursor to end of current line 
  1718. CTRL-HOME           move cursor to the first line of the window 
  1719. CTRL-END            move cursor to the last line of the window 
  1720. PgUp                one page up 
  1721. PgDn                one page down 
  1722. CTRL-PgUp           go to beginning of file 
  1723. CTRL-PgDn           go to end of file 
  1724. ALT-PgUp            go half a page up 
  1725. ALT-PgDn            go half a page down 
  1726. DEL                 delete character on which the cursor stands 
  1727. Backspace           delete character left to the cursor. If cursor is in first 
  1728.                     column, join current line with the upper line. 
  1729. Ins                 Toggle insert/overwrite mode 
  1730.  
  1731.  
  1732. ΓòÉΓòÉΓòÉ 10.3. Mouse commands ΓòÉΓòÉΓòÉ
  1733.  
  1734. o Left button: 
  1735.  
  1736.    Position                                            Effect 
  1737.    click on text in active window                      Set the cursor to the 
  1738.                                                        current mouse position 
  1739.    click on text in non-active window                  Activate that window 
  1740.                                                        (cursor position is NOT 
  1741.                                                        set to mouse position). 
  1742.                                                        If you want to set the 
  1743.                                                        cursor to the mouse 
  1744.                                                        position in the just 
  1745.                                                        activated window, click 
  1746.                                                        the left button again. 
  1747.    click and move on text                              Mark a normal block 
  1748.                                                        (like CTRL-b b and 
  1749.                                                        CTRL-b n) 
  1750.    click on headline and move                          Move the window 
  1751.    click on lower right corner of window and move      Resize that window 
  1752.    click on upper left corner                          Close that window (like 
  1753.                                                        CTRL-w c) 
  1754.    click on upper right corner                         Toggle window size (like 
  1755.                                                        CTRL-w t) 
  1756.    click on arrows in frame                            Scroll text in arrow 
  1757.                                                        direction 
  1758.    click on yes/no-question                            YES 
  1759.  
  1760. o Right button: 
  1761.  
  1762.    Position                                            Effect 
  1763.    click on text with no block marked and no block in PASTE-buffer Set the 
  1764.                                                        cursor to the current 
  1765.                                                        mouse position and 
  1766.                                                        activate that window (if 
  1767.                                                        not already activated) 
  1768.    click on text with no block marked and block in the PASTE-buffer Paste the 
  1769.                                                        block from the 
  1770.                                                        PASTE-buffer into the 
  1771.                                                        text at the current 
  1772.                                                        mouse position 
  1773.    click on text with a block marked in the window clicked to The marked block 
  1774.                                                        is stored in the 
  1775.                                                        PASTE-buffer and 
  1776.                                                        unmarked 
  1777.    click and move on text                              Mark a rectangular block 
  1778.                                                        (like CTRL-b b and 
  1779.                                                        CTRL-b r) 
  1780.    click on headline                                   Push the window into the 
  1781.                                                        background 
  1782.    click on lower right corner of window and move      Resize that window 
  1783.    click on upper left corner                          Close that window (like 
  1784.                                                        CTRL-w c) 
  1785.    click on upper right corner                         Toggle window size (like 
  1786.                                                        CTRL-w t) 
  1787.    click on arrows in frame                            Scroll text in arrow 
  1788.                                                        direction 
  1789.    click on yes/no-question                            NO 
  1790.  
  1791. o Middle and left: (press middle first, then left, probably three-button-mouse 
  1792.   is not supported by OS/2 at the moment) 
  1793.  
  1794.    Position                                            Effect 
  1795.    on text                                             move marked block to 
  1796.                                                        mouseposition 
  1797.  
  1798. o Middle and right: (press middle first, then right, probably 
  1799.   three-button-mouse is not supported by the mouse driver) 
  1800.  
  1801.    Position                                            Effect 
  1802.    on text or frame with marked block in window clicked to delete marked block 
  1803.                                                        in current window 
  1804.