This editor has got a default built-in behaviour, but you can modify it by changing values in the profile files. Here you will study the default behaviour because the original profile files are exactly configured like the default built-in behaviour. Later you will see how to modify profile files.
When you run this program it first opens, loads and closes all the files you want to edit. Now lets study the user interface.
When you're editing a file, the screen is divided into three parts which are the status bar, the editing window and the help bar. When you want to do some actions, dialog boxes or alert boxes are eventually displayed, depending on the action to do. So let's begin with these boxes, then we will look at the three screen parts.
An alert box is made of a title, it is usually a question, and one or more
buttons. You must select one of these buttons in order to answer to the
question. There is always a default button, which is preselected. You can
validate your choice by typing Enter
or you can exit from
the alert box by typing Escape
. To select a button you
must type either the Left
or Right
keys
or the Tab
key.
A dialog box is made of a title and one or more fields. Each field could
have a label and/or an help line. The label is usually displayed at the left
of the field, the help line is displayed at the bottom of the screen. Fields
are text areas that you must fill typing text in them. You can validate what
you typed by typing Enter
or exit from the dialog box by
typing Escape
. You can switch from one field to another by
typing either the Up
or Down
keys or the
Tab
key.
On the top line of the screen you can see informations about the current file being edited. These informations are from left ro right:
In the region situated between the top and bottom lines of the screen there is the editing window. The file's content is displayed here and you can modify it by simply typing in new text. Like in any other text editor, the cursor's position is materialized by a blinking cursor.
You can directly type text, you needn't to switch between editing mode and command mode like in VI for example because you can type commands while you are typing text, this is really a great benefit for an easy to use editor.
The help bar is on the bottom line of the screen. On this line important help or messages are displayed. By default it displays how to access to the most important functions of the editor, but you can change it as you want. You can highlight some parts of this line by preceding the text by a '&' (look at the default profile files to see what I mean).
Here you will learn all of the available functions of JERED. This section will describe the default key mappings but keep in mind that you can remap any key to any action. For each available action, I'll give you its goal and the key combination to produce it. Later you will learn the actions's internal names to allow you to remap keys to actions.
By default typing on a key produces the character written on this key on the keyboard but you can change this behaviour for example to get a Dvorak's keyboard or to write morse + plain text while you're typing (uncomment the lines in the default profile files to play morse macros and you will see how it works). The important thing to know is that you can map character strings to keys, not only one character, you can map recorded or written macros and finally you can map actions to keys. Of course you can't map a string plus a macro plus an action to the same key.
As what you can expect, you can use the arrow keys to move in the text, you
can of course use PageUp
, PageDown
,
Del
, BackSpace
, Tab
,
because they work like you want.
Home
moves the cursor to the beginning of the current line
while End
moves it to the end of the current line.
There are small differences with other text editors:
the Enter
key inserts a new blank line under the current one
without cutting the current line at the cursor's position.
Shift_TAB
doesn't seem to work properly for me and if it
is your case you can type Ctrl_T
to do the same action. It
is probably a problem in ncurses or in the terminfo database.
The Insert
key is a switch between Insertion (default) and
Replace modes.
However these differences may be modified to suit your needs by remapping the related keys to other preferred actions.
For these reasons what you just have to learn is all the default remapped keys.
What I call a remapped key is a key which doesn't produce what is written
on it on the keyboard. We needn't to learn that typing a 'A'
will produce a 'A'
because it is what people expects even if
you can modify this to produce a 'B'
or
a 'You press a A but I type a string'
You can precede each key by Escape
to multiply by two the
number of accessible keys. Of course you can use the Shift or Control keys to
do key combinations which are remappable too. However the Alt keys don't work
for me, it is probably a problem in ncurses or in the terminfo database.
Typing on the Escape
key will display a new help bar showing
that the editor is waiting for you to type a new key in order to make a keys
sequence. There is about a one second delay for this new help bar to appear on
the bottom of the screen. The system will *not* respond to another
keypress *until* the new help bar is displayed. My explanation, which is
also the ncurses writer's explanation: When you type Escape
,
the 1 second pause is done to distinguish between the user typing
Escape
and another key, and the user typing an extended key,
which returns an extended code beginning with
the escape code. This last thing will be immediate, but we must do a pause to
determine if it is a user escape key or an extended key code. If the rest of
the code is received immediately, then it is an extended code beginning with
escape, if it is not immediate, then we are sure the user really pressed the
escape key. Maybe the pause is too long but I don't know if it is possible
to change it without modifying and recompiling ncurses. After you
have hit the Escape
key, the system is waiting for you to
type another key so that it may execute the command to which that ESC+key is
mapped. If you wish to cancel the pending action, hit the
Escape
key a second time. The "normal" help bar will appear
on the bottom of the screen.
A dialog box is displayed to allow you to enter a command to be executed.
Commands may be external commands or internal ones. All the internal commands
must begin with ':'
. Any command which doesn't begin with
the character ':'
is passed directly to the shell to be
executed. An acceptable external command could be any command recognized by
your operating system. Later you will learn all the available internal commands.
When you launch an external command, the screen is cleared then the result
of your command will appear on the screen, and you will be given a
Press any key
prompt. When you press any key you
will be back where you were before you typed the external command.
If there is more output than a single screen, you can control the output of
your command by piping it to more
(or, preferably,
less
)
E.g. to examine a big directory, which would normally scroll off the JERED screen, type:
ls /tmp/joe | less
You will be able to view the output from "less" as you would
expect, and only return to JERED by first exiting from less (by use of the
q
key), then by typing any other key.
You temporarily quit the editor to go to the shell. If possible the prompt is
modified to show you are still in an editing session. You can return to the
editor by typing exit
If your aliases are defined in your .profile, they will not be active because the .profile file is only read upon login; however, if your aliases are defined in your shell configuration file (as e.g. .bashrc) they will be active, since the .bashrc file is read whenever bash is executed.
If the file was modified but not saved, this key will show an alert box asking
you if you really want to quit. If you choose YES
or if
the file wasn't modified then the memory used by this file is freed and the
editor switches to the next file being edited if any, otherwise the program
exits. If you choose NO
, nothing happens and you stay where
you were.
The file being edited is saved to disk if it was modified since the last save.
A dialog box is displayed to allow you to type a text string to be searched, eventually a text string to replace with, and if you want to ignore case while searching.
If you press Enter
and nothing appears to happen, i.e. the
cursor stays where it was, this means that there has been no occurence of the
search string found in the text.
Only the currently active file is searched, from the beginning of the cursor's line (I know, this should be modified !!!) to the end of the file.
When an occurence of the string is found you will be prompted on the bottom line
of the screen with a Continue/Replace/All/Stop
question.
Continue
will search for the next occurence,
Replace
will replace the occurence with the replacing string.
To delete occurences of a string, leave the replacing string empty and choose
Replace
when an occurence is found.
All
will replace all occurences of the string till the end
of the file. For security reasons you can't choose All
when
the replacing string is empty.
Stop
will stop the search immediately.
If a block already exists, adds all the lines between the block and the current line to the block, otherwise creates a new block with the current line.
E.g. If you have a line marked and move the cursor somewhere off the marked line (say down 5 lines for example) and press this key again, all the lines between the original marked line (or marked block) and the current cursor line will be marked.
If it does not result in a highligted action visible on your screen it is likely because there is already another highlighted block in some other file in the edit files buffer. There may be only *one* highlighted block at a time in all the files in the edit buffer.
If a block exists, unmarks all the lines of this block even if it is in another file than the current one.
Copy ( i.e. replicate) the current marked block just under the current cursor line. The cursor line must be OUTSIDE the highlighted marked block or the copy will not occur.
Move the current marked block from where it is, to just under the current cursor line. The cursor line must be OUTSIDE the highlighted marked block or the move will not occur.
Remove the marked block. This action requires a confirmation from the user to actually carry out this command, since there is no way to undo it.
Launch the man command with the current word as a parameter, e.g. if you are
typing a program and you want to use the printf
function but
you don't remember its syntax, simply move the cursor to the word
printf
in your program and press this key.
Launch the info command with the current word as a parameter, e.g. if you are
typing a program and you want to use the printf
function but
you don't remember its syntax, simply move the cursor to the word
printf
in your program and press this key.
When something is written on the screen above the file you are editing, for
example if someone issue a write
command to you, you can
redraw the entire screen from scratch by typing this key.
All the edited files are loaded in a circular ring buffer, so when you press this key you go from one file to the next on the ring. Of course the file you leave stays in memory and you can go back to this file typing this key several times.
When you press this key for the first time, a macro file named
macro.jem
is created in the current directory. Whatever you
will type to the keyboard until the next time you press this key will be done
(of course) and recorded. When you press this key for the second time, a
dialog box is displayed to allow you to give another name to this macro to
save it permanently. You can either enter a new name or press
Escape
if you don't want to save it permanently. In all
cases the new macro is immediately available to be replayed. There is no size
limit for a macro.
Plays the current macro (the file ./macro.jem
). Eventually
stops a macro recording but does not allow a name to be given to this macro.
This will cut the current line in two parts at the cursor's position. The left part stays where it was but the right part is moved to the following line.
This key will delete the line where the cursor is.
Like in most of the existing programs, you can press this key to put the editor in the background, so you're back to the shell but JERED is still here. You can return to the editor by typing the unix command
fg
This key moves the cursor to the first line of the next paragraph. A blank line counts as a paragraph of one line.
This key moves the cursor to the line just above the current paragraph.
This key moves the cursor to the first character of the next word on the same line.
This key moves the cursor to the first character of the current word, then to the first character of the previous word on the same line.
This key will convert all the marked lines to Uppercase.
This key will convert all the marked lines to Lowercase.
If you press this key while a block of lines exists, all the block will be aligned to the cursor's current column, keeping indentation if possible.
Reformats the block of lines according to the WORDWRAPBEGIN
and WORDWRAPEND
variables of your JERED's profile files.
Loads the general help file of JERED, for now a sample text file is loaded but I will probably modify this behaviour to generate the general help file from this document using sgml2txt or something like that.
This key will automatically and dynamically generate a help file according to the current key mappings inside JERED, this will allow you to learn how to use JERED whatever modifications are made to the default key mappings. The generated file is then loaded in JERED, just like any other file. This is probably one of the most important and useful functions of JERED.
In order for you to learn how to map text and macros to keys, some other actions are mapped to keys in the default profile file, but are not available if you don't use this profile file or don't install the macros. Here is a list of these available actions:
Jerome Alet - alet@unice.fr
do-while
block:
do
{
}
while () ;
else
block:
else
{
}
for
block:
for (; ;)
{
}
if
block:
if ()
{
}
switch-case
block:
switch ()
{
case :
break;
default:
break;
}
while
block:
while ()
{
}
/* */
Many other actions are commented out in the default profile file, for example JERED can help you to write in morse code and plain text in the same time. To see what I mean just uncomment the morse macros lines in the default profile file.
Here is a list of the internal commands of JERED, they are all accessible
through the F1
key unless you've remapped this function to
another key. When you type an internal command, it must begin with
':'
otherwise it is considered to be an external command.
Internal commands are case insensitive.
With internal commands you can change internal variables values but you will
see these variables later, when you will learn how to configure JERED. For now
let's begin with real internal commands. In the following lines we will consider
that the F1 key is mapped to allow people to enter commands because it is the
default behaviour.
This command allows you to go directly to the line numbered NUM in the current file. If NUM is greater than the total number of lines in the current file then the cursor is moved to the bottom line of the file. If you type an illegal value then the cursor stays at its current position. For example, if you want to go to the 125th line of the file, just type:
F1 then :125
This command allows you to load another file in the memory and to switch to it for editing purpose. You can load a non existing file to create a new one. For now you can only load one file at a time with this command and there is no wildcard expansion. For example if you're editing a file and you want to load a new file, say foo.bar, just type:
F1 then :EDIT foo.bar
This command will change the default macro to be the macro you give the name
in the dialog box. This macro will then become accessible through the
Play a Recorded Macro - Press Ctrl_P
function. For example
if you want the current macro to be my_macro.jem
, just
type:
F1 then :MACRO my_macro.jem
The macro my_macro.jem
will be searched in the current
directory, then in the directory indicated by the JEMACROS
environnement variable.
This command produces the same result as the Get general help on JERED
- Press ESC then 'H'
function.