zsh: Miscellaneous

Next: Text Objects, Previous: Completion, Up: Zle Widgets [Contents][Index]

#### 18.6.6 Miscellaneous

`accept-and-hold` (`ESC-A ESC-a`) (unbound) (unbound)

  Push the contents of the buffer on the buffer stack and execute it.

`accept-and-infer-next-history`

  Execute the contents of the buffer. Then search the history list for a line matching the current one and push the event following onto the buffer stack.

`accept-line` (`^J ^M`) (`^J ^M`) (`^J ^M`)

  Finish editing the buffer. Normally this causes the buffer to be executed as a shell command.

`accept-line-and-down-history` (`^O`) (unbound) (unbound)

  Execute the current line, and push the next history event on the buffer stack.

`auto-suffix-remove`

  If the previous action added a suffix (space, slash, etc.) to the word on the command line, remove it. Otherwise do nothing. Removing the suffix ends any active menu completion or menu selection.

  This widget is intended to be called from user-defined widgets to enforce a desired suffix-removal behavior.

`auto-suffix-retain`

  If the previous action added a suffix (space, slash, etc.) to the word on the command line, force it to be preserved. Otherwise do nothing. Retaining the suffix ends any active menu completion or menu selection.

  This widget is intended to be called from user-defined widgets to enforce a desired suffix-preservation behavior.

`beep`

  Beep, unless the `BEEP` option is unset.

`bracketed-paste`

  This widget is invoked when text is pasted to the terminal emulator. It is not intended to be bound to actual keys but instead to the special sequence generated by the terminal emulator when text is pasted. If a numeric argument is given, shell quoting will be applied to the pasted text before it is inserted. When called from a widget function, an argument can be given to specify a variable to which pasted text is assigned.

  See also the `zle_bracketed_paste` parameter.

`vi-cmd-mode` (`^X^V`) (unbound) (`^[`)

  Enter command mode; that is, select the ‘`vicmd`’ keymap. Yes, this is bound by default in emacs mode.

`vi-caps-lock-panic`

  Hang until any lowercase key is pressed. This is for vi users without the mental capacity to keep track of their caps lock key (like the author).

`clear-screen` (`^L ESC-^L`) (`^L`) (`^L`)

  Clear the screen and redraw the prompt.

`deactivate-region`

  Make the current region inactive. This disables vim-style visual selection mode if it is active.

`describe-key-briefly`

  Reads a key sequence, then prints the function bound to that sequence.

`exchange-point-and-mark` (`^X^X`) (unbound) (unbound)

  Exchange the cursor position (point) with the position of the mark. Unless a negative numeric argument is given, the region between point and mark is activated so that it can be highlighted. If a zero numeric argument is given, the region is activated but point and mark are not swapped.

`execute-named-cmd` (`ESC-x`) (`:`) (unbound)

  Read the name of an editor command and execute it. A restricted set of editing functions is available in the mini-buffer. Keys are looked up in the special `command` keymap, and if not found there in the main keymap. An interrupt signal, as defined by the stty setting, will abort the function. Note that the following always perform the same task within the `executed-named-cmd` environment and cannot be replaced by user defined widgets, nor can the set of functions be extended. The allowed functions are: `backward-delete-char`, `vi-backward-delete-char`, `clear-screen`, `redisplay`, `quoted-insert`, `vi-quoted-insert`, `backward-kill-word`, `vi-backward-kill-word`, `kill-whole-line`, `vi-kill-line`, `backward-kill-line`, `list-choices`, `delete-char-or-list`, `complete-word`, `accept-line`, `expand-or-complete` and `expand-or-complete-prefix`.

  `kill-region` kills the last word, and vi-cmd-mode is treated the same as accept-line. The space and tab characters, if not bound to one of these functions, will complete the name and then list the possibilities if the `AUTO_LIST` option is set. Any other character that is not bound to `self-insert` or `self-insert-unmeta` will beep and be ignored. The bindings of the current insert mode will be used.

  Currently this command may not be redefined or called by name.

`execute-last-named-cmd` (`ESC-z`) (unbound) (unbound)

  Redo the last function executed with `execute-named-cmd`.

  Currently this command may not be redefined or called by name.

