TECLA(7) Standards, Environments, and Macros TECLA(7)

NAME


tecla, teclarc - User interface provided by the tecla library.

DESCRIPTION


This man page describes the command-line editing features that are
available to users of programs that read keyboard input via the tecla
library. Users of the tcsh shell will find the default key bindings
very familiar. Users of the bash shell will also find it quite
familiar, but with a few minor differences, most notably in how
forward and backward searches through the list of historical commands
are performed. There are two major editing modes, one with emacs-like
key bindings and another with vi-like key bindings. By default emacs
mode is enabled, but vi(1) mode can alternatively be selected via the
user's configuration file. This file can also be used to change the
bindings of individual keys to suit the user's preferences. By
default, tab completion is provided. If the application hasn't
reconfigured this to complete other types of symbols, then tab
completion completes file names.

Key Sequence Notation


In the rest of this man page, and also in all tecla configuration
files, key sequences are expressed as follows.

^A or C-a
This is a 'CONTROL-A', entered by pressing the CONTROL
key at the same time as the 'A' key.


\E or M-
In key sequences, both of these notations can be entered
either by pressing the ESCAPE key, then the following
key, or by pressing the META key at the same time as the
following key. Thus the key sequence M-p can be typed in
two ways, by pressing the ESCAPE key, followed by
pressing 'P', or by pressing the META key at the same
time as 'P'.


up
This refers to the up-arrow key.


down
This refers to the down-arrow key.


left
This refers to the left-arrow key.


right
This refers to the right-arrow key.


a
This is just a normal 'A' key.


The Tecla Configuration File


By default, tecla looks for a file called .teclarc in your home
directory (ie. ~/.teclarc). If it finds this file, it reads it,
interpreting each line as defining a new key binding or an editing
configuration option. Since the emacs key-bindings are installed by
default, if you want to use the non-default vi editing mode, the most
important item to go in this file is the following line:

edit-mode vi


This will re-configure the default bindings for vi-mode. The complete
set of arguments that this command accepts are:

vi
Install key bindings like those of the vi editor.


emacs
Install key bindings like those of the emacs editor. This is
the default.


none
Use just the native line editing facilities provided by the
terminal driver.


To prevent the terminal bell from being rung, such as when an
unrecognized control-sequence is typed, place the following line in
the configuration file:

nobeep


An example of a key binding line in the configuration file is the
following.

