mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			278 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			278 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| texinode(The zle Module)()(The zftp Module)(Zsh Modules)
 | |
| sect(The zle Module)
 | |
| The tt(zle) module contains the Zsh Line Editor.  See
 | |
| ifzman(zmanref(zshzle))\
 | |
| ifnzman(noderef(Zsh Line Editor))\
 | |
| .  It also contains three related builtin commands:
 | |
| 
 | |
| startitem()
 | |
| findex(bindkey)
 | |
| cindex(keys, rebinding)
 | |
| cindex(rebinding keys)
 | |
| cindex(keys, binding)
 | |
| cindex(binding keys)
 | |
| cindex(keymaps)
 | |
| xitem(tt(bindkey) [ var(options) ] tt(-l))
 | |
| xitem(tt(bindkey) [ var(options) ] tt(-d))
 | |
| xitem(tt(bindkey) [ var(options) ] tt(-D) var(keymap) ...)
 | |
| xitem(tt(bindkey) [ var(options) ] tt(-A) var(old-keymap new-keymap))
 | |
| xitem(tt(bindkey) [ var(options) ] tt(-N) var(new-keymap) [ var(old-keymap) ])
 | |
| xitem(tt(bindkey) [ var(options) ] tt(-m))
 | |
| xitem(tt(bindkey) [ var(options) ] tt(-r) var(in-string) ...)
 | |
| xitem(tt(bindkey) [ var(options) ] tt(-s) var(in-string out-string) ...)
 | |
| xitem(tt(bindkey) [ var(options) ] var(in-string command) ...)
 | |