`get-line` (`ESC-G ESC-g`) (unbound) (unbound)

  Pop the top line off the buffer stack and insert it at the cursor position.

`pound-insert` (unbound) (`#`) (unbound)

  If there is no # character at the beginning of the buffer, add one to the beginning of each line. If there is one, remove a # from each line that has one. In either case, accept the current line. The `INTERACTIVE_COMMENTS` option must be set for this to have any usefulness.

`vi-pound-insert`

  If there is no # character at the beginning of the current line, add one. If there is one, remove it. The `INTERACTIVE_COMMENTS` option must be set for this to have any usefulness.

`push-input`

  Push the entire current multiline construct onto the buffer stack and return to the top-level (`PS1`) prompt. If the current parser construct is only a single line, this is exactly like `push-line`. Next time the editor starts up or is popped with `get-line`, the construct will be popped off the top of the buffer stack and loaded into the editing buffer.

`push-line` (`^Q ESC-Q ESC-q`) (unbound) (unbound)

  Push the current buffer onto the buffer stack and clear the buffer. Next time the editor starts up, the buffer will be popped off the top of the buffer stack and loaded into the editing buffer.

`push-line-or-edit`

  At the top-level (`PS1`) prompt, equivalent to `push-line`. At a secondary (`PS2`) prompt, move the entire current multiline construct into the editor buffer. The latter is equivalent to `push-input` followed by `get-line`.

`read-command`

  Only useful from a user-defined widget. A keystroke is read just as in normal operation, but instead of the command being executed the name of the command that would be executed is stored in the shell parameter `REPLY`. This can be used as the argument of a future `zle` command. If the key sequence is not bound, status 1 is returned; typically, however, `REPLY` is set to `undefined-key` to indicate a useless key sequence.

`recursive-edit`

  Only useful from a user-defined widget. At this point in the function, the editor regains control until one of the standard widgets which would normally cause zle to exit (typically an `accept-line` caused by hitting the return key) is executed. Instead, control returns to the user-defined widget. The status returned is non-zero if the return was caused by an error, but the function still continues executing and hence may tidy up. This makes it safe for the user-defined widget to alter the command line or key bindings temporarily.

  The following widget, `caps-lock`, serves as an example.

      self-insert-ucase() {
        LBUFFER+=${(U)KEYS[-1]}
      }

      integer stat

      zle -N self-insert self-insert-ucase
      zle -A caps-lock save-caps-lock
      zle -A accept-line caps-lock

      zle recursive-edit
      stat=$?

      zle -A .self-insert self-insert
      zle -A save-caps-lock caps-lock
      zle -D save-caps-lock

      (( stat )) && zle send-break

      return $stat

  This causes typed letters to be inserted capitalised until either `accept-line` (i.e. typically the return key) is typed or the `caps-lock` widget is invoked again; the later is handled by saving the old definition of `caps-lock` as `save-caps-lock` and then rebinding it to invoke `accept-line`. Note that an error from the recursive edit is detected as a non-zero return status and propagated by using the `send-break` widget.

`redisplay` (unbound) (`^R`) (`^R`)

  Redisplays the edit buffer.

`reset-prompt` (unbound) (unbound) (unbound)

  Force the prompts on both the left and right of the screen to be re-expanded, then redisplay the edit buffer. This reflects changes both to the prompt variables themselves and changes in the expansion of the values (for example, changes in time or directory, or changes to the value of variables referred to by the prompt).

  Otherwise, the prompt is only expanded each time zle starts, and when the display as been interrupted by output from another part of the shell (such as a job notification) which causes the command line to be reprinted.

`send-break` (`^G ESC-^G`) (unbound) (unbound)

  Abort the current editor function, e.g. `execute-named-command`, or the editor itself, e.g. if you are in `vared`. Otherwise abort the parsing of the current line; in this case the aborted line is available in the shell variable `ZLE_LINE_ABORTED`. If the editor is aborted from within `vared`, the variable `ZLE_VARED_ABORTED` is set.

`run-help` (`ESC-H ESC-h`) (unbound) (unbound)

  Push the buffer onto the buffer stack, and execute the command ‘`run-help` cmd’, where cmd is the current command. `run-help` is normally aliased to `man`.