bind M-[2~ insert-mode


On many keyboards, the above key sequence is generated when one
presses the insert key, so with this key binding, one can toggle
between the emacs-mode insert and overwrite modes by hitting one key.
One could also do it by typing out the above sequence of characters
one by one. As explained above, the M- part of this sequence can be
typed either by pressing the ESCAPE key before the following key, or
by pressing the META key at the same time as the following key. Thus
if you had set the above key binding, and the insert key on your
keyboard didn't generate the above key sequence, you could still type
it in either of the following 2 ways.

1. Hit the ESCAPE key momentarily, then press '[', then '2',
then finally '~'.

2. Press the META key at the same time as pressing the '['
key, then press '2', then '~'.


If you set a key binding for a key sequence that is already bound to
a function, the new binding overrides the old one. If in the new
binding you omit the name of the new function to bind to the key
sequence, the original binding becomes undefined.


Starting with versions of libtecla later than 1.3.3 it is now
possible to bind key sequences that begin with a printable character.
Previously key sequences were required to start with a CONTROL or
META character.


Note that the special keywords "up", "down", "left", and "right"
refer to the arrow keys, and are thus not treated as key sequences.
So, for example, to rebind the up and down arrow keys to use the
history search mechanism instead of the simple history recall method,
you could place the following in your configuration file:

bind up history-search-backwards
bind down history-search-backwards


To unbind an existing binding, you can do this with the bind command
by omitting to name any action to rebind the key sequence to. For
example, by not specifying an action function, the following command
unbinds the default beginning-of-line action from the ^A key
sequence:

bind ^A


If you create a ~/.teclarc configuration file, but it appears to have
no effect on the program, check the documentation of the program to
see if the author chose a different name for this file.

Filename and Tilde Completion


With the default key bindings, pressing the TAB key (aka. ^I) results
in tecla attempting to complete the incomplete file name that
precedes the cursor. Tecla searches backwards from the cursor,
looking for the start of the file name, stopping when it hits either
a space or the start of the line. If more than one file has the
specified prefix, then tecla completes the file name up to the point
at which the ambiguous matches start to differ, then lists the
possible matches.


In addition to literally written file names, tecla can complete files
that start with ~/ and ~user/ expressions and that contain $envvar
expressions. In particular, if you hit TAB within an incomplete
~user, expression, tecla will attempt to complete the username,
listing any ambiguous matches.


The completion binding is implemented using the cpl_complete_word()
function, which is also available separately to users of this
library. See the cpl_complete_word(3TECLA) man page for more details.

Filename Expansion


With the default key bindings, pressing ^X* causes tecla to expand
the file name that precedes the cursor, replacing ~/ and ~user/
expressions with the corresponding home directories, and replacing
$envvar expressions with the value of the specified environment
variable, then if there are any wildcards, replacing the so far
expanded file name with a space-separated list of the files which
match the wild cards.


The expansion binding is implemented using the ef_expand_file()
function. See the ef_expand_file(3TECLA) man page for more details.

Recalling Previously Typed Lines


Every time that a new line is entered by the user, it is appended to
a list of historical input lines maintained within the GetLine
resource object. You can traverse up and down this list using the up
and down arrow keys. Alternatively, you can do the same with the ^P,
and ^N keys, and in vi command mode you can alternatively use the k
and j characters. Thus pressing up-arrow once, replaces the current
input line with the previously entered line. Pressing up-arrow again,
replaces this with the line that was entered before it, etc.. Having
gone back one or more lines into the history list, one can return to
newer lines by pressing down-arrow one or more times. If you do this
sufficient times, you will return to the original line that you were
entering when you first hit up-arrow.


Note that in vi mode, all of the history recall functions switch the
library into command mode.


In emacs mode the M-p and M-n keys work just like the ^P and ^N keys,
except that they skip all but those historical lines which share the
prefix that precedes the cursor. In vi command mode the upper case
'K' and 'J' characters do the same thing, except that the string that
they search for includes the character under the cursor as well as
what precedes it.


Thus for example, suppose that you were in emacs mode, and you had
just entered the following list of commands in the order shown:

ls ~/tecla/
cd ~/tecla
ls -l getline.c
emacs ~/tecla/getline.c


If you next typed:

ls


and then hit M-p, then rather than returning the previously typed
emacs line, which doesn't start with "ls", tecla would recall the "ls
-l getline.c" line. Pressing M-p again would recall the "ls ~/tecla/"
line.


Note that if the string that you are searching for, contains any of
the special characters, *, ?, or '[', then it is interpreted as a
pattern to be matched. Thus, continuing with the above example,
after typing in the list of commands shown, if you then typed:

*tecla*


and hit M-p, then the "emacs ~/tecla/getline.c" line would be
recalled first, since it contains the word tecla somewhere in the
line, Similarly, hitting M-p again, would recall the "ls ~/tecla/"
line, and hitting it once more would recall the "ls ~/tecla/" line.
The pattern syntax is the same as that described for file name
expansion, in the ef_expand_file(3TECLA).

History Files


Authors of programs that use the tecla library have the option of
saving historical command-lines in a file before exiting, and
subsequently reading them back in from this file when the program is
next started. There is no standard name for this file, since it makes
sense for each application to use its own history file, so that
commands from different applications don't get mixed up.

International Character Sets


Since libtecla version 1.4.0, tecla has been 8-bit clean. This means
that all 8-bit characters that are printable in the user's current
locale are now displayed verbatim and included in the returned input
line. Assuming that the calling program correctly contains a call
like the following,

setlocale(LC_CTYPE, "");


then the current locale is determined by the first of the environment
variables LC_CTYPE, LC_ALL, and LANG, that is found to contain a
valid locale name. If none of these variables are defined, or the
program neglects to call setlocale, then the default C locale is
used, which is US 7-bit ASCII. On most unix-like platforms, you can
get a list of valid locales by typing the command:

locale -a


at the shell prompt.

Meta Keys and Locales


Beware that in most locales other than the default C locale, META
characters become printable, and they are then no longer considered
to match M-c style key bindings. This allows international characters
to be entered with the compose key without unexpectedly triggering
META key bindings. You can still invoke META bindings, since there
are actually two ways to do this. For example the binding M-c can
also be invoked by pressing the ESCAPE key momentarily, then pressing
the c key, and this will work regardless of locale. Moreover, many
modern terminal emulators, such as gnome's gnome-terminal's and KDE's
konsole terminals, already generate escape pairs like this when you
use the META key, rather than a real meta character, and other
emulators usually have a way to request this behavior, so you can
continue to use the META key on most systems.


For example, although xterm terminal emulators generate real 8-bit
meta characters by default when you use the META key, they can be
configured to output the equivalent escape pair by setting their
EightBitInput X resource to False. You can either do this by placing
a line like the following in your ~/.Xdefaults file,

XTerm*EightBitInput: False


or by starting an xterm with an -xrm '*EightBitInput: False' command-
line argument. In recent versions of xterm you can toggle this
feature on and off with the 'Meta Sends Escape' option in the menu
that is displayed when you press the left mouse button and the
CONTROL key within an xterm window. In CDE, dtterms can be similarly
coerced to generate escape pairs in place of meta characters, by
setting the Dtterm*KshMode resource to True.

Entering International Characters


If you don't have a keyboard that generates all of the international
characters that you need, there is usually a compose key that will
allow you to enter special characters, or a way to create one. For
example, under X windows on unix-like systems, if your keyboard
doesn't have a compose key, you can designate a redundant key to
serve this purpose with the xmodmap command. For example, on many PC
keyboards there is a microsoft-windows key, which is otherwise
useless under Linux. On a laptop, for example, the xev program might
report that pressing this key generates keycode 115. To turn this key
into a COMPOSE key, do the following:

xmodmap -e 'keycode 115 = Multi_key'


Type this key followed by a " character to enter an 'I' with a umlaut
over it.

The Available Key Binding Functions


The following is a list of the editing functions provided by the
tecla library. The names in the leftmost column of the list can be
used in configuration files to specify which function a given key or
combination of keys should invoke. They are also used in the next
two sections to list the default key bindings in emacs and vi modes.

user-interrupt
Send a SIGINT signal to the parent
process.


suspend
Suspend the parent process.


stop-output
Pause terminal output.


start-output
Resume paused terminal output.


literal-next
Arrange for the next character to be
treated as a normal character. This
allows control characters to be
entered.


cursor-right
Move the cursor one character right.


cursor-left
Move the cursor one character left.


insert-mode
Toggle between insert mode and
overwrite mode.


beginning-of-line
Move the cursor to the beginning of the
line.


end-of-line
Move the cursor to the end of the line.


delete-line
Delete the contents of the current
line.


kill-line
Delete everything that follows the
cursor.


backward-kill-line
Delete all characters between the
cursor and the start of the line.


forward-word
Move to the end of the word which
follows the cursor.


forward-to-word
Move the cursor to the start of the
word that follows the cursor.


backward-word
Move to the start of the word which
precedes the cursor.


goto-column
Move the cursor to the 1-relative
column in the line specified by any
preceding digit-argument sequences (see
Entering Repeat Counts below).


find-parenthesis
If the cursor is currently over a
parenthesis character, move it to the
matching parenthesis character. If not
over a parenthesis character move right
to the next close parenthesis.


forward-delete-char
Delete the character under the cursor.


backward-delete-char
Delete the character which precedes the
cursor.


list-or-eof
This is intended for binding to ^D.
When invoked when the cursor is within
the line it displays all possible
completions then redisplays the line
unchanged. When invoked on an empty
line, it signals end-of-input (EOF) to
the caller of gl_get_line().


del-char-or-list-or-eof
This is intended for binding to ^D.
When invoked when the cursor is within
the line it invokes forward-delete-
char. When invoked at the end of the
line it displays all possible
completions then redisplays the line
unchanged. When invoked on an empty
line, it signals end-of-input (EOF) to
the caller of gl_get_line().


forward-delete-word
Delete the word which follows the
cursor.


backward-delete-word
Delete the word which precedes the
cursor.


upcase-word
Convert all of the characters of the
word which follows the cursor, to upper
case.


downcase-word
Convert all of the characters of the
word which follows the cursor, to lower
case.


capitalize-word
Capitalize the word which follows the
cursor.


change-case
If the next character is upper case,
toggle it to lower case and vice versa.


redisplay
Redisplay the line.


clear-screen
Clear the terminal, then redisplay the
current line.


transpose-chars
Swap the character under the cursor
with the character just before the
cursor.


set-mark
Set a mark at the position of the
cursor.


exchange-point-and-mark
Move the cursor to the last mark that
was set, and move the mark to where the
cursor used to be.


kill-region
Delete the characters that lie between
the last mark that was set, and the
cursor.


copy-region-as-kill
Copy the text between the mark and the
cursor to the cut buffer, without
deleting the original text.


yank
Insert the text that was last deleted,
just before the current position of the
cursor.


append-yank
Paste the current contents of the cut
buffer, after the cursor.


up-history
Recall the next oldest line that was
entered. Note that in vi mode you are
left in command mode.


down-history
Recall the next most recent line that
was entered. If no history recall
session is currently active, the next
line from a previous recall session is
recalled. Note that in vi mode you are
left in command mode.


history-search-backward
Recall the next oldest line who's
prefix matches the string which
currently precedes the cursor (in vi
command-mode the character under the
cursor is also included in the search
string). Note that in vi mode you are
left in command mode.


history-search-forward
Recall the next newest line who's
prefix matches the string which
currently precedes the cursor (in vi
command-mode the character under the
cursor is also included in the search
string). Note that in vi mode you are
left in command mode.


history-re-search-backward
Recall the next oldest line who's
prefix matches that established by the
last invocation of either history-
search-forward or history-search-
backward.


history-re-search-forward
Recall the next newest line who's
prefix matches that established by the
last invocation of either history-
search-forward or history-search-
backward.


complete-word
Attempt to complete the incomplete word
which precedes the cursor. Unless the
host program has customized word
completion, file name completion is
attempted. In vi command mode the
character under the cursor is also
included in the word being completed,
and you are left in vi insert mode.


expand-filename
Within the command line, expand wild
cards, tilde expressions and dollar
expressions in the file name which
immediately precedes the cursor. In vi
command mode the character under the
cursor is also included in the file
name being expanded, and you are left
in vi insert mode.


list-glob
List any file names which match the
wild-card, tilde and dollar expressions
in the file name which immediately
precedes the cursor, then redraw the
input line unchanged.


list-history
Display the contents of the history
list for the current history group. If
a repeat count of > 1 is specified,
only that many of the most recent lines
are displayed. See the Entering Repeat
Counts section.


read-from-file
Temporarily switch to reading input
from the file who's name precedes the
cursor.


read-init-files
Re-read teclarc configuration files.


beginning-of-history
Move to the oldest line in the history
list. Note that in vi mode you are left
in command mode.


end-of-history
Move to the newest line in the history
list (ie. the current line). Note that
in vi mode this leaves you in command
mode.


digit-argument
Enter a repeat count for the next key
binding function. For details, see the
Entering Repeat Counts section.


newline
Terminate and return the current
contents of the line, after appending a
newline character. The newline
character is normally '\n', but will be
the first character of the key sequence
that invoked the newline action, if
this happens to be a printable
character. If the action was invoked by
the '\n' newline character or the '\r'
carriage return character, the line is
appended to the history buffer.


repeat-history
Return the line that is being edited,
then arrange for the next most recent
entry in the history buffer to be
recalled when tecla is next called.
Repeatedly invoking this action causes
successive historical input lines to be
re-executed. Note that this action is
equivalent to the 'Operate' action in
ksh.


ring-bell
Ring the terminal bell, unless the bell
has been silenced via the nobeep
configuration option (see The Tecla
Configuration File section).


forward-copy-char
Copy the next character into the cut
buffer (NB. use repeat counts to copy
more than one).


backward-copy-char
Copy the previous character into the
cut buffer.


forward-copy-word
Copy the next word into the cut buffer.


backward-copy-word
Copy the previous word into the cut
buffer.


forward-find-char
Move the cursor to the next occurrence
of the next character that you type.


backward-find-char
Move the cursor to the last occurrence
of the next character that you type.


forward-to-char
Move the cursor to the character just
before the next occurrence of the next
character that the user types.


backward-to-char
Move the cursor to the character just
after the last occurrence before the
cursor of the next character that the
user types.


repeat-find-char
Repeat the last backward-find-char,
forward-find-char, backward-to-char or
forward-to-char.


invert-refind-char
Repeat the last backward-find-char,
forward-find-char, backward-to-char, or
forward-to-char in the opposite
direction.


delete-to-column
Delete the characters from the cursor
up to the column that is specified by
the repeat count.


delete-to-parenthesis
Delete the characters from the cursor
up to and including the matching
parenthesis, or next close parenthesis.


forward-delete-find
Delete the characters from the cursor
up to and including the following
occurrence of the next character typed.


backward-delete-find
Delete the characters from the cursor
up to and including the preceding
occurrence of the next character typed.


forward-delete-to
Delete the characters from the cursor
up to, but not including, the following
occurrence of the next character typed.


backward-delete-to
Delete the characters from the cursor
up to, but not including, the preceding
occurrence of the next character typed.


delete-refind
Repeat the last *-delete-find or
*-delete-to action.


delete-invert-refind
Repeat the last *-delete-find or
*-delete-to action, in the opposite
direction.


copy-to-column
Copy the characters from the cursor up
to the column that is specified by the
repeat count, into the cut buffer.


copy-to-parenthesis
Copy the characters from the cursor up
to and including the matching
parenthesis, or next close parenthesis,
into the cut buffer.


forward-copy-find
Copy the characters from the cursor up
to and including the following
occurrence of the next character typed,
into the cut buffer.


backward-copy-find
Copy the characters from the cursor up
to and including the preceding
occurrence of the next character typed,
into the cut buffer.


forward-copy-to
Copy the characters from the cursor up
to, but not including, the following
occurrence of the next character typed,
into the cut buffer.


backward-copy-to
Copy the characters from the cursor up
to, but not including, the preceding
occurrence of the next character typed,
into the cut buffer.


copy-refind
Repeat the last *-copy-find or *-copy-
to action.


copy-invert-refind
Repeat the last *-copy-find or *-copy-
to action, in the opposite direction.


vi-mode
Switch to vi mode from emacs mode.


emacs-mode
Switch to emacs mode from vi mode.


vi-insert
From vi command mode, switch to insert
mode.


vi-overwrite
From vi command mode, switch to
overwrite mode.


vi-insert-at-bol
From vi command mode, move the cursor
to the start of the line and switch to
insert mode.


vi-append-at-eol
From vi command mode, move the cursor
to the end of the line and switch to
append mode.


vi-append
From vi command mode, move the cursor
one position right, and switch to
insert mode.


vi-replace-char
From vi command mode, replace the
character under the cursor with the
next character entered.


vi-forward-change-char
From vi command mode, delete the next
character then enter insert mode.


vi-backward-change-char
From vi command mode, delete the
preceding character then enter insert
mode.


vi-forward-change-word
From vi command mode, delete the next
word then enter insert mode.


vi-backward-change-word
From vi command mode, delete the
preceding word then enter insert mode.


vi-change-rest-of-line
From vi command mode, delete from the
cursor to the end of the line, then
enter insert mode.


vi-change-line
From vi command mode, delete the
current line, then enter insert mode.


vi-change-to-bol
From vi command mode, delete all
characters between the cursor and the
beginning of the line, then enter
insert mode.


vi-change-to-column
From vi command mode, delete the
characters from the cursor up to the
column that is specified by the repeat
count, then enter insert mode.


vi-change-to-parenthesis
Delete the characters from the cursor
up to and including the matching
parenthesis, or next close parenthesis,
then enter vi insert mode.


vi-forward-change-find
From vi command mode, delete the
characters from the cursor up to and
including the following occurrence of
the next character typed, then enter
insert mode.


vi-backward-change-find
From vi command mode, delete the
characters from the cursor up to and
including the preceding occurrence of
the next character typed, then enter
insert mode.


vi-forward-change-to
From vi command mode, delete the
characters from the cursor up to, but
not including, the following occurrence
of the next character typed, then enter
insert mode.


vi-backward-change-to
From vi command mode, delete the
characters from the cursor up to, but
not including, the preceding occurrence
of the next character typed, then enter
insert mode.


vi-change-refind
Repeat the last vi-*-change-find or
vi-*-change-to action.


vi-change-invert-refind
Repeat the last vi-*-change-find or
vi-*-change-to action, in the opposite
direction.


vi-undo
In vi mode, undo the last editing
operation.


vi-repeat-change
In vi command mode, repeat the last
command that modified the line.


Default Key Bindings In emacs Mode
The following default key bindings, which can be overridden by the
tecla configuration file, are designed to mimic most of the bindings
of the unix tcsh shell, when it is in emacs editing mode.


This is the default editing mode of the tecla library.


Under UNIX the terminal driver sets a number of special keys for
certain functions. The tecla library attempts to use the same key
bindings to maintain consistency. The key sequences shown for the
following 6 bindings are thus just examples of what they will
probably be set to. If you have used the stty command to change these
keys, then the default bindings should match.

^C
user-interrupt


^\
abort


^Z
suspend


^Q
start-output


^S
stop-output


^V
literal-next


The cursor keys are referred to by name, as follows. This is
necessary because different types of terminals generate different key
sequences when their cursor keys are pressed.

right
cursor-right


left
cursor-left


up
up-history


down
down-history


The remaining bindings don't depend on the terminal settings.

^F
cursor-right


^B
cursor-left


M-i
insert-mode


^A
beginning-of-line


^E
end-of-line


^U
delete-line


^K
kill-line


M-f
forward-word


M-b
backward-word


^D
del-char-or-list-or-eof


^H
backward-delete-char


^?
backward-delete-char


M-d
forward-delete-word


M-^H
backward-delete-word


M-^?
backward-delete-word


M-u
upcase-word


M-l
downcase-word


M-c
capitalize-word


^R
redisplay


^L
clear-screen


^T
transpose-chars


^@
set-mark


^X^X
exchange-point-and-mark


^W
kill-region


M-w
copy-region-as-kill


^Y
yank


^P
up-history


^N
down-history


M-p
history-search-backward


M-n
history-search-forward


^I
complete-word


^X*
expand-filename


^X^F
read-from-file


^X^R
read-init-files


^Xg
list-glob


^Xh
list-history


M-<
beginning-of-history


M->
end-of-history


\n
newline


\r
newline


M-o
repeat-history


M-^V
vi-mode


M-0, M-1, ... M-9
digit-argument (see below)


Note that ^I is what the TAB key generates, and that ^@ can be
generated not only by pressing the CONTROL key and the @ key
simultaneously, but also by pressing the CONTROL key and the space
bar at the same time.

Default Key Bindings in vi Mode
The following default key bindings are designed to mimic the vi style
of editing as closely as possible. This means that very few editing
functions are provided in the initial character input mode, editing
functions instead being provided by the vi command mode. The vi
command mode is entered whenever the ESCAPE character is pressed, or
whenever a key sequence that starts with a meta character is entered.
In addition to mimicing vi, libtecla provides bindings for tab
completion, wild-card expansion of file names, and historical line
recall.


To learn how to tell the tecla library to use vi mode instead of the
default emacs editing mode, see the earlier section entitled The
Tecla Configuration File.


Under UNIX the terminal driver sets a number of special keys for
certain functions. The tecla library attempts to use the same key
bindings to maintain consistency, binding them both in input mode and
in command mode. The key sequences shown for the following 6 bindings
are thus just examples of what they will probably be set to. If you
have used the stty command to change these keys, then the default
bindings should match.

^C
user-interrupt


^\
abort


^Z
suspend


^Q
start-output


^S
stop-output


^V
literal-next


M-^C
user-interrupt


M-^\
abort


M-^Z
suspend


M-^Q
start-output


M-^S
stop-output


Note that above, most of the bindings are defined twice, once as a
raw control code like ^C and then a second time as a META character
like M-^C. The former is the binding for vi input mode, whereas the
latter is the binding for vi command mode. Once in command mode all
key sequences that the user types that they don't explicitly start
with an ESCAPE or a META key, have their first key secretly converted
to a META character before the key sequence is looked up in the key
binding table. Thus, once in command mode, when you type the letter
i, for example, the tecla library actually looks up the binding for
M-i.


The cursor keys are referred to by name, as follows. This is
necessary because different types of terminals generate different key
sequences when their cursor keys are pressed.

right
cursor-right


left
cursor-left


up
up-history


down
down-history


The cursor keys normally generate a key sequence that start with an
ESCAPE character, so beware that using the arrow keys will put you
into command mode (if you aren't already in command mode).


The following are the terminal-independent key bindings for vi input
mode.

^D
list-or-eof


^G
list-glob


^H
backward-delete-char


^I
complete-word


\r
newline


\n
newline


^L
clear-screen


^N
down-history


^P
up-history


^R
redisplay


^U
backward-kill-line


^W
backward-delete-word


^X*
expand-filename


^X^F
read-from-file


^X^R
read-init-files


^?
backward-delete-char


The following are the key bindings that are defined in vi command
mode, this being specified by them all starting with a META
character. As mentioned above, once in command mode the initial meta
character is optional. For example, you might enter command mode by
typing ESCAPE, and then press 'H' twice to move the cursor two
positions to the left. Both 'H' characters get quietly converted to
M-h before being compared to the key binding table, the first one
because ESCAPE followed by a character is always converted to the
equivalent META character, and the second because command mode was
already active.

M-<space>
cursor-right (META-space)


M-$
end-of-line


M-*
expand-filename


M-+
down-history


M--
up-history


M-<
beginning-of-history


M->
end-of-history


M-^
beginning-of-line


M-
repeat-find-char


M-,
invert-refind-char


M-|
goto-column


M-~
change-case


M-.
vi-repeat-change


M-%
find-parenthesis


M-a
vi-append


M-A
vi-append-at-eol


M-b
backward-word


M-B
backward-word


M-C
vi-change-rest-of-line


M-cb
vi-backward-change-word


M-cB
vi-backward-change-word


M-cc
vi-change-line


M-ce
vi-forward-change-word


M-cE
vi-forward-change-word


M-cw
vi-forward-change-word


M-cW
vi-forward-change-word


M-cF
vi-backward-change-find


M-cf
vi-forward-change-find


M-cT
vi-backward-change-to


M-ct
vi-forward-change-to


M-c;
vi-change-refind


M-c,
vi-change-invert-refind


M-ch
vi-backward-change-char


M-c^H
vi-backward-change-char


M-c^?
vi-backward-change-char


M-cl
vi-forward-change-char


M-c<space>
vi-forward-change-char (META-c-space)


M-c^
vi-change-to-bol


M-c0
vi-change-to-bol


M-c$
vi-change-rest-of-line


M-c|
vi-change-to-column


M-c%
vi-change-to-parenthesis


M-dh
backward-delete-char


M-d^H
backward-delete-char


M-d^?
backward-delete-char


M-dl
forward-delete-char


M-d<space>
forward-delete-char (META-d-space)


M-dd
delete-line


M-db
backward-delete-word


M-dB
backward-delete-word


M-de
forward-delete-word


M-dE
forward-delete-word


M-dw
forward-delete-word


M-dW
forward-delete-word


M-dF
backward-delete-find


M-df
forward-delete-find


M-dT
backward-delete-to


M-dt
forward-delete-to


M-d;
delete-refind


M-d,
delete-invert-refind


M-d^
backward-kill-line


M-d0
backward-kill-line


M-d$
kill-line


M-D
kill-line


M-d|
delete-to-column


M-d%
delete-to-parenthesis


M-e
forward-word


M-E
forward-word


M-f
forward-find-char


M-F
backward-find-char


M--
up-history


M-h
cursor-left


M-H
beginning-of-history


M-i
vi-insert


M-I
vi-insert-at-bol


M-j
down-history


M-J
history-search-forward


M-k
up-history


M-K
history-search-backward


M-l
cursor-right


M-L
end-of-history


M-n
history-re-search-forward


M-N
history-re-search-backward


M-p
append-yank


M-P
yank


M-r
vi-replace-char


M-R
vi-overwrite


M-s
vi-forward-change-char


M-S
vi-change-line


M-t
forward-to-char


M-T
backward-to-char


M-u
vi-undo


M-w
forward-to-word


M-W
forward-to-word


M-x
forward-delete-char


M-X
backward-delete-char


M-yh
backward-copy-char


M-y^H
backward-copy-char


M-y^?
backward-copy-char


M-yl
forward-copy-char


M-y<space>
forward-copy-char (META-y-space)


M-ye
forward-copy-word


M-yE
forward-copy-word


M-yw
forward-copy-word


M-yW
forward-copy-word


M-yb
backward-copy-word


M-yB
backward-copy-word


M-yf
forward-copy-find


M-yF
backward-copy-find


M-yt
forward-copy-to


M-yT
backward-copy-to


M-y;
copy-refind


M-y,
copy-invert-refind


M-y^
copy-to-bol


M-y0
copy-to-bol


M-y$
copy-rest-of-line


M-yy
copy-line


M-Y
copy-line


M-y|
copy-to-column


M-y%
copy-to-parenthesis


M-^E
emacs-mode


M-^H
cursor-left


M-^?
cursor-left


M-^L
clear-screen


M-^N
down-history


M-^P
up-history


M-^R
redisplay


M-^D
list-or-eof


M-^I
complete-word


M-\r
newline


M-\n
newline


M-^X^R
read-init-files


M-^Xh
list-history


M-0, M-1, ... M-9
digit-argument (see below)


Note that ^I is what the TAB key generates.

Entering Repeat Counts


Many of the key binding functions described previously, take an
optional count, typed in before the target key sequence. This is
interpreted as a repeat count by most bindings. A notable exception
is the goto-column binding, which interprets the count as a column
number.


By default you can specify this count argument by pressing the META
key while typing in the numeric count. This relies on the digit-
argument action being bound to 'META-0', 'META-1' etc. Once any one
of these bindings has been activated, you can optionally take your
finger off the META key to type in the rest of the number, since
every numeric digit thereafter is treated as part of the number,
unless it is preceded by the literal-next binding. As soon as a non-
digit, or literal digit key is pressed the repeat count is terminated
and either causes the just typed character to be added to the line
that many times, or causes the next key binding function to be given
that argument.


For example, in emacs mode, typing:

M-12a


causes the letter 'a' to be added to the line 12 times, whereas

M-4M-c


Capitalizes the next 4 words.


In vi command mode the meta modifier is automatically added to all
characters typed in, so to enter a count in vi command-mode, just
involves typing in the number, just as it does in the vi editor
itself. So for example, in vi command mode, typing:

4w2x


moves the cursor four words to the right, then deletes two
characters.


You can also bind digit-argument to other key sequences. If these end
in a numeric digit, that digit gets appended to the current repeat
count. If it doesn't end in a numeric digit, a new repeat count is
started with a value of zero, and can be completed by typing in the
number, after letting go of the key which triggered the digit-
argument action.

FILES


/usr/lib/libtecla.so
The tecla library


/usr/include/libtecla.h
The tecla header file


~/.teclarc
The personal tecla customization file


ATTRIBUTES


See attributes(7) for descriptions of the following attributes:


+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Evolving |
+--------------------+-----------------+

SEE ALSO


vi(1), libtecla(3LIB), cpl_complete_word(3TECLA),
ef_expand_file(3TECLA), gl_get_line(3TECLA), gl_io_mode(3TECLA),
pca_lookup_file(3TECLA), attributes(7)

April 9, 2016 TECLA(7)

tribblix@gmail.com :: GitHub :: Privacy