Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
tecla(7)	       Miscellaneous Information Manual		      tecla(7)

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

       \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	direc-
       tory  (ie. ~/.teclarc).	If it finds this file, it reads	it, interpret-
       ing 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  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	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  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 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 exam-
       ple, by not specifying an action	function, the  following  command  un-
       binds 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  ex-
       pressions.  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_complete_word(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 expres-
       sions 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()	 func-
       tion.  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, re-
       places 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	suffi-
       cient times, you	will return to the original line that you were	enter-
       ing 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 filename expansion, in the	ef_ex-
       pand_file(3 man page.

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 lo-
       cale 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 ne-
       glects  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  in-
       voked  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	termi-
       nals,  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 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 al-
       low you to enter	special	characters, or a way to	create one. For	 exam-
       ple,  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 gen-
       erates  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,  fol-
       lowed 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 combina-
       tion 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 cer-
       tain 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 de-
       fault 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	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. 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 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-se-
       quences 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 keysequence	that start with	an es-
       cape 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 op-
       tional.	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  op-
       tional  count,  typed in	before the target keysequence.	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	 bind-
       ings  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  in-
       volves  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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=teclarc&sektion=5&manpath=FreeBSD+Ports+15.0>

home | help