`vi-set-buffer` (unbound) (`"`) (unbound)

  Specify a buffer to be used in the following command. There are 37 buffers that can be specified: the 26 ‘named’ buffers `"a` to `"z`, the ‘yank’ buffer `"0`, the nine ‘queued’ buffers `"1` to `"9` and the ‘black hole’ buffer `"_`. The named buffers can also be specified as `"A` to `"Z`.

  When a buffer is specified for a cut, change or yank command, the text concerned replaces the previous contents of the specified buffer. If a named buffer is specified using a capital, the newly cut text is appended to the buffer instead of overwriting it. When using the `"_` buffer, nothing happens. This can be useful for deleting text without affecting the normal registers.

  If no buffer is specified for a cut or change command, `"1` is used, and the contents of `"1` to `"8` are each shifted along one buffer; the contents of `"9` is lost. If no buffer is specified for a yank command, `"0` is used. Finally, a paste command without a specified buffer will paste the text from the most recent command regardless of any buffer that might have been used with that command.

  When called from a widget function by the `zle` command, the buffer can optionally be specified with an argument. For example,

      zle vi-set-buffer A

`vi-set-mark` (unbound) (`m`) (unbound)

  Set the specified mark at the cursor position.

`set-mark-command` (`^@`) (unbound) (unbound)

  Set the mark at the cursor position. If called with a negative numeric argument, do not set the mark but deactivate the region so that it is no longer highlighted (it is still usable for other purposes). Otherwise the region is marked as active.

`spell-word` (`ESC-$ ESC-S ESC-s`) (unbound) (unbound)

  Attempt spelling correction on the current word.

`split-undo`

  Breaks the undo sequence at the current change. This is useful in vi mode as changes made in insert mode are coalesced on entering command mode. Similarly, `undo` will normally revert as one all the changes made by a user-defined widget.

`undefined-key`

  This command is executed when a key sequence that is not bound to any command is typed. By default it beeps.

`undo` (`^_ ^Xu ^X^U`) (`u`) (unbound)

  Incrementally undo the last text modification. When called from a user-defined widget, takes an optional argument indicating a previous state of the undo history as returned by the `UNDO_CHANGE_NO` variable; modifications are undone until that state is reached, subject to any limit imposed by the `UNDO_LIMIT_NO` variable.

  Note that when invoked from vi command mode, the full prior change made in insert mode is reverted, the changes having been merged when command mode was selected.

`redo` (unbound) (`^R`) (unbound)

  Incrementally redo undone text modifications.

`vi-undo-change` (unbound) (unbound) (unbound)

  Undo the last text modification. If repeated, redo the modification.

`visual-mode` (unbound) (`v`) (unbound)

  Toggle vim-style visual selection mode. If line-wise visual mode is currently enabled then it is changed to being character-wise. If used following an operator, it forces the subsequent movement command to be treated as a character-wise movement.

`visual-line-mode` (unbound) (`V`) (unbound)

  Toggle vim-style line-wise visual selection mode. If character-wise visual mode is currently enabled then it is changed to being line-wise. If used following an operator, it forces the subsequent movement command to be treated as a line-wise movement.

`what-cursor-position` (`^X=`) (`ga`) (unbound)

  Print the character under the cursor, its code as an octal, decimal and hexadecimal number, the current cursor position within the buffer and the column of the cursor in the current line.

`where-is`

  Read the name of an editor command and print the listing of key sequences that invoke the specified command. A restricted set of editing functions is available in the mini-buffer. Keys are looked up in the special `command` keymap, and if not found there in the main keymap.

`which-command` (`ESC-?`) (unbound) (unbound)

  Push the buffer onto the buffer stack, and execute the command ‘`which-command` cmd’. where cmd is the current command. `which-command` is normally aliased to `whence`.

`vi-digit-or-beginning-of-line` (unbound) (`0`) (unbound)

  If the last command executed was a digit as part of an argument, continue the argument. Otherwise, execute vi-beginning-of-line.

Next: Text Objects, Previous: Completion, Up: Zle Widgets [Contents][Index]