| item(tt(bindkey) [ var(options) ] [ var(in-string) ])(
 | |
| tt(bindkey)'s options can be divided into three categories: keymap selection,
 | |
| operation selection, and others.  The keymap selection options are:
 | |
| 
 | |
| startitem()
 | |
| item(tt(-e))(
 | |
| Selects keymap `tt(emacs)', and also links it to `tt(main)'.
 | |
| )
 | |
| item(tt(-v))(
 | |
| Selects keymap `tt(viins)', and also links it to `tt(main)'.
 | |
| )
 | |
| item(tt(-a))(
 | |
| Selects keymap `tt(vicmd)'.
 | |
| )
 | |
| item(tt(-M))(
 | |
| The first non-option argument is used as a keymap name,
 | |
| and does not otherwise count as an argument.
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| If a keymap selection is required and none of the options above are used, the
 | |
| `tt(main)' keymap is used.  Some operations do not permit a keymap to be
 | |
| selected, namely:
 | |
| startitem()
 | |
| item(tt(-l))(
 | |
| List all existing keymap names.  If the tt(-L)
 | |
| option is used, list in the form of tt(bindkey)
 | |
| commands to create the keymaps.
 | |
| )
 | |
| item(tt(-d))(
 | |
| Delete all existing keymaps and reset to the default state.
 | |
| )
 | |
| item(tt(-D) var(keymap) ...)(
 | |
| Delete the named var(keymap)s.
 | |
| )
 | |
| item(tt(-A) var(old-keymap new-keymap))(
 | |
| Make the var(new-keymap) name an alias for var(old-keymap), so that
 | |
| both names refer to the same keymap.  The names have equal standing;
 | |
| if either is deleted, the other remains.  If there is already a keymap
 | |
| with the var(new-keymap) name, it is deleted.
 | |
| )
 | |
| item(tt(-N) var(new-keymap) [ var(old-keymap) ])(
 | |
| Create a new keymap, named var(new-keymap).  If a keymap already has that
 | |
| name, it is deleted.  If an var(old-keymap) name is given, the new keymap
 | |
| is initialized to be a duplicate of it, otherwise the new keymap will
 | |
| be empty.
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| To use a newly created keymamp, it should be linked to tt(main).  Hence
 | |
| the sequence of commands to create and use a new keymap `tt(mymap)'
 | |
| initialized from the tt(emacs) keymap (which remains unchanged) is:
 | |
| 
 | |
| example(bindkey -N mymap emacs
 | |
| bindkey -A mymap main)
 | |
| 
 | |
| Note that while `tt(bindkey -A) var(newmap) tt(main)' will work when
 | |
| var(newmap) is tt(emacs) or tt(viins), it will not work for tt(vicmd), as
 | |
| switching from vi insert to command mode becomes impossible.
 | |
| 
 | |
| The following operations require a keymap to be selected:
 | |
| 
 | |
| startitem()
 | |
| item(tt(-m))(
 | |
| Add the built-in set of meta-key bindings to the selected keymap.
 | |
| Only keys that are unbound or bound to tt(self-insert) are affected.
 | |
| )
 | |
| item(tt(-r) var(in-string) ...)(
 | |
| Unbind the specified var(in-string)s in the selected keymap.
 | |
| This is exactly equivalent to binding the strings to tt(undefined-key).
 | |
| )
 | |
| item(tt(-s) var(in-string out-string) ...)(
 | |
| Bind each var(in-string) to each var(out-string).
 | |
| When var(in-string) is typed, var(out-string) will be
 | |
| pushed back and treated as input to the line editor.
 | |
| )
 | |
| item(var(in-string command) ...)(
 | |
| Bind each var(in-string) to each var(command).
 | |
| )
 | |
| item([ var(in-string) ])(
 | |
| List key bindings.  If an var(in-string) is specified, the binding of
 | |
| that string in the selected keymap is displayed.  Otherwise, all key
 | |
| bindings in the selected keymap are displayed.  As an exception,
 | |
| if the tt(-e) or tt(-v) options are used alone, the keymap is em(not)
 | |
| displayed - the implicit linking of keymaps is the only thing that happens.
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| In the binding operations, if the tt(-R) option is used, the var(in-string)s
 | |
| are interpreted as ranges, instead of plain strings.  A valid range
 | |
| consists of two characters, with an optional `tt(-)'
 | |
| between them.  All characters between the two specified, inclusive,
 | |
| are bound as specified.
 | |
| 
 | |
| For either var(in-string) or var(out-string), the following
 | |
| escape sequences are recognised:
 | |
| 
 | |
| startsitem()
 | |
| sitem(tt(\a))(bell character)
 | |
| sitem(tt(\b))(backspace)
 | |
| sitem(tt(\e), tt(\E))(escape)
 | |
| sitem(tt(\f))(form feed)
 | |
| sitem(tt(\n))(linefeed (newline))
 | |
| sitem(tt(\r))(carriage return)
 | |
| sitem(tt(\t))(horizontal tab)
 | |
| sitem(tt(\v))(vertical tab)
 | |
| sitem(tt(\)var(NNN))(character code in octal)
 | |
| sitem(tt(\x)var(NN))(character code in hexadecimal)
 | |
| sitem(tt(\M)[tt(-)]var(X))(character with meta bit set)
 | |
| sitem(tt(\C)[tt(-)]var(X))(control character)
 | |
| sitem(tt(^)var(X))(control character)
 | |
| endsitem()
 | |
| 
 | |
| In all other cases, `tt(\)' escapes the following character.  Delete is
 | |
| written as `tt(^?)'.  Note that `tt(\M^?)' and `tt(^\M?)' are not the same,
 | |
| and that (unlike emacs), the bindings `tt(\M-)var(X)' and `tt(\e)var(X)'
 | |
| are entirely distinct, although they are initialized to the same bindings
 | |
| by `tt(bindkey -m)'.
 | |
| )
 | |
| findex(vared)
 | |
| cindex(parameters, editing)
 | |
| cindex(editing parameters)
 | |
| item(tt(vared) [ tt(-Aach) ] [ tt(-p) var(prompt) ] [ tt(-r) var(rprompt) ] var(name))(
 | |
| The value of the parameter var(name) is loaded into the edit
 | |
| buffer, and the line editor is invoked.  When the editor exits,
 | |
| var(name) is set to the string value returned by the editor.
 | |
| When the tt(-c) flag is given, the parameter is created if it doesn't
 | |
| already exist.  The tt(-a) flag may be given with tt(-c) to create
 | |
| an array parameter, or the tt(-A) flag to create an associative array.
 | |
| If the type of an existing parameter does not match the type to be
 | |
| created, the parameter is unset and recreated.
 | |
| 
 | |
| Individual elements of existing array or associative array parameters
 | |
| may be edited by using subscript syntax on var(name).  New elements are
 | |
| created automatically, even without tt(-c).
 | |
| 
 | |
| If the tt(-p) flag is given, the following string will be taken as
 | |
| the prompt to display at the left.  If the tt(-r) flag is given,
 | |
| the following string gives the prompt to display at the right.  If the
 | |
| tt(-h) flag is specified, the history can be accessed from ZLE.
 | |
| )
 | |
| findex(zle)
 | |
| cindex(widgets, rebinding)
 | |
| cindex(rebinding widgets)
 | |
| cindex(widgets, binding)
 | |
| cindex(binding widgets)
 | |
| cindex(widgets, invoking)
 | |
| cindex(invoking widgets)
 | |
| cindex(widgets, calling)
 | |
| cindex(calling widgets)
 | |
| cindex(widgets, defining)
 | |
| cindex(defining widgets)
 | |
| xitem(tt(zle) tt(-l) [ tt(-L) ] [ tt(-a) ] [ var(string) ... ])
 | |
| xitem(tt(zle) tt(-D) var(widget) ...)
 | |
| xitem(tt(zle) tt(-A) var(old-widget) var(new-widget))
 | |
| xitem(tt(zle) tt(-N) var(widget) [ var(function) ])
 | |
| xitem(tt(zle) tt(-C) var(widget) var(completion-widget) var(function))
 | |
| xitem(tt(zle) tt(-R) [ tt(-c) ] [ var(display-string) ] [ var(string) ... ])
 | |
| xitem(tt(zle) tt(-U) var(string))
 | |
| item(tt(zle) var(widget) tt([ -n) var(num) tt(]) tt([ -N ]) var(args) ...)(
 | |
| The tt(zle) builtin performs a number of different actions concerning
 | |
| ZLE.  Which operation it performs depends on its options:
 | |
| 
 | |
| startitem()
 | |
| item(tt(-l) [ tt(-L) ])(
 | |
| List all existing user-defined widgets.  If the tt(-L)
 | |
| option is used, list in the form of tt(zle)
 | |
| commands to create the widgets.
 | |
| 
 | |
| When combined with the tt(-a) option, all widget names are listed,
 | |
| including the builtin ones. In this case the tt(-L) option is ignored.
 | |
| 
 | |
| If at least one var(string) is given, nothing will be printed but the
 | |
| return status will be zero if all var(string)s are names of existing
 | |
| widgets (or of user-defined widgets if the tt(-a) flag is not given)
 | |
| and non-zero if at least one var(string) is not a name of an defined
 | |
| widget.
 | |
| )
 | |
| item(tt(-D) var(widget) ...)(
 | |
| Delete the named var(widget)s.
 | |
| )
 | |
| item(tt(-A) var(old-widget) var(new-widget))(
 | |
| Make the var(new-widget) name an alias for var(old-widget), so that
 | |
| both names refer to the same widget.  The names have equal standing;
 | |
| if either is deleted, the other remains.  If there is already a widget
 | |
| with the var(new-widget) name, it is deleted.
 | |
| )
 | |
| item(tt(-N) var(widget) [ var(function) ])(
 | |
| Create a user-defined widget.  If there is already a widget with the
 | |
| specified name, it is overwritten.  When the new
 | |
| widget is invoked from within the editor, the specified shell var(function)
 | |
| is called.  If no function name is specified, it defaults to
 | |
| the same name as the widget.  For further information, see the section
 | |
| em(Widgets) in
 | |
| ifzman(zmanref(zshzle))\
 | |
| ifnzman(noderef(Zsh Line Editor))\
 | |
| .
 | |
| )
 | |
| citem(completion widgets, creating)
 | |
| item(tt(-C) var(widget) var(completion-widget) var(function))(
 | |
| Create a user-defined completion widget named var(widget). The 
 | |
| completion widget will behave like the built-in completion-widget
 | |
| whose name is given as var(completion-widget). To generate the
 | |
| completions, the shell function var(function) will be called.
 | |
| For further information, see
 | |
| ifzman(zmanref(zshcompwid))\
 | |
| ifnzman(noderef(Completion Widgets))\
 | |
| .
 | |
| )
 | |
| item(tt(-R) [ tt(-c) ] [ var(display-string) ] [ var(string) ... ])(
 | |
| Redisplay the command line; this is to be called from within a user-defined
 | |
| widget to allow changes to become visible.  If a var(display-string) is
 | |
| given and not empty, this is shown in the status line (immediately
 | |
| below the line being edited).
 | |
| 
 | |
| If the optional var(string)s are given they are listed below the
 | |
| prompt in the same way as completion lists are printed. If no
 | |
| var(string)s are given but the tt(-c) option is used such a list is
 | |
| cleared.
 | |
| )
 | |
| item(tt(-U) var(string))(
 | |
| This puts the characters in the var(string) in the input queue of
 | |
| ZLE. After the widget currently executed finishes ZLE will behave as
 | |
| if the characters in the var(string) were typed by the user.
 | |
| )
 | |
| item(var(widget) tt([ -n) var(num) tt(]) tt([ -N ]) var(args) ...)(
 | |
| Invoke the specified widget.  This can only be done when ZLE is
 | |
| active; normally this will be within a user-defined widget.
 | |
| 
 | |
| With the options tt(-n) and tt(-N), the current numerical argument will be
 | |
| saved and then restored after the call to tt(widget); `tt(-n) var(num)'
 | |
| sets the numerical argument temporarily to var(num), while `tt(-N)' sets it
 | |
| to the default, i.e. as if there were none.
 | |
| 
 | |
| Any further arguments will be passed to the widget.  If it is a shell
 | |
| function, these are passed down as positional parameters; for builtin
 | |
| widgets it is up to the widget in question what it does with them.
 | |
| Currently arguments are only handled by the incremental-search commands,
 | |
| the tt(history-search-forward) and tt(-backward) and the corresponding
 | |
| functions prefixed by tt(vi-), and by tt(universal-argument).  No error is
 | |
| flagged if the command does not use the arguments, or only uses some of
 | |
| them.
 | |
| 
 | |
| The return status reflects the success or failure of the operation carried
 | |
| out by the widget, or if it is a user-defined widget the return status of
 | |
| the shell function.  
 | |
| 
 | |
| A non-zero return status causes the shell to beep when the widget exits,
 | |
| unless the tt(BEEP) options was unset or the widget was called via the
 | |
| tt(zle) command.  Thus if a user defined widget requires an immediate beep,
 | |
| it should call the tt(beep) widget directly.
 | |
| )
 | |
| enditem()
 | |
| )
 | |
| enditem()
 |