tecla man page on SmartOS

Man page or keyword search:  
man Server   16655 pages
apropos Keyword Search (all sections)
Output format
SmartOS logo
[printable version]

TECLA(5)							      TECLA(5)

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	famil‐
       iar,  but with a few minor differences, most notably in how forward and
       backward searches through the list  of  historical  commands  are  per‐
       formed.	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 com‐
       pletion 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.

       \fR 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  fol‐
		    lowing  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 direc‐
       tory (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 unrecog‐
       nized control-sequence is typed, place the following line in  the  con‐
       figuration file:

	 nobeep

       An  example of a key binding line in the configuration file is the fol‐
       lowing.

	 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  fol‐
       lowing 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 expres‐
       sions 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()	 func‐
       tion.  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 pre‐
       cedes 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 get‐
       line.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, Simi‐
       larly, hitting M-p again, would recall the "ls ~/tecla/" line, and hit‐
       ting it once more would recall the "ls ~/tecla/" line. The pattern syn‐
       tax 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 sav‐
       ing 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 differ‐
       ent 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 char‐
       acters 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 actu‐
       ally 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 usu‐
       ally 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 dis‐
       played 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 COM‐
       POSE  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 combina‐
       tion of keys should invoke.  They are also used in the  next  two  sec‐
       tions 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  cur‐
				     sor.

       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  pre‐
				     cedes 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	paren‐
				     thesis 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  dis‐
				     plays   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 cur‐
				     sor.

       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, tog‐
				     gle 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 cur‐
				     sor used to be.

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

       copy-region-as-kill
				     Copy the text between the	mark  and  the
				     cursor  to the cut buffer, without delet‐
				     ing 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 com‐
				     mand mode.

       history-search-backward
				     Recall the next oldest line who's	prefix
				     matches  the  string which currently pre‐
				     cedes 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  pre‐
				     cedes  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-for‐
				     ward 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-for‐
				     ward or history-search-backward.

       complete-word
				     Attempt to complete the  incomplete  word
				     which  precedes  the  cursor.  Unless the
				     host program has customized word  comple‐
				     tion,  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 imme‐
				     diately precedes the cursor. In vi	 comm‐
				     mand  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  nor‐
				     mally '\n', but will be the first charac‐
				     ter of the key sequence that invoked  the
				     newline  action,  if this happens to be a
				     printable character. If  the  action  was
				     invoked  by  the  '0 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 configu‐
				     ration  option  (see The Tecla Configura‐
				     tion File section).

       forward-copy-char
				     Copy the next character into the cut buf‐
				     fer  (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 buf‐
				     fer.

       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 cur‐
				     sor of the next character that  the  user
				     types.

       repeat-find-char
				     Repeat  the last backward-find-char, for‐
				     ward-find-char, backward-to-char or  for‐
				     ward-to-char.

       invert-refind-char
				     Repeat  the last backward-find-char, for‐
				     ward-find-char, backward-to-char, or for‐
				     ward-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  parenthe‐
				     sis, 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 charac‐
				     ter under the cursor with the next	 char‐
				     acter 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  preced‐
				     ing 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  preced‐
				     ing 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  charac‐
				     ters between the cursor and the beginning
				     of the line, then enter insert mode.

       vi-change-to-column
				     From vi command mode, delete the  charac‐
				     ters  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  parenthe‐
				     sis,  or  next  close  parenthesis,  then
				     enter vi insert mode.

       vi-forward-change-find
				     From vi command mode, delete the  charac‐
				     ters  from the cursor up to and including
				     the following occurence of the next char‐
				     acter typed, then enter insert mode.

       vi-backward-change-find
				     From  vi command mode, delete the charac‐
				     ters from the cursor up to and  including
				     the preceding occurence of the next char‐
				     acter typed, then enter insert mode.

       vi-forward-change-to
				     From vi command mode, delete the  charac‐
				     ters  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  charac‐
				     ters  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 opera‐
				     tion.

       vi-repeat-change
				     In vi command mode, repeat the last  com‐
				     mand 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 cer‐
       tain 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

       ^\fR
	     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	gener‐
       ated 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  cer‐
       tain 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

       ^\fR
	       abort

       ^Z
	       suspend

       ^Q
	       start-output

       ^S
	       stop-output

       ^V
	       literal-next

       M-^C
	       user-interrupt

       M-^\fR
	       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  ta‐
       ble.  Thus, once in command mode, when you type the letter i, for exam‐
       ple, 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

       \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-\fR
			    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\fR
			    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\fR
			    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-
			    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 inter‐
       preted  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 pre‐
       ceded 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(5) for descriptions of the following attributes:

       ┌────────────────────┬─────────────────┐
       │  ATTRIBUTE TYPE    │ ATTRIBUTE VALUE │
       ├────────────────────┼─────────────────┤
       │Interface Stability │ Evolving	      │
       └────────────────────┴─────────────────┘

SEE ALSO
       vi(1),	     cpl_complete_word(3TECLA),	       ef_expand_file(3TECLA),
       gl_get_line(3TECLA),	   gl_io_mode(3TECLA),	       libtecla(3LIB),
       pca_lookup_file(3TECLA), attributes(5)

				 Sep 10, 2013			      TECLA(5)
[top]

List of man pages available for SmartOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net