VRL(3) VRL(3)
NAME
vrl - command-line editing library
SYNOPSIS
char *readline(prompt)
char *prompt;
void add_history(line)
char *line;
int rl_reset_terminal(terminal_name)
char *terminal_name;
DESCRIPTION
Vrl is a library that allows an application to read a line
from the terminal, giving the user additional editing
capabilities like cursor movement, filename completion and
command history.
It is a kind of a lightweight version of the GNU readline
library, having the necessary functions but smaller and
faster (like Rick Salz' editline library). It has been
developed to work with the rc-shell, but may be useful for
other things as well.
readline() will display the given prompt on the screen,
and allows the user to enter a line of text. When the user
is done with it, the line will be returned to the caller
with the trailing newline removed. The caller should
free() the buffer afterward. If the user generates an
EOF, NULL is returned.
add_history() should be used to add commands to the his-
tory, readline() does not do that itself.
Normally, the vrl library will check $TERM and $TERMCAP,
and reinitialise if either of them changes. If a shell
does not update these variables in its own environment, it
should use rl_reset_terminal() to inform the vrl library
about this.
The vrl library will catch SIGWINCH so that it is informed
of window size changes, and re-generates it just before it
returns from readline(). The tty's susp, intr and quit
characters will generate SIGTSTP, SIGINT, and SIGQUIT just
before returning an empty line to the caller.
EDITING COMMANDS
The available commands are listed below:
^A Move to the start of the line
^B Move cursor backward
vrl-1.3 1
VRL(3) VRL(3)
^D Delete char under cursor. If the line is empty and
the previous character typed was not a delete-char
command, EOF is generated.
^E Move to the end of the line
^F Move cursor forward
^H Delete char left of cursor
^I Apply filename completion to the word under the
cursor (^I is the [TAB] key)
^J Accept the line (^J usually corresponds to the
[NEWLINE] or [ENTER] key)
^K Delete to the end of the line
^L Redisplay the line
^M Accept the line
^N Display next history line
^O Re-read the initialisation file
^P Display previous history line
^R Backward history search
^T Transpose chars
^U Kill the whole line
^V Insert next character as is, even if it is a com-
mand
^W Delete the word under the cursor
^? Delete char under the cursor (^? usually corre-
sponds to the [DEL] key)
ESC-ESC or ESC-?
List all possible completions without changing the
command-line.
ESC-* Replace the expression with all matching filenames.
ESC-v Display the version of the vrl library on stdout
In addition to this, the following keypad and keyboard
function keys are recognised:
vrl-1.3 2
VRL(3) VRL(3)
Left-arrow
Move cursor backward
Right-arrow
Move cursor forward
Up-arrow
Display previous history line
Down-arrow
Display next history line
Delete-key
Delete char under cursor
Backspace-key
Delete char left of cursor
Insert-key
Toggle insert/overwrite mode
Home-key
Move to the start of the line
End-key
Move to the end of the line
Lastly, the following special characters (as set with
stty(1) ) are recognised. They are ignored if they happen
to correspond to one of the built-in command characters.
erase Delete char left of cursor (usually ^H or ^?)
kill Kill the whole line (usually ^U)
eof Accept the line if it is not empty, EOF otherwise
(usually ^D)
werase Delete the word under the cursor (usually ^W)
lnext Insert the next character as is (usually ^V)
reprint
Redisplay the line (usually ^R)
susp Suspend the current process. Vrl will send a SIGT-
STP to the application, and readline() will return
an empty line (usually ^Z)
intr Interrupt the current process. Vrl will send a SIG-
INT to the application, and readline() will return
an empty line (usually ^C)
quit Interrupt the current process. Vrl will send a
vrl-1.3 3
VRL(3) VRL(3)
SIGQUIT to the application, and readline() will
return an empty line (usually ^)
FILENAME COMPLETION
The filename completion function acts on the text under
the cursor. The text may contain wildcards like '*' and
'?', and environment variables are expanded,
If the completion is unique, the text will be replaced by
the filename. If the completion is ambiguous, the text
will be replaced by the common prefix of all the possible
completions. Whether they are listed is controlled by the
"completion" flag described below.
INITIALISATION FILE
At startup, the vrl library will look for a file named
.vrlrc in the user's home directory. This file should con-
tain one keyword+value pair per line, empty lines and
lines starting with a '#' are ignored.
The '^O' command (see above) can be used to force vrl to
re-read this file.
The following option keywords are recognised:
beep on | off
If set to "on", vrl will beep when the requested
operation is impossible, setting it to "off"
silences it. Default is "on".
insertmode on | off
If "on", characters typed will be inserted. If set
to "off", new characters will overwrite the exist-
ing ones. Default is "on".
histmax <num>
The maximum number of entries to store in the com-
mand history.
histmode all | norepeat | nodups
This option defines how commands are added to the
history. If set to "all", every command is added
without hesitation. When set to "norepeat", a com-
mand is only added if it is different from the pre-
vious one. Lastly, when it is set to "nodups", the
command is added but all previous occurrences in
the history are removed. Default is "norepeat".
completion always | nochange | never
This option defines what happens when a filename
completion is ambiguous. If set to "always", all
alternatives are listed automatically, "nochange"
means that they are only listed when the filename
to complete didn't change (i.e. it didn't become
vrl-1.3 4
VRL(3) VRL(3)
longer), and setting it to "never" means that noth-
ing will be listed, ever. Default is "nochange".
ansicursorkeys on | off
On some terminals (e.g. xterm), you can't type
ahead with the cursor keys since they don't gener-
ate the same sequence as when the keypad is acti-
vated. The symptom is that instead of displaying
the previous command on cursor-up, ^[[A is dis-
played. Setting this option to "on" allows vrl to
recognise ^[[A, ^[[B, ^[[C, and ^[[D as alterna-
tives for cursor-up, -down, -right, and -left,
which makes type-ahead possible on a number of ter-
minals (e.g. xterm, vt100, ...). Default is "on".
FILES
$HOME/.vrlrc The user's personal initialisation file
SEE ALSO
editline(3), readline(3)
AUTHOR
Gert-Jan Vons <vons@usa.net>
vrl-1.3 5