zsh: History Control

Next: Modifying Text, Previous: Movement, Up: Zle Widgets [Contents][Index]

#### 18.6.2 History Control

`beginning-of-buffer-or-history` (`ESC-<`) (`gg`) (unbound)

  Move to the beginning of the buffer, or if already there, move to the first event in the history list.

`beginning-of-line-hist`

  Move to the beginning of the line. If already at the beginning of the buffer, move to the previous history line.

`beginning-of-history`

  Move to the first event in the history list.

`down-line-or-history` (`^N ESC-[B`) (`j`) (`ESC-[B`)

  Move down a line in the buffer, or if already at the bottom line, move to the next event in the history list.

`vi-down-line-or-history` (unbound) (`+`) (unbound)

  Move down a line in the buffer, or if already at the bottom line, move to the next event in the history list. Then move to the first non-blank character on the line.

`down-line-or-search`

  Move down a line in the buffer, or if already at the bottom line, search forward in the history for a line beginning with the first word in the buffer.

  If called from a function by the `zle` command with arguments, the first argument is taken as the string for which to search, rather than the first word in the buffer.

`down-history` (unbound) (`^N`) (unbound)

  Move to the next event in the history list.

`history-beginning-search-backward`

  Search backward in the history for a line beginning with the current line up to the cursor. This leaves the cursor in its original position.

`end-of-buffer-or-history` (`ESC->`) (unbound) (unbound)

  Move to the end of the buffer, or if already there, move to the last event in the history list.

`end-of-line-hist`

  Move to the end of the line. If already at the end of the buffer, move to the next history line.

`end-of-history`

  Move to the last event in the history list.

`vi-fetch-history` (unbound) (`G`) (unbound)

  Fetch the history line specified by the numeric argument. This defaults to the current history line (i.e. the one that isn’t history yet).

`history-incremental-search-backward` (`^R ^Xr`) (unbound) (unbound)

  Search backward incrementally for a specified string. The search is case-insensitive if the search string does not have uppercase letters and no numeric argument was given. The string may begin with ‘`^`’ to anchor the search to the beginning of the line. When called from a user-defined function returns the following statuses: 0, if the search succeeded; 1, if the search failed; 2, if the search term was a bad pattern; 3, if the search was aborted by the `send-break` command.

  A restricted set of editing functions is available in the mini-buffer. Keys are looked up in the special `isearch` keymap, and if not found there in the main keymap (note that by default the `isearch` keymap is empty). An interrupt signal, as defined by the stty setting, will stop the search and go back to the original line. An undefined key will have the same effect. Note that the following always perform the same task within incremental searches and cannot be replaced by user defined widgets, nor can the set of functions be extended. The supported functions are:

  `accept-and-hold`
  `accept-and-infer-next-history`
  `accept-line`
  `accept-line-and-down-history`

    Perform the usual function after exiting incremental search. The command line displayed is executed.

  `backward-delete-char`
  `vi-backward-delete-char`

    Back up one place in the search history. If the search has been repeated this does not immediately erase a character in the minibuffer.

  `accept-search`

    Exit incremental search, retaining the command line but performing no further action. Note that this function is not bound by default and has no effect outside incremental search.

  `backward-delete-word`
  `backward-kill-word`
  `vi-backward-kill-word`

    Back up one character in the minibuffer; if multiple searches have been performed since the character was inserted the search history is rewound to the point just before the character was entered. Hence this has the effect of repeating `backward-delete-char`.

  `clear-screen`

    Clear the screen, remaining in incremental search mode.

  `history-incremental-search-backward`

    Find the next occurrence of the contents of the mini-buffer. If the mini-buffer is empty, the most recent previously used search string is reinstated.

  `history-incremental-search-forward`

    Invert the sense of the search.

  `magic-space`

    Inserts a non-magical space.

  `quoted-insert`
  `vi-quoted-insert`

    Quote the character to insert into the minibuffer.

  `redisplay`

    Redisplay the command line, remaining in incremental search mode.

  `vi-cmd-mode`

    Select the ‘`vicmd`’ keymap; the ‘`main`’ keymap (insert mode) will be selected initially.

    In addition, the modifications that were made while in vi insert mode are merged to form a single undo event.

  `vi-repeat-search`
  `vi-rev-repeat-search`

    Repeat the search. The direction of the search is indicated in the mini-buffer.

  Any character that is not bound to one of the above functions, or `self-insert` or `self-insert-unmeta`, will cause the mode to be exited. The character is then looked up and executed in the keymap in effect at that point.

  When called from a widget function by the `zle` command, the incremental search commands can take a string argument. This will be treated as a string of keys, as for arguments to the `bindkey` command, and used as initial input for the command. Any characters in the string which are unused by the incremental search will be silently ignored. For example,

      zle history-incremental-search-backward forceps

  will search backwards for `forceps`, leaving the minibuffer containing the string ‘`forceps`’.

`history-incremental-search-forward` (`^S ^Xs`) (unbound) (unbound)

  Search forward incrementally for a specified string. The search is case-insensitive if the search string does not have uppercase letters and no numeric argument was given. The string may begin with ‘`^`’ to anchor the search to the beginning of the line. The functions available in the mini-buffer are the same as for `history-incremental-search-backward`.

