seedoc of fpted, cLIeNUX "edit"

F P T E D

Release 4.0 29/Mar/92

Fernando Joaquim Ganhao Pereira

Lisbon - Portugal

GENERAL

cLIeNUX edit is an alias for a visual text editor. Currently that is the cLIeNUX version of fpted. It is a compact ncurses-based text editor with a very well-chosen set of features, with clear and minimal but sufficient user-feedback so that a new user can be productive immediately. You can even figure out how to get out of it! fpted has several text buffers, menus, a single visual text input window and a single persistant line of status information.

BASICS

An editor has to distinguish between input to go directly into the text being edited, and input to be interpreted as commands, like save, quit and so on. A visual editor defaults to regular typewriter-like input, with some kind of escape from that `input mode' to `command mode'. The escape is usually caused by some key or key combination that doesn't have a normal interpretation as visible text. fpted usually makes that distinction with the <ctrl> key. There are various ctrl&letter combinations, and that set is extended by a set of <ctrl><prefix><letter> combinations. A basic command like `yank the current line' (copy it to the clipboard buffer and delete it from the currently visible edit buffer) is performed by holding down the <ctrl> and y keys simultaneously. This will be indicated below in this format (^ means ctrl key)...

	^y
The `prefix key' is user-settable in fpted. It is defaulted to semicolon (;) in cLIeNUX.

There are a few simple concepts that bear explanation to help explain fpted's features. A `word' is a white-space delimited string. `Indent mode' is for `hanging indents', so that when you hit <enter> the cursor moves to the next line aligned with the indentation of the line you just left, rather than the first column of the next line. In other words, hanging indents allows rapid typing of blocks of text at a particular arbitrary continuous indentation level. The `clipboard' is one of twenty text buffers fpted maintains, and is the default buffer for cutting and pasting to and from the buffer currently being input to and viewed.

The escape sequence to enter the fpted menu tree is the <ESC> key, and notification of that is usually visible in visual edit mode. Command escapes are also available for everything without using the menus, and you can hit the letter of a menu item immediately after hitting <ESC>, which is a very simple way to use fpted.

Simple Commands:

These are some of the more useful ctrl_and_one_letter commands in fpted. Several of these are also available via <ESC> followed by thier menu item number/letter.

	^u .... Undo recent changes to the current line.

	^n .... Search Pattern. You will be prompted for the pattern.

	^x .... Mark (the begin of the selection).

	^o .... toggle between  Overwrite and Insert modes.

	^y .... Yank the current line (copy to clipboard and delete)

	^p .... Paste the contents of the clipboard.
			Can also be used to recover the contents of the
			last delete command.

	^j .... Change Case and advance one char.

	<TAB> or	^I 
		Alias Substitution / 
		In completion mode will perform word completion.

	^a .... Go to first non-blank column.
		If Indent mode is off: Goto column 0.

	^g .... Match parenthesis (works with '(', '{' or '<' )

	^z .... Save changes.

	^V .... (Un-Ctrl) Ignore the meaning of the next key pressed.
		This allows inputing ctrl and other non-text keys as bytes.


Prefixed Commands:


	^;H ... HELP		(PREFIX-Capital_H)

	^;o ... Switch completion mode on/off.

	^;^v... Redefine a Key (define a macro ie. re-bind a key).

	^;^a... Delete to ^A  (to the begin of the line).

	^;^c... Copy selection (from ^X) to clipboard (buffer 0).

	^;^d .. Delete selection (form ^X) and copy to clipboard.

	^;^e... Delete to the end of the line.
		
	^;^f... Go to the end of the file.

	^;^g... adjust the view of the buffer so that the cursor is 
		centered in the screen vertically. 

	^;n ...	Find Next.
		
	^;N ... 	Find Previous.
		
	^;^n... Find and Substitute, this prompts for parameters.
		
	^;^o... Switch Indent mode on/off.

	^;^p .. Paste output of a shell command..

	^;<TAB> or	^;^I .. 
		Word completion. Searches the last word that starts
		with the same chars that are right before the cursor.
		By pressing this key several times you can get all the
		words that have the same beginning characters, one by one.
		This can be used even when word-completion mode is disabled.

	^;^r .. Edit previous file/buffer. 
		
	^;^t... Delete back-word.

	^;^u .. Edit next file/buffer. 

	^;^w... Delete to the end of the next word.
		
	^;^x... Mark the current position, and go to the last mark.

	^;^yc.. Delete TO char "c".

	^;^z .. Save and exit.

		
	^_  	Again : Repeats the last text insertion and/or deletion.
		(or ^/ in some keyboards)

	^;c ... Switch case-sensitivity on/off for searches.



Commandline mode

Go to commandline mode...

	^;<ESC>   	or 
	^;^<

