tecla

, teclarc

- User interface provided by the tecla library.

描述

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.

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

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 interpretted
as a pattern to be matched. Thus, cotinuing 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 commmand 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 commmand 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 '\ ', 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 '\ ' 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.

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 occurence 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 occurence 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 occurence 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 occurence 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 overriden by the tecla
configuration file, are designed to mimic most of the bindings of the
unix tcsh shell 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 refered 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 setttings.

^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

\

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 refered 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

\

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-\\

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\\

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

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\\

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-\

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.