Provided by: libtecla1-dev_1.6.1-5_i386 bug

NAME

       tecla, teclarc - The 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 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  keybindings  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 keybinding, 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 keybinding 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 keysequences 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 keysequences. 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 filename  that  precedes
       the  cursor.  Tecla searches backwards from the cursor, looking for the
       start of the filename, 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 filename up to the point  at  which  the  ambiguous
       matches start to differ, then lists the possible matches.

       In  addition  to  literally written filenames, 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_word_completions()
       function, which is also available separately to users of this  library.
       See the cpl_word_completions(3) man page for more details.

FILENAME EXPANSION

       With  the default key bindings, pressing ^X* causes Tecla to expand the
       filename 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 filename 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(3) 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 filename expansion, in the
       ef_expand_file(3 man page.

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  my  laptop  the  xev program reports that pressing this key
       generates keycode 115, so to turn this key into a compose key, I do the
       following:

         xmodmap -e 'keycode 115 = Multi_key'

       I  can  then  enter  an  i  with  a  umlaut over it by typing this key,
       followed by ", followed by i.

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.
         abort                    -  Send a SIGABRT 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, filename
                                     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
                                     filename which immediately
                                     precedes the cursor. In vi
                                     commmand mode the character
                                     under the cursor is also
                                     included in the filename being
                                     expanded, and you are left in
                                     vi insert mode.
         list-glob                -  List any filenames which match
                                     the wild-card, tilde and dollar
                                     expressions in the filename
                                     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 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 occurence of the
                                     next character typed.
         backward-delete-find     -  Delete the characters from the
                                     cursor up to and including the
                                     preceding occurence of the
                                     next character typed.
         forward-delete-to        -  Delete the characters from the
                                     cursor up to, but not
                                     including, the following
                                     occurence of the next
                                     character typed.
         backward-delete-to       -  Delete the characters from the
                                     cursor up to, but not
                                     including, the preceding
                                     occurence 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 occurence of the
                                     next character typed, into the
                                     cut buffer.
         backward-copy-find       -  Copy the characters from the
                                     cursor up to and including the
                                     preceding occurence 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
                                     occurence 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
                                     occurence 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 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 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, 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
       keybindings 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
         \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. 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
       keybindings  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 keysequence 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 Esc, 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-\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  keysequence.  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

       libtecla.a      -    The Tecla library
       libtecla.h      -    The Tecla header file.
       ~/.teclarc      -    The personal Tecla customization file.

SEE ALSO

       libtecla(3), gl_get_line(3), gl_io_mode(3), ef_expand_file(3),
       cpl_complete_word(3), pca_lookup_file(3)

AUTHOR

       Martin Shepherd  (mcs@astro.caltech.edu)

                                                                      tecla(7)