When in commandline mode, commands are...

	q .... Quit.

	x .... Save & Quit.

	g .... Goto line number.

	r .... read text to the current position:
			rbN ---> Reads buffer N ( N = <0..20> ).
			r <fname> Reads a file.

	w .... writes :
		w		Saves to the current file-name's file.
		wbn		Writes to the buffer N.
		wbn <n1,n2>		Writes to buffer N, from line n1 to n2.
		w <fname>		Writes to a file.
		w <n1,n2>		Writes to a file, from line n1 to n2.

	! .... Executes a shell command.
		( This also causes fpted's concept of the size
			of the screen to be adjusted if necessary. )
		
	i .... Display buffers' info relative to the current file.
		
	a .... Define alias/abbreviation:
			a <key-string> <long-name>
		
	s .... Show/Save the current definitions.
		       Show/Save key bindings to a file.
		s ............ Show definitions (key bindings).
			
		s <fname> .... Save to a file.
			
	l .... Loads definitions from a file (load key bindings).
		
	bn .... Select a different buffer/file.
		       bN where N is the buffer number ( from 0 to 20 ).
		
	d .... Delete the current buffer.

	m .... Show / Define wrap margin.
			m ............ Show current value.
			m N .......... Set wrap margin to column .
			Use -1 to disable word wrap.

	o .... Show / Define indent level shift width.
			o ............ Show current value.
			o N .......... Set shift width to  columns.
			The default value is 4.
		       
	h .... Help.

	p .... Redefine PREFIX key.

		

commandline mode operators

	
	+  -  *   /


commandline mode variables

	.      The number of the current line.
	$      The number of lines in the file.
	x      Cursor's position X coordinate.
	y      Cursor's position Y coordinate.
	e      Number of chars in the current line.
	c      Cursor column value in the screen.
	m      The line number corresponding to the mark ( see ^X ).
	M      The X position corresponding to the mark.
	b      The number of the currently selected buffer.


	examples...
	    g $-20
	    w <.+5,$-3> saved.c
	    g $/2
	    etc.
		    

Key bindings used when repeating, or inside a macro (key definition):

^l .... Insert the number of the current line. ^v .... Insert the number of Cursor's X coordinate. ^;^v .. Insert the number of the iteration (when repeating). ^r .... Insert the number of Cursor's Column in the screen. ^; .... Read one key, directly from the keyboard, execute the respective command, and continue the macro. (Can be looked as a parameter inside a macro). Searching: ^N.... Pressing <RETURN> without entering any text will use the last pattern. The chars '<' and '>' when specified as the first char in a pattern, will switch the search direction. When entered alone, they switch the search direction without changing the search pattern.

Environment Variables fpted reads if present:

	FPTED_HELP Specifies the FPTED help file.

	FPTED_DEFS Specifies the default definitions file.
		   (The file where you save your default key-bindings)

	FPTED_CLIPFILE Specifies the inter-session ClipBoard file.
		( Used to save the clipboard when exiting and to recover
		  when entering to FPTED ).


Other
	<RETURN> or
	^M .... Insert a new line.

	^;<RETURN> or
	^;^M .. Increase one indent level (shift right).

	^B .... Backward one page.

	^D .... Delete the char in the cursor position.

	^E .... Go to the End of the current line.

	^F .... Forward one page.

	^I .... The same as <TAB>

	<BACKSPACE> or <DEL> or
		^H .... Back Space (Delete back char).

	^;^B... Go to the begin of the file.

	^L .... Refresh Screen.

	^;<DEL> Decrease one indent level (shift left).

	^S .... Not used.

	^T .... Go back one word.

	^K .... Default Prefix Key.

	^;^H... Cursor left (in addition to the directional keys)

	^W .... Advance one word.

	^;^;... Cursor up (in addition to the directional keys)

	^;^L... Cursor right (in addition to the directional keys)

	^Q .... Not used.

	^R .... Repeat command.

	^M .... The same as <RETURN>

	<ESC> or ^< .... Go to commands menu.

	^;O ... Enable/disable xterm mouse events.

	^;^x^x. Go to the last mark, without changing the mark.


cLIeNUX TODO's

	numerical byte insert
	Search string is regex
	pass ^z through, i.e. enable backgrounding/job control
	a Pico-like justify-paragraph macro

		

********** IMPORTANT NOTE **********

I intend this program to be FREE software, that is: you can distribute it, but you shouldn't use it for selling... So, you are free to use this application, and you can distribute any number of copies, as long as this notice will appear in every copy. Also, I DENY any responsibility for any kind of possible problems caused by this application (That means, if something unexpected goes wrong, you are at your own...).
				Fernando J. G. Pereira
				Lisboa - Portugal
				fjp@minerva.inesc.pt <1992>

There are some interesting techniques in the fpted sourcecode, which is very succinct, and remarkably clear given that English does not appear to be Sen~or Pereira's native language. Pereira will sometimes use return statements to terminate cases in a switch(), rather than the usual break statements.

This seedoc was based on Pereira's documentation, which was spotty in the version on metalab.unc.edu, and is substantially new, and thus is
Copyright 2000 Rick Hohensee
This file is released for redistribution only as part of an intact entire cLIeNUX Core.