summary refs log tree commit diff
path: root/bin/1sh/libedit/editline.7
diff options
context:
space:
mode:
Diffstat (limited to 'bin/1sh/libedit/editline.7')
-rw-r--r--bin/1sh/libedit/editline.7935
1 files changed, 0 insertions, 935 deletions
diff --git a/bin/1sh/libedit/editline.7 b/bin/1sh/libedit/editline.7
deleted file mode 100644
index 863bab96..00000000
--- a/bin/1sh/libedit/editline.7
+++ /dev/null
@@ -1,935 +0,0 @@
-.\"	$NetBSD: editline.7,v 1.5 2016/05/09 21:27:55 christos Exp $
-.\"	$OpenBSD: editline.7,v 1.1 2016/04/20 01:11:45 schwarze Exp $
-.\"
-.\" Copyright (c) 2016 Ingo Schwarze <schwarze@openbsd.org>
-.\"
-.\" Permission to use, copy, modify, and distribute this software for any
-.\" purpose with or without fee is hereby granted, provided that the above
-.\" copyright notice and this permission notice appear in all copies.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-.\"
-.Dd May 7, 2016
-.Dt EDITLINE 7
-.Os
-.Sh NAME
-.Nm editline
-.Nd line editing user interface
-.Sh DESCRIPTION
-When a program using the
-.Xr editline 3
-library prompts for an input string using the function
-.Xr el_wgets 3 ,
-it reads characters from the terminal.
-Invalid input bytes that do not form characters are silently
-discarded.
-For each character read, one editor command is executed.
-The mapping of input characters to editor commands depends on the
-editing mode.
-There are three editing modes: vi insert mode, vi command mode,
-and emacs mode.
-The default is vi insert mode.
-The program can switch the default to emacs mode by using the
-.Xr el_set 3
-or
-.Xr el_parse 3
-functions, and the user can switch to emacs mode either in the
-.Xr editrc 5
-configuration file or interactively with the
-.Ic ed-command
-editor command, in all three cases executing the
-.Ic bind Fl e
-builtin command.
-.Pp
-If trying to read from the terminal results in end of file or an
-error, the library signals end of file to the program and does not
-return a string.
-.Ss Input character bindings
-All default bindings described below can be overridden by individual
-programs and can be changed with the
-.Xr editrc 5
-.Ic bind
-builtin command.
-.Pp
-In the following tables,
-.Sq Ctrl-
-indicates a character with the bit 0x40 flipped, and
-.Sq Meta-
-indicates a character with the bit 0x80 set.
-In vi insert mode and in emacs mode, all Meta-characters considered
-printable by the current
-.Xr locale 1
-are bound to
-.Ic ed-insert
-instead of to the editor command listed below.
-Consequently, in UTF-8 mode, most of the Meta-characters are not
-directly accessible because their code points are occupied by
-printable Unicode characters, and Meta-characters are usually input
-using the
-.Ic em-meta-next
-editor command.
-For example, to enter
-.Sq Meta-B
-in order to call the
-.Ic ed-prev-word
-editor command in emacs mode, call
-.Ic em-meta-next
-by pressing and releasing the escape key (or equivalently, Ctrl-[),
-then press and release the
-.Sq B
-key.
-If you have configured a Meta-key on your keyboard, for example
-with
-.Ql setxkbmap -option altwin:left_meta_win ,
-the Ctrl-Meta-characters are directly accessible.
-For example, to enter
-.Sq Ctrl-Meta-H
-in order to call the
-.Ic ed-delete-prev-word
-editor command in emacs mode, hold down the keys
-.Sq Ctrl ,
-.Sq Meta ,
-and
-.Sq H
-at the same time.
-Alternatively, press and release the escape key, then press and
-release
-.Sq Ctrl-H .
-.Pp
-In vi input mode, input characters are bound to the following editor
-commands by default:
-.Bl -column -offset indent "Ctrl-Z, TSTP" "ed-search-next-history"
-.It Ctrl-D, EOF Ta Ic vi-list-or-eof
-.It Ctrl-H, BS Ta Ic vi-delete-prev-char
-.It Ctrl-J, LF Ta Ic ed-newline
-.It Ctrl-M, CR Ta Ic ed-newline
-.It Ctrl-Q Ta Ic ed-tty-start-output
-.It Ctrl-S Ta Ic ed-tty-stop-output
-.It Ctrl-U Ta Ic vi-kill-line-prev
-.It Ctrl-V Ta Ic ed-quoted-insert
-.It Ctrl-W Ta Ic ed-delete-prev-word
-.It Ctrl-[, ESC Ta Ic vi-command-mode
-.It Ctrl-\e, QUIT Ta Ic ed-tty-sigquit
-.It Ctrl-?, DEL Ta Ic vi-delete-prev-char
-.El
-.Pp
-All other input characters except the NUL character (Ctrl-@) are
-bound to
-.Ic ed-insert .
-.Pp
-In vi command mode, input characters are bound to the following
-editor commands by default:
-.Bl -column -offset indent "Ctrl-Z, TSTP" "ed-search-next-history"
-.It Ctrl-A Ta Ic ed-move-to-beg
-.It Ctrl-C, INT Ta Ic ed-tty-sigint
-.It Ctrl-E Ta Ic ed-move-to-end
-.It Ctrl-H, BS Ta Ic ed-delete-prev-char
-.It Ctrl-J, LF Ta Ic ed-newline
-.It Ctrl-K Ta Ic ed-kill-line
-.It Ctrl-L, FF Ta Ic ed-clear-screen
-.It Ctrl-M, CR Ta Ic ed-newline
-.It Ctrl-N Ta Ic ed-next-history
-.It Ctrl-O Ta Ic ed-tty-flush-output
-.It Ctrl-P Ta Ic ed-prev-history
-.It Ctrl-Q Ta Ic ed-tty-start-output
-.It Ctrl-R Ta Ic ed-redisplay
-.It Ctrl-S Ta Ic ed-tty-stop-output
-.It Ctrl-U Ta Ic vi-kill-line-prev
-.It Ctrl-W Ta Ic ed-delete-prev-word
-.It Ctrl-[, ESC Ta Ic em-meta-next
-.It Ctrl-\e, QUIT Ta Ic ed-tty-sigquit
-.It Space Ta Ic ed-next-char
-.It # Ta Ic vi-comment-out
-.It $ Ta Ic ed-move-to-end
-.It % Ta Ic vi-match
-.It + Ta Ic ed-next-history
-.It \&, Ta Ic vi-repeat-prev-char
-.It - Ta Ic ed-prev-history
-.It \&. Ta Ic vi-redo
-.It / Ta Ic vi-search-prev
-.It 0 Ta Ic vi-zero
-.It 1 to 9 Ta Ic ed-argument-digit
-.It \&: Ta Ic ed-command
-.It \&; Ta Ic vi-repeat-next-char
-.It \&? Ta Ic vi-search-next
-.It @ Ta Ic vi-alias
-.It A Ta Ic vi-add-at-eol
-.It B Ta Ic vi-prev-big-word
-.It C Ta Ic vi-change-to-eol
-.It D Ta Ic ed-kill-line
-.It E Ta Ic vi-end-big-word
-.It F Ta Ic vi-prev-char
-.It G Ta Ic vi-to-history-line
-.It I Ta Ic vi-insert-at-bol
-.It J Ta Ic ed-search-next-history
-.It K Ta Ic ed-search-prev-history
-.It N Ta Ic vi-repeat-search-prev
-.It O Ta Ic ed-sequence-lead-in
-.It P Ta Ic vi-paste-prev
-.It R Ta Ic vi-replace-mode
-.It S Ta Ic vi-substitute-line
-.It T Ta Ic vi-to-prev-char
-.It U Ta Ic vi-undo-line
-.It W Ta Ic vi-next-big-word
-.It X Ta Ic ed-delete-prev-char
-.It Y Ta Ic vi-yank-end
-.It \&[ Ta Ic ed-sequence-lead-in
-.It ^ Ta Ic ed-move-to-beg
-.It _ Ta Ic vi-history-word
-.It a Ta Ic vi-add
-.It b Ta Ic vi-prev-word
-.It c Ta Ic vi-change-meta
-.It d Ta Ic vi-delete-meta
-.It e Ta Ic vi-end-word
-.It f Ta Ic vi-next-char
-.It h Ta Ic ed-prev-char
-.It i Ta Ic vi-insert
-.It j Ta Ic ed-next-history
-.It k Ta Ic ed-prev-history
-.It l Ta Ic ed-next-char
-.It n Ta Ic vi-repeat-search-next
-.It p Ta Ic vi-paste-next
-.It r Ta Ic vi-replace-char
-.It s Ta Ic vi-substitute-char
-.It t Ta Ic vi-to-next-char
-.It u Ta Ic vi-undo
-.It v Ta Ic vi-histedit
-.It w Ta Ic vi-next-word
-.It x Ta Ic ed-delete-next-char
-.It y Ta Ic vi-yank
-.It \&| Ta Ic vi-to-column
-.It ~ Ta Ic vi-change-case
-.It Ctrl-?, DEL Ta Ic ed-delete-prev-char
-.It Meta-O Ta Ic ed-sequence-lead-in
-.It Meta-[ Ta Ic ed-sequence-lead-in
-.El
-.Pp
-In emacs mode, input characters are bound to the following editor
-commands by default:
-.Bl -column -offset indent "Ctrl-Z, TSTP" "ed-search-next-history"
-.It 0 to 9 Ta Ic ed-digit
-.It Ctrl-@, NUL Ta Ic em-set-mark
-.It Ctrl-A Ta Ic ed-move-to-beg
-.It Ctrl-B Ta Ic ed-prev-char
-.It Ctrl-C, INT Ta Ic ed-tty-sigint
-.It Ctrl-D, EOF Ta Ic em-delete-or-list
-.It Ctrl-E Ta Ic ed-move-to-end
-.It Ctrl-F Ta Ic ed-next-char
-.It Ctrl-H, BS Ta Ic em-delete-prev-char
-.It Ctrl-J, LF Ta Ic ed-newline
-.It Ctrl-K Ta Ic ed-kill-line
-.It Ctrl-L, FF Ta Ic ed-clear-screen
-.It Ctrl-M, CR Ta Ic ed-newline
-.It Ctrl-N Ta Ic ed-next-history
-.It Ctrl-O Ta Ic ed-tty-flush-output
-.It Ctrl-P Ta Ic ed-prev-history
-.It Ctrl-Q Ta Ic ed-tty-start-output
-.It Ctrl-R Ta Ic ed-redisplay
-.It Ctrl-S Ta Ic ed-tty-stop-output
-.It Ctrl-T Ta Ic ed-transpose-chars
-.It Ctrl-U Ta Ic ed-kill-line
-.It Ctrl-V Ta Ic ed-quoted-insert
-.It Ctrl-W Ta Ic em-kill-region
-.It Ctrl-X Ta Ic ed-sequence-lead-in
-.It Ctrl-Y Ta Ic em-yank
-.It Ctrl-Z, TSTP Ta Ic ed-tty-sigtstp
-.It Ctrl-[, ESC Ta Ic em-meta-next
-.It Ctrl-\e, QUIT Ta Ic ed-tty-sigquit
-.It Ctrl-] Ta Ic ed-tty-dsusp
-.It Ctrl-?, DEL Ta Ic em-delete-prev-char
-.It Ctrl-Meta-H Ta Ic ed-delete-prev-word
-.It Ctrl-Meta-L Ta Ic ed-clear-screen
-.It Ctrl-Meta-_ Ta Ic em-copy-prev-word
-.It Meta-0 to 9 Ta Ic ed-argument-digit
-.It Meta-B Ta Ic ed-prev-word
-.It Meta-C Ta Ic em-capitol-case
-.It Meta-D Ta Ic em-delete-next-word
-.It Meta-F Ta Ic em-next-word
-.It Meta-L Ta Ic em-lower-case
-.It Meta-N Ta Ic ed-search-next-history
-.It Meta-O Ta Ic ed-sequence-lead-in
-.It Meta-P Ta Ic ed-search-prev-history
-.It Meta-U Ta Ic em-upper-case
-.It Meta-W Ta Ic em-copy-region
-.It Meta-X Ta Ic ed-command
-.It Meta-[ Ta Ic ed-sequence-lead-in
-.It Meta-b Ta Ic ed-prev-word
-.It Meta-c Ta Ic em-capitol-case
-.It Meta-d Ta Ic em-delete-next-word
-.It Meta-f Ta Ic em-next-word
-.It Meta-l Ta Ic em-lower-case
-.It Meta-n Ta Ic ed-search-next-history
-.It Meta-p Ta Ic ed-search-prev-history
-.It Meta-u Ta Ic em-upper-case
-.It Meta-w Ta Ic em-copy-region
-.It Meta-x Ta Ic ed-command
-.It Ctrl-Meta-? Ta Ic ed-delete-prev-word
-.El
-.Pp
-The remaining
-.Xr ascii 7
-characters in the range 0x20 to 0x7e are bound to
-.Ic ed-insert .
-.Pp
-If standard output is not connected to a terminal device
-or
-.Xr el_set 3
-was used to set
-.Dv EL_EDITMODE
-to 0, all input character bindings are disabled and all characters
-typed are appended to the edit buffer.
-In that case, the edit buffer is returned to the program after a
-newline or carriage return character is typed, or after the first
-character typed if
-.Xr el_set 3
-was used to set
-.Dv EL_UNBUFFERED
-to non-zero.
-.Ss Editor commands
-Most editor commands accept an optional argument.
-The argument is entered by prefixing the editor command with one
-or more of the editor commands
-.Ic ed-argument-digit ,
-.Ic ed-digit ,
-.Ic em-universal-argument ,
-or
-.Ic vi-zero .
-When an argument is not provided, it defaults to 1.
-For most editor commands, the effect of an argument is to repeatedly
-execute the command that number of times.
-.Pp
-When talking about a character string from a left character to a
-right character, the left character is included in the string, while
-the right character is not included.
-.Pp
-If an editor command causes an error, the input character is discarded,
-no action occurs, and the terminal bell is rung.
-In case of a non-fatal error, the terminal bell is also rung,
-but the editor command takes effect anyway.
-.Pp
-In the following list, the default key bindings are listed after
-each editor command.
-.Bl -tag -width 4n
-.It Ic ed-argument-digit Pq vi command: 1 to 9; emacs: Meta-0 to Meta-9
-If in argument input mode, append the input digit to the argument
-being read.
-Otherwise, switch to argument input mode and use the input digit
-as the most significant digit of the argument.
-It is an error if the input character is not a digit or if the
-existing argument is already greater than a million.
-.It Ic ed-clear-screen Pq vi command: Ctrl-L; emacs: Ctrl-L, Ctrl-Meta-L
-Clear the screen and display the edit buffer at the top.
-Ignore any argument.
-.It Ic ed-command Pq vi command: So \&: Sc ; emacs: Meta-X, Meta-x
-Read a line from the terminal bypassing the normal line editing
-functionality and execute that line as an
-.Xr editrc 5
-builtin command.
-If in vi command mode, also switch back to vi insert mode.
-Ignore any argument.
-.It Ic ed-delete-next-char Pq vi command: x
-Delete the character at the cursor position.
-With an argument, delete that number of characters.
-In emacs mode, it is an error if the cursor is at the end of the
-edit buffer.
-In vi mode, the last character in the edit buffer is deleted in
-that case, and it is an error if the buffer is empty.
-.It Ic ed-delete-prev-char Pq vi command: X, Ctrl-H, BS, Ctrl-?, DEL
-Delete the character to the left of the cursor position.
-With an argument, delete that number of characters.
-It is an error if the cursor is at the beginning of the edit buffer.
-.It Ic ed-delete-prev-word Pq vi: Ctrl-W; emacs: Ctrl-Meta-H, Ctrl-Meta-?
-Move to the left to the closest beginning of a word, delete the
-string from that position to the cursor, and save it to the cut
-buffer.
-With an argument, delete that number of words.
-It is an error if the cursor is at the beginning of the edit buffer.
-.It Ic ed-digit Pq emacs: 0 to 9
-If in argument input mode, append the input digit to the argument
-being read.
-Otherwise, call
-.Ic ed-insert .
-It is an error if the input character is not a digit or if the
-existing argument is already greater than a million.
-.It Ic ed-end-of-file Pq not bound by default
-Discard the edit buffer and indicate end of file to the program.
-Ignore any argument.
-.It Ic ed-ignore Pq various
-Discard the input character and do nothing.
-.It Ic ed-insert Pq vi input: almost all; emacs: printable characters
-In insert mode, insert the input character left of the cursor
-position.
-In replace mode, overwrite the character at the cursor and move the
-cursor to the right by one character position.
-Accept an argument to do this repeatedly.
-It is an error if the input character is the NUL character (Ctrl-@).
-Failure to enlarge the edit buffer also results in an error.
-.It Ic ed-kill-line Pq vi command: D, Ctrl-K; emacs: Ctrl-K, Ctrl-U
-Delete the string from the cursor position to the end of the line
-and save it to the cut buffer.
-Ignore any argument.
-.It Ic ed-move-to-beg Pq vi command: ^, Ctrl-A; emacs: Ctrl-A
-In vi mode, move the cursor to the first non-space character in the
-edit buffer.
-In emacs mode, move the cursor to the beginning of the edit buffer.
-Ignore any argument.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-.It Ic ed-move-to-end Pq vi command: $, Ctrl-E; emacs: Ctrl-E
-Move the cursor to the end of the edit buffer.
-Ignore any argument.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-.It Ic ed-newline Pq all modes: Ctrl-J, LF, Ctrl-M, CR
-Append a newline character to the edit buffer and return the edit
-buffer to the program.
-Ignore any argument.
-.It Ic ed-next-char Pq vi command: Space, l; emacs: Ctrl-F
-Move the cursor one character position to the right.
-With an argument, move by that number of characters.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-It is an error if the cursor is already at the end of the edit
-buffer.
-.It Ic ed-next-history Pq vi command: j, +, Ctrl-N; emacs: Ctrl-N
-Replace the edit buffer with the next history line.
-That line is older than the current line.
-With an argument, go forward by that number of history lines.
-It is a non-fatal error to advance by more lines than are available.
-.It Ic ed-next-line Pq not bound by default
-Move the cursor down one line.
-With an argument, move down by that number of lines.
-It is an error if the edit buffer does not contain enough newline
-characters to the right of the cursor position.
-.It Ic ed-prev-char Pq vi command: h; emacs: Ctrl-B
-Move the cursor one character position to the left.
-With an argument, move by that number of characters.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-It is an error if the cursor is already at the beginning of the
-edit buffer.
-.It Ic ed-prev-history Pq vi command: k, -, Ctrl-P; emacs: Ctrl-P
-Replace the edit buffer with the previous history line.
-That line is newer than the current line.
-With an argument, go back by that number of lines.
-It is a non-fatal error to back up by more lines than are available.
-.It Ic ed-prev-line Pq not bound by default
-Move the cursor up one line.
-With an argument, move up by that number of lines.
-It is an error if the edit buffer does not contain enough newline
-characters to the left of the cursor position.
-.It Ic ed-prev-word Pq emacs: Meta-B, Meta-b
-Move the cursor to the left to the closest beginning of a word.
-With an argument, repeat that number of times.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-It is an error if the cursor is already at the beginning of the
-edit buffer.
-.It Ic ed-quoted-insert Pq vi insert, emacs: Ctrl-V
-Read one character from the terminal bypassing the normal line
-editing functionality and call
-.Ic ed-insert
-on it.
-If trying to read the character returns end of file or an error,
-call
-.Ic ed-end-of-file
-instead.
-.It Ic ed-redisplay Pq vi command, emacs: Ctrl-R
-Redisplay everything.
-Ignore any argument.
-.It Ic ed-search-next-history Pq vi command: J; emacs: Meta-N, Meta-n
-Replace the edit buffer with the next matching history entry.
-.It Ic ed-search-prev-history Pq vi command: K; emacs: Meta-P, Meta-p
-Replace the edit buffer with the previous matching history entry.
-.It Ic ed-sequence-lead-in Pq vi cmd: O, \&[; emacs: Ctrl-X;\
- both: Meta-O, Meta-[
-Call a macro.
-See the section about
-.Sx Macros
-below for details.
-.It Ic ed-start-over Pq not bound by default
-Discard the contents of the edit buffer and start from scratch.
-Ignore any argument.
-.It Ic ed-transpose-chars Pq emacs: Ctrl-T
-Exchange the character at the cursor position with the one to the
-left of it and move the cursor to the character to the right of the
-two exchanged characters.
-Ignore any argument.
-It is an error if the cursor is at the beginning of the edit buffer
-or if the edit buffer contains less than two characters.
-.It Ic ed-unassigned Pq all characters not listed
-This editor command always results in an error.
-.It Ic em-capitol-case Pq emacs: Meta-C, Meta-c
-Capitalize the string from the cursor to the end of the current
-word.
-That is, if it contains at least one alphabetic character, convert
-the first alphabetic character to upper case, and convert all
-characters to the right of it to lower case.
-In any case, move the cursor to the next character after the end
-of the current word.
-.It Ic em-copy-prev-word Pq emacs: Ctrl-Meta-_
-Copy the string from the beginning of the current word to the cursor
-and insert it to the left of the cursor.
-Move the cursor to the character after the inserted string.
-It is an error if the cursor is at the beginning of the edit buffer.
-.It Ic em-copy-region Pq emacs: Meta-W, Meta-w
-Copy the string from the cursor to the mark to the cut buffer.
-It is an error if the mark is not set.
-.It Ic em-delete-next-word Pq emacs: Meta-D, Meta-d
-Delete the string from the cursor to the end of the current word
-and save it to the cut buffer.
-It is an error if the cursor is at the end of the edit buffer.
-.It Ic em-delete-or-list Pq emacs: Ctrl-D, EOF
-If the cursor is not at the end of the line, delete the character
-at the cursor.
-If the edit buffer is empty, indicate end of file to the program.
-It is an error if the cursor is at the end of the edit buffer and
-the edit buffer is not empty.
-.It Ic em-delete-prev-char Pq emacs: Ctrl-H, BS, Ctrl-?, DEL
-Delete the character to the left of the cursor.
-It is an error if the cursor is at the beginning of the edit buffer.
-.It Ic em-exchange-mark Pq not bound by default
-Exchange the cursor and the mark.
-.It Ic em-gosmacs-transpose Pq not bound by default
-Exchange the two characters to the left of the cursor.
-It is an error if the cursor is on the first or second character
-of the edit buffer.
-.It Ic em-inc-search-next Pq not bound by default
-Emacs incremental next search.
-.It Ic em-inc-search-prev Pq not bound by default
-Emacs incremental reverse search.
-.It Ic em-kill-line Pq not bound by default
-Delete the entire contents of the edit buffer and save it to the
-cut buffer.
-.It Ic em-kill-region Pq emacs: Ctrl-W
-Delete the string from the cursor to the mark and save it to the
-cut buffer.
-It is an error if the mark is not set.
-.It Ic em-lower-case Pq emacs: Meta-L, Meta-l
-Convert the characters from the cursor to the end of the current
-word to lower case.
-.It Ic em-meta-next Pq vi command, emacs: Ctrl-[, ESC
-Set the bit 0x80 on the next character typed.
-Unless the resulting code point is printable, holding down the
-.Sq Meta-
-key while typing that character is a simpler way to achieve the
-same effect.
-.It Ic em-next-word Pq Meta-F, Meta-f
-Move the cursor to the end of the current word.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-It is an error if the cursor is already at the end of the edit
-buffer.
-.It Ic em-set-mark Pq emacs: Ctrl-Q, NUL
-Set the mark at the current cursor position.
-.It Ic em-toggle-overwrite Pq not bound by default
-Switch from insert to overwrite mode or vice versa.
-.It Ic em-universal-argument Pq not bound by default
-If in argument input mode, multiply the argument by 4.
-Otherwise, switch to argument input mode and set the argument to 4.
-It is an error if the existing argument is already greater than a
-million.
-.It Ic em-upper-case Pq emacs: Meta-U, Meta-u
-Convert the characters from the cursor to the end of the current
-word to upper case.
-.It Ic em-yank Pq emacs: Ctrl-Y
-Paste the cut buffer to the left of the cursor.
-.It Ic vi-add Pq vi command: a
-Switch to vi insert mode.
-Unless the cursor is already at the end of the edit buffer, move
-it one character position to the right.
-.It Ic vi-add-at-eol Pq vi command: A
-Switch to vi insert mode and move the cursor to the end of the edit
-buffer.
-.It Ic vi-alias Pq vi command: @
-If an alias function was defined by calling the
-.Xr el_set 3
-or
-.Xr el_wset 3
-function with the argument
-.Dv EL_ALIAS_TEXT ,
-read one character from the terminal bypassing the normal line
-editing functionality, call the alias function passing the argument that was specified with
-.Dv EL_ALIAS_TEXT
-as the first argument and the character read, with an underscore
-prepended, as the second argument, and pass the string returned
-from the alias function to
-.Xr el_wpush 3 .
-It is an error if no alias function is defined or if trying to read
-the character results in end of file or an error.
-.It Ic vi-change-case Pq vi command: ~
-Change the case of the character at the cursor and move the cursor
-one character position to the right.
-It is an error if the cursor is already at the end of the edit
-buffer.
-.It Ic vi-change-meta Pq vi command: c
-Delete the string from the cursor to the position specified by the
-following movement command and save a copy of it to the cut buffer.
-When given twice in a row, instead delete the whole contents of the
-edit buffer and save a copy of it to the cut buffer.
-In either case, switch to vi insert mode after that.
-.It Ic vi-change-to-eol Pq vi command: C
-Delete the string from the cursor position to the end of the line
-and save it to the cut buffer, then switch to vi insert mode.
-.It Ic vi-command-mode Pq vi insert: Ctrl-[, ESC
-Discard pending actions and arguments and switch to vi command mode.
-Unless the cursor is already at the beginning of the edit buffer,
-move it to the left by one character position.
-.It Ic vi-comment-out Pq vi command: #
-Insert a
-.Sq #
-character at the beginning of the edit buffer and return the edit
-buffer to the program.
-.It Ic vi-delete-meta Pq vi command: d
-Delete the string from the cursor to the position specified by the
-following movement command and save a copy of it to the cut buffer.
-When given twice in a row, instead delete the whole contents of the
-edit buffer and save a copy of it to the cut buffer.
-.It Ic vi-delete-prev-char Pq vi insert: Ctrl-H, BS, Ctrl-?, DEL
-Delete the character to the left of the cursor.
-It is an error if the cursor is already at the beginning of the
-edit buffer.
-.It Ic vi-end-big-word Pq vi command: E
-Move the cursor to the end of the current space delimited word.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-It is an error if the cursor is already at the end of the edit
-buffer.
-.It Ic vi-end-word Pq vi command: e
-Move the cursor to the end of the current word.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-It is an error if the cursor is already at the end of the edit
-buffer.
-.It Ic vi-history-word Pq vi command: _
-Insert the first word from the most recent history entry after the
-cursor, move the cursor after to the character after the inserted
-word, and switch to vi insert mode.
-It is an error if there is no history entry or the most recent
-history entry is empty.
-.It Ic vi-insert Pq vi command: i
-Enter insert mode.
-.It Ic vi-insert-at-bol Pq vi command: I
-Move the cursor to the beginning of the edit buffer and switch to
-vi insert mode.
-.It Ic vi-kill-line-prev Pq vi: Ctrl-U
-Delete the string from the beginning of the edit buffer to the
-cursor and save it to the cut buffer.
-.It Ic vi-list-or-eof Pq vi insert: Ctrl-D, EOF
-If the edit buffer is empty, indicate end of file to the program.
-It is an error if the edit buffer is not empty.
-.It Ic vi-match Pq vi command: %
-Consider opening and closing parentheses, braces, and brackets as
-delimiters.
-If the cursor is not at a delimiter, move it to the right until it
-gets to one, then move it to the matching delimiter.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-It is an error if there is no delimiter at the cursor or in the
-string to the right of the cursor, or if the first such delimiter
-has no matching delimiter.
-.It Ic vi-next-big-word Pq vi command: W
-Move the cursor to the right to the beginning of the next space
-delimited word.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-It is an error if the cursor is already at the end of the edit
-buffer or on its last character.
-.It Ic vi-next-char Pq vi command: f
-Read one character from the terminal bypassing the normal line
-editing functionality and move the cursor to the right to the next
-instance of that character in the edit buffer.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-If trying to read the character results in end of file or an error,
-call
-.Ic ed-end-of-file
-instead.
-It is an error if the character is not found searching to the right
-in the edit buffer.
-.It Ic vi-next-word Pq vi command: w
-Move the cursor to the right to the beginning of the next word.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-It is an error if the cursor is already at the end of the edit
-buffer or on its last character.
-.It Ic vi-paste-next Pq vi command: p
-Insert a copy of the cut buffer to the right of the cursor.
-It is an error if the cut buffer is empty.
-.It Ic vi-paste-prev Pq vi command: P
-Insert a copy of the cut buffer to the left of the cursor.
-It is an error if the cut buffer is empty.
-.It Ic vi-prev-big-word Pq vi command: B
-Move the cursor to the left to the next beginning of a space delimited
-word.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-It is an error if the cursor is already at the beginning of the
-edit buffer.
-.It Ic vi-prev-char Pq vi command: F
-Read one character from the terminal bypassing the normal line
-editing functionality and move the cursor to the left to the next
-instance of that character in the edit buffer.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-If trying to read the character results in end of file or an error,
-call
-.Ic ed-end-of-file
-instead.
-It is an error if the character is not found searching to the left
-in the edit buffer.
-.It Ic vi-prev-word Pq vi command: b
-Move the cursor to the left to the next beginning of a word.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-It is an error if the cursor is already at the beginning of the
-edit buffer.
-.It Ic vi-redo Pq vi command: Sq \&.
-Redo the last non-motion command.
-.It Ic vi-repeat-next-char Pq vi command: Sq \&;
-Repeat the most recent character search in the same search direction.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-.It Ic vi-repeat-prev-char Pq vi command: Sq \&,
-Repeat the most recent character search in the opposite search
-direction.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-.It Ic vi-repeat-search-next Pq vi command: n
-Repeat the most recent history search in the same search direction.
-.It Ic vi-repeat-search-prev Pq vi command: N
-Repeat the most recent history search in the opposite search
-direction.
-.It Ic vi-replace-char Pq vi command: r
-Switch to vi replace mode, and automatically switch back to vi
-command mode after the next character typed.
-See
-.Ic ed-insert
-for a description of replace mode.
-It is an error if the cursor is at the end of the edit buffer.
-.It Ic vi-replace-mode Pq vi command: R
-Switch to vi replace mode.
-This is a variant of vi insert mode; see
-.Ic ed-insert
-for the difference.
-.It Ic vi-search-next Pq vi command: \&?
-Replace the edit buffer with the next matching history entry.
-.It Ic vi-search-prev Pq vi command: /
-Replace the edit buffer with the previous matching history entry.
-.It Ic vi-substitute-char Pq vi command: s
-Delete the character at the cursor and switch to vi insert mode.
-.It Ic vi-substitute-line Pq vi command: S
-Delete the entire contents of the edit buffer, save a copy of it
-in the cut buffer, and enter vi insert mode.
-.It Ic vi-to-column Pq vi command: \&|
-Move the cursor to the column specified as the argument.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-.It Ic vi-to-history-line Pq vi command: G
-Replace the edit buffer with the specified history entry.
-.It Ic vi-to-next-char Pq vi command: t
-Read one character from the terminal bypassing the normal line
-editing functionality and move the cursor to the right to the
-character before the next instance of that character in the edit
-buffer.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-If trying to read the character results in end of file or an error,
-call
-.Ic ed-end-of-file
-instead.
-It is an error if the character is not found searching to the right
-in the edit buffer.
-.It Ic vi-to-prev-char Pq vi command: T
-Read one character from the terminal bypassing the normal line
-editing functionality and move the cursor to the left to the character
-after the next instance of that character in the edit buffer.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-If trying to read the character results in end of file or an error,
-call
-.Ic ed-end-of-file
-instead.
-It is an error if the character is not found searching to the left
-in the edit buffer.
-.It Ic vi-undo Pq vi command: u
-Undo the last change.
-.It Ic vi-undo-line Pq vi command: U
-Undo all changes to the edit buffer.
-.It Ic vi-yank Pq vi command: y
-Copy the string from the cursor to the position specified by the
-following movement command to the cut buffer.
-When given twice in a row, instead copy the whole contents of the
-edit buffer to the cut buffer.
-.It Ic vi-yank-end Pq vi command: Y
-Copy the string from the cursor to the end of the edit buffer to
-the cut buffer.
-.It Ic vi-zero Pq vi command: 0
-If in argument input mode, multiply the argument by ten.
-Otherwise, move the cursor to the beginning of the edit buffer.
-Can be used as a movement command after
-.Ic vi_change_meta ,
-.Ic vi_delete_meta ,
-or
-.Ic vi_yank .
-.El
-.Ss Macros
-If an input character is bound to the editor command
-.Ic ed-sequence-lead-in ,
-.Nm
-attempts to call a macro.
-If the input character by itself forms the name of a macro, that
-macro is executed.
-Otherwise, additional input characters are read until the string
-read forms the name of a macro, in which case that macro is executed,
-or until the string read matches the beginning of none of the existing
-macro names, in which case the string including the final, mismatching
-character is discarded and the terminal bell is rung.
-.Pp
-There are two kinds of macros.
-Command macros execute a single editor command.
-Keyboard macros return a string of characters that is appended
-as a new line to the
-.Sx Input Queue .
-.Pp
-The following command macros are defined by default in vi command
-mode and in emacs mode:
-.Bl -column -offset indent "Esc O A, Esc O A" "em-exchange-mark"
-.It Esc \&[ A, Esc O A Ta Ic ed-prev-history
-.It Esc \&[ B, Esc O B Ta Ic ed-next-history
-.It Esc \&[ C, Esc O C Ta Ic ed-next-char
-.It Esc \&[ D, Esc O D Ta Ic ed-prev-char
-.It Esc \&[ F, Esc O F Ta Ic ed-move-to-end
-.It Esc \&[ H, Esc O H Ta Ic ed-move-to-beg
-.El
-.Pp
-In vi command mode, they are also defined by default without the
-initial escape character.
-.Pp
-In addition, the
-.Nm
-library tries to bind the strings generated by the arrow keys
-as reported by the
-.Xr terminfo 5
-database to these editor commands, unless that would clobber
-user settings.
-.Pp
-In emacs mode, the two-character string
-.Dq Ctrl-X Ctrl-X
-is bound to the
-.Ic em-exchange-mark
-editor command.
-.Ss Input Queue
-The
-.Nm
-library maintains an input queue operated in FIFO mode.
-Whenever it needs an input character, it takes the first character
-from the first line of the input queue.
-When the queue is empty, it reads from the terminal.
-.Pp
-A line can be appended to the end of the input queue in several ways:
-.Bl -dash -offset indent
-.It
-By calling one of the keyboard
-.Sx Macros .
-.It
-By calling the editor command
-.Ic vi-redo .
-.It
-By calling the editor command
-.Ic vi-alias .
-.It
-By pressing a key in emacs incremental search mode that doesn't
-have a special meaning in that mode but returns to normal emacs
-mode.
-.It
-If an application program directly calls the functions
-.Xr el_push 3
-or
-.Xr el_wpush 3 ,
-it can provide additional, program-specific ways
-of appending to the input queue.
-.El
-.Sh SEE ALSO
-.Xr mg 1 ,
-.Xr vi 1 ,
-.Xr editline 3 ,
-.Xr el_wgets 3 ,
-.Xr el_wpush 3 ,
-.Xr el_wset 3 ,
-.Xr editrc 5
-.Sh HISTORY
-This manual page first appeared in
-.Ox 6.0
-and
-.Nx 8 .
-.Sh AUTHORS
-.An -nosplit
-This manual page was written by
-.An Ingo Schwarze Aq Mt schwarze@openbsd.org .