`history-incremental-pattern-search-backward`
`history-incremental-pattern-search-forward`

  These widgets behave similarly to the corresponding widgets with no `-pattern`, but the search string typed by the user is treated as a pattern, respecting the current settings of the various options affecting pattern matching. See Filename Generation for a description of patterns. If no numeric argument was given lowercase letters in the search string may match uppercase letters in the history. The string may begin with ‘`^`’ to anchor the search to the beginning of the line.

  The prompt changes to indicate an invalid pattern; this may simply indicate the pattern is not yet complete.

  Note that only non-overlapping matches are reported, so an expression with wildcards may return fewer matches on a line than are visible by inspection.

`history-search-backward` (`ESC-P ESC-p`) (unbound) (unbound)

  Search backward in the history for a line beginning with the first word in the buffer.

  If called from a function by the `zle` command with arguments, the first argument is taken as the string for which to search, rather than the first word in the buffer.

`vi-history-search-backward` (unbound) (`/`) (unbound)

  Search backward in the history for a specified string. The string may begin with ‘`^`’ to anchor the search to the beginning of the line.

  A restricted set of editing functions is available in the mini-buffer. An interrupt signal, as defined by the stty setting, will stop the search. The functions available in the mini-buffer are: `accept-line`, `backward-delete-char`, `vi-backward-delete-char`, `backward-kill-word`, `vi-backward-kill-word`, `clear-screen`, `redisplay`, `quoted-insert` and `vi-quoted-insert`.

  `vi-cmd-mode` is treated the same as accept-line, and `magic-space` is treated as a space. Any other character that is not bound to self-insert or self-insert-unmeta will beep and be ignored. If the function is called from vi command mode, the bindings of the current insert mode will be used.

  If called from a function by the `zle` command with arguments, the first argument is taken as the string for which to search, rather than the first word in the buffer.

`history-search-forward` (`ESC-N ESC-n`) (unbound) (unbound)

  Search forward in the history for a line beginning with the first word in the buffer.

  If called from a function by the `zle` command with arguments, the first argument is taken as the string for which to search, rather than the first word in the buffer.

`vi-history-search-forward` (unbound) (`?`) (unbound)

  Search forward in the history for a specified string. The string may begin with ‘`^`’ to anchor the search to the beginning of the line. The functions available in the mini-buffer are the same as for `vi-history-search-backward`. Argument handling is also the same as for that command.

`infer-next-history` (`^X^N`) (unbound) (unbound)

  Search in the history list for a line matching the current one and fetch the event following it.

`insert-last-word` (`ESC-_ ESC-.`) (unbound) (unbound)

  Insert the last word from the previous history event at the cursor position. If a positive numeric argument is given, insert that word from the end of the previous history event. If the argument is zero or negative insert that word from the left (zero inserts the previous command word). Repeating this command replaces the word just inserted with the last word from the history event prior to the one just used; numeric arguments can be used in the same way to pick a word from that event.

  When called from a shell function invoked from a user-defined widget, the command can take one to three arguments. The first argument specifies a history offset which applies to successive calls to this widget: if it is -1, the default behaviour is used, while if it is 1, successive calls will move forwards through the history. The value 0 can be used to indicate that the history line examined by the previous execution of the command will be reexamined. Note that negative numbers should be preceded by a ‘`-``-`’ argument to avoid confusing them with options.

  If two arguments are given, the second specifies the word on the command line in normal array index notation (as a more natural alternative to the numeric argument). Hence 1 is the first word, and -1 (the default) is the last word.

  If a third argument is given, its value is ignored, but it is used to signify that the history offset is relative to the current history line, rather than the one remembered after the previous invocations of `insert-last-word`.

  For example, the default behaviour of the command corresponds to

      zle insert-last-word -- -1 -1

  while the command

      zle insert-last-word -- -1 1 -

  always copies the first word of the line in the history immediately before the line being edited. This has the side effect that later invocations of the widget will be relative to that line.

`vi-repeat-search` (unbound) (`n`) (unbound)

  Repeat the last vi history search.

`vi-rev-repeat-search` (unbound) (`N`) (unbound)

  Repeat the last vi history search, but in reverse.

`up-line-or-history` (`^P ESC-[A`) (`k`) (`ESC-[A`)

  Move up a line in the buffer, or if already at the top line, move to the previous event in the history list.

`vi-up-line-or-history` (unbound) (`-`) (unbound)

  Move up a line in the buffer, or if already at the top line, move to the previous event in the history list. Then move to the first non-blank character on the line.

`up-line-or-search`

  Move up a line in the buffer, or if already at the top line, search backward in the history for a line beginning with the first word in the buffer.

  If called from a function by the `zle` command with arguments, the first argument is taken as the string for which to search, rather than the first word in the buffer.

`up-history` (unbound) (`^P`) (unbound)

  Move to the previous event in the history list.

`history-beginning-search-forward`

  Search forward in the history for a line beginning with the current line up to the cursor. This leaves the cursor in its original position.

`set-local-history`

  By default, history movement commands visit the imported lines as well as the local lines. This widget lets you toggle this on and off, or set it with the numeric argument. Zero for both local and imported lines and nonzero for only local lines.

Next: Modifying Text, Previous: Movement, Up: Zle Widgets [Contents][Index]