Mercurial > repos > rliterman > csp2
diff CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/share/man/man7/editline.7 @ 68:5028fdace37b
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 16:23:26 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/share/man/man7/editline.7 Tue Mar 18 16:23:26 2025 -0400 @@ -0,0 +1,1001 @@ +.TH EDITLINE 7 "April 6, 2024" "" +.SH NAME +\fBeditline\fP +\- line editing user interface +.SH DESCRIPTION +When a program using the +\fBeditline\fP(3) +library prompts for an input string using the function +\fBel_wgets\fP(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 +\fBel_set\fP(3) +or +\fBel_parse\fP(3) +functions, and the user can switch to emacs mode either in the +\fBeditrc\fP(5) +configuration file or interactively with the +\fBed-command\fP +editor command, in all three cases executing the +\fBbind Fl e\fP +builtin command. + +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 +\fBeditrc\fP(5) +\fBbind\fP +builtin command. + +In the following tables, +`Ctrl-' +indicates a character with the bit 0x40 flipped, and +`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 +\fBlocale\fP(1) +are bound to +\fBed-insert\fP +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 +\fBem-meta-next\fP +editor command. +For example, to enter +`Meta-B' +in order to call the +\fBed-prev-word\fP +editor command in emacs mode, call +\fBem-meta-next\fP +by pressing and releasing the escape key (or equivalently, Ctrl-[), +then press and release the +`B' +key. +If you have configured a Meta-key on your keyboard, for example +with +`setxkbmap' -option altwin:left_meta_win , +the Ctrl-Meta-characters are directly accessible. +For example, to enter +`Ctrl-Meta-H' +in order to call the +\fBed-delete-prev-word\fP +editor command in emacs mode, hold down the keys +`Ctrl', +`Meta', +and +`H' +at the same time. +Alternatively, press and release the escape key, then press and +release +`Ctrl-H'. + +In vi input mode, input characters are bound to the following editor +commands by default: +It Ctrl-D, EOF Ta \fBvi-list-or-eof\fP +It Ctrl-H, BS Ta \fBvi-delete-prev-char\fP +It Ctrl-J, LF Ta \fBed-newline\fP +It Ctrl-M, CR Ta \fBed-newline\fP +It Ctrl-Q Ta \fBed-tty-start-output\fP +It Ctrl-S Ta \fBed-tty-stop-output\fP +It Ctrl-U Ta \fBvi-kill-line-prev\fP +It Ctrl-V Ta \fBed-quoted-insert\fP +It Ctrl-W Ta \fBed-delete-prev-word\fP +It Ctrl-[, ESC Ta \fBvi-command-mode\fP +It Ctrl-\e, QUIT Ta \fBed-tty-sigquit\fP +It Ctrl-?, DEL Ta \fBvi-delete-prev-char\fP + +All other input characters except the NUL character (Ctrl-@) are +bound to +\fBed-insert\fP. + +In vi command mode, input characters are bound to the following +editor commands by default: +It Ctrl-A Ta \fBed-move-to-beg\fP +It Ctrl-C, INT Ta \fBed-tty-sigint\fP +It Ctrl-E Ta \fBed-move-to-end\fP +It Ctrl-H, BS Ta \fBed-delete-prev-char\fP +It Ctrl-J, LF Ta \fBed-newline\fP +It Ctrl-K Ta \fBed-kill-line\fP +It Ctrl-L, FF Ta \fBed-clear-screen\fP +It Ctrl-M, CR Ta \fBed-newline\fP +It Ctrl-N Ta \fBed-next-history\fP +It Ctrl-O Ta \fBed-tty-flush-output\fP +It Ctrl-P Ta \fBed-prev-history\fP +It Ctrl-Q Ta \fBed-tty-start-output\fP +It Ctrl-R Ta \fBed-redisplay\fP +It Ctrl-S Ta \fBed-tty-stop-output\fP +It Ctrl-U Ta \fBvi-kill-line-prev\fP +It Ctrl-W Ta \fBed-delete-prev-word\fP +It Ctrl-[, ESC Ta \fBem-meta-next\fP +It Ctrl-\e, QUIT Ta \fBed-tty-sigquit\fP +It Space Ta \fBed-next-char\fP +It # Ta \fBvi-comment-out\fP +It $ Ta \fBed-move-to-end\fP +It % Ta \fBvi-match\fP +It + Ta \fBed-next-history\fP +It \&, Ta \fBvi-repeat-prev-char\fP +It - Ta \fBed-prev-history\fP +It \&. Ta \fBvi-redo\fP +It / Ta \fBvi-search-prev\fP +It 0 Ta \fBvi-zero\fP +It 1 to 9 Ta \fBed-argument-digit\fP +It \&: Ta \fBed-command\fP +It \&; Ta \fBvi-repeat-next-char\fP +It \&? Ta \fBvi-search-next\fP +It @ Ta \fBvi-alias\fP +It A Ta \fBvi-add-at-eol\fP +It B Ta \fBvi-prev-big-word\fP +It C Ta \fBvi-change-to-eol\fP +It D Ta \fBed-kill-line\fP +It E Ta \fBvi-end-big-word\fP +It F Ta \fBvi-prev-char\fP +It G Ta \fBvi-to-history-line\fP +It I Ta \fBvi-insert-at-bol\fP +It J Ta \fBed-search-next-history\fP +It K Ta \fBed-search-prev-history\fP +It N Ta \fBvi-repeat-search-prev\fP +It O Ta \fBed-sequence-lead-in\fP +It P Ta \fBvi-paste-prev\fP +It R Ta \fBvi-replace-mode\fP +It S Ta \fBvi-substitute-line\fP +It T Ta \fBvi-to-prev-char\fP +It U Ta \fBvi-undo-line\fP +It W Ta \fBvi-next-big-word\fP +It X Ta \fBed-delete-prev-char\fP +It Y Ta \fBvi-yank-end\fP +It \&[ Ta \fBed-sequence-lead-in\fP +It ^ Ta \fBed-move-to-beg\fP +It _ Ta \fBvi-history-word\fP +It a Ta \fBvi-add\fP +It b Ta \fBvi-prev-word\fP +It c Ta \fBvi-change-meta\fP +It d Ta \fBvi-delete-meta\fP +It e Ta \fBvi-end-word\fP +It f Ta \fBvi-next-char\fP +It h Ta \fBed-prev-char\fP +It i Ta \fBvi-insert\fP +It j Ta \fBed-next-history\fP +It k Ta \fBed-prev-history\fP +It l Ta \fBed-next-char\fP +It n Ta \fBvi-repeat-search-next\fP +It p Ta \fBvi-paste-next\fP +It r Ta \fBvi-replace-char\fP +It s Ta \fBvi-substitute-char\fP +It t Ta \fBvi-to-next-char\fP +It u Ta \fBvi-undo\fP +It v Ta \fBvi-histedit\fP +It w Ta \fBvi-next-word\fP +It x Ta \fBed-delete-next-char\fP +It y Ta \fBvi-yank\fP +It \&| Ta \fBvi-to-column\fP +It ~ Ta \fBvi-change-case\fP +It Ctrl-?, DEL Ta \fBed-delete-prev-char\fP +It Meta-O Ta \fBed-sequence-lead-in\fP +It Meta-[ Ta \fBed-sequence-lead-in\fP + +In emacs mode, input characters are bound to the following editor +commands by default: +It 0 to 9 Ta \fBed-digit\fP +It Ctrl-@, NUL Ta \fBem-set-mark\fP +It Ctrl-A Ta \fBed-move-to-beg\fP +It Ctrl-B Ta \fBed-prev-char\fP +It Ctrl-C, INT Ta \fBed-tty-sigint\fP +It Ctrl-D, EOF Ta \fBem-delete-or-list\fP +It Ctrl-E Ta \fBed-move-to-end\fP +It Ctrl-F Ta \fBed-next-char\fP +It Ctrl-H, BS Ta \fBem-delete-prev-char\fP +It Ctrl-J, LF Ta \fBed-newline\fP +It Ctrl-K Ta \fBed-kill-line\fP +It Ctrl-L, FF Ta \fBed-clear-screen\fP +It Ctrl-M, CR Ta \fBed-newline\fP +It Ctrl-N Ta \fBed-next-history\fP +It Ctrl-O Ta \fBed-tty-flush-output\fP +It Ctrl-P Ta \fBed-prev-history\fP +It Ctrl-Q Ta \fBed-tty-start-output\fP +It Ctrl-R Ta \fBed-redisplay\fP +It Ctrl-S Ta \fBed-tty-stop-output\fP +It Ctrl-T Ta \fBed-transpose-chars\fP +It Ctrl-U Ta \fBed-kill-line\fP +It Ctrl-V Ta \fBed-quoted-insert\fP +It Ctrl-W Ta \fBem-kill-region\fP +It Ctrl-X Ta \fBed-sequence-lead-in\fP +It Ctrl-Y Ta \fBem-yank\fP +It Ctrl-Z, TSTP Ta \fBed-tty-sigtstp\fP +It Ctrl-[, ESC Ta \fBem-meta-next\fP +It Ctrl-\e, QUIT Ta \fBed-tty-sigquit\fP +It Ctrl-] Ta \fBed-tty-dsusp\fP +It Ctrl-?, DEL Ta \fBem-delete-prev-char\fP +It Ctrl-Meta-H Ta \fBed-delete-prev-word\fP +It Ctrl-Meta-L Ta \fBed-clear-screen\fP +It Ctrl-Meta-_ Ta \fBem-copy-prev-word\fP +It Meta-0 to 9 Ta \fBed-argument-digit\fP +It Meta-B Ta \fBed-prev-word\fP +It Meta-C Ta \fBem-capitol-case\fP +It Meta-D Ta \fBem-delete-next-word\fP +It Meta-F Ta \fBem-next-word\fP +It Meta-L Ta \fBem-lower-case\fP +It Meta-N Ta \fBed-search-next-history\fP +It Meta-O Ta \fBed-sequence-lead-in\fP +It Meta-P Ta \fBed-search-prev-history\fP +It Meta-U Ta \fBem-upper-case\fP +It Meta-W Ta \fBem-copy-region\fP +It Meta-X Ta \fBed-command\fP +It Meta-[ Ta \fBed-sequence-lead-in\fP +It Meta-b Ta \fBed-prev-word\fP +It Meta-c Ta \fBem-capitol-case\fP +It Meta-d Ta \fBem-delete-next-word\fP +It Meta-f Ta \fBem-next-word\fP +It Meta-l Ta \fBem-lower-case\fP +It Meta-n Ta \fBed-search-next-history\fP +It Meta-p Ta \fBed-search-prev-history\fP +It Meta-u Ta \fBem-upper-case\fP +It Meta-w Ta \fBem-copy-region\fP +It Meta-x Ta \fBed-command\fP +It Ctrl-Meta-? Ta \fBed-delete-prev-word\fP + +The remaining +\fBascii\fP(7) +characters in the range 0x20 to 0x7e are bound to +\fBed-insert\fP. + +If standard output is not connected to a terminal device +or +\fBel_set\fP(3) +was used to set +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 +\fBel_set\fP(3) +was used to set +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 +\fBed-argument-digit\fP, +\fBed-digit\fP, +\fBem-universal-argument\fP, +or +\fBvi-zero\fP. +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. + +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. + +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. + +In the following list, the default key bindings are listed after +each editor command. +.TP +\fBed-argument-digit Pq vi command: 1 to 9; emacs: Meta-0 to Meta-9\fP +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. +.TP +\fBed-clear-screen Pq vi command: Ctrl-L; emacs: Ctrl-L, Ctrl-Meta-L\fP +Clear the screen and display the edit buffer at the top. +Ignore any argument. +.TP +\fBed-command Pq vi command: So \&: Sc ; emacs: Meta-X, Meta-x\fP +Read a line from the terminal bypassing the normal line editing +functionality and execute that line as an +\fBeditrc\fP(5) +builtin command. +If in vi command mode, also switch back to vi insert mode. +Ignore any argument. +.TP +\fBed-delete-next-char Pq vi command: x\fP +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. +.TP +\fBed-delete-prev-char Pq vi command: X, Ctrl-H, BS, Ctrl-?, DEL\fP +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. +.TP +\fBed-delete-prev-word Pq vi: Ctrl-W; emacs: Ctrl-Meta-H, Ctrl-Meta-?\fP +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. +.TP +\fBed-digit Pq emacs: 0 to 9\fP +If in argument input mode, append the input digit to the argument +being read. +Otherwise, call +\fBed-insert\fP. +It is an error if the input character is not a digit or if the +existing argument is already greater than a million. +.TP +\fBed-end-of-file Pq not bound by default\fP +Discard the edit buffer and indicate end of file to the program. +Ignore any argument. +.TP +\fBed-ignore Pq various\fP +Discard the input character and do nothing. +.TP +\fBed-insert Pq vi input: almost all; emacs: printable characters\fP +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. +.TP +\fBed-kill-line Pq vi command: D, Ctrl-K; emacs: Ctrl-K, Ctrl-U\fP +Delete the string from the cursor position to the end of the line +and save it to the cut buffer. +Ignore any argument. +.TP +\fBed-move-to-beg Pq vi command: ^, Ctrl-A; emacs: Ctrl-A\fP +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 +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +.TP +\fBed-move-to-end Pq vi command: $, Ctrl-E; emacs: Ctrl-E\fP +Move the cursor to the end of the edit buffer. +Ignore any argument. +Can be used as a movement command after +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +.TP +\fBed-newline Pq all modes: Ctrl-J, LF, Ctrl-M, CR\fP +Append a newline character to the edit buffer and return the edit +buffer to the program. +Ignore any argument. +.TP +\fBed-next-char Pq vi command: Space, l; emacs: Ctrl-F\fP +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 +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +It is an error if the cursor is already at the end of the edit +buffer. +.TP +\fBed-next-history Pq vi command: j, +, Ctrl-N; emacs: Ctrl-N\fP +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. +.TP +\fBed-next-line Pq not bound by default\fP +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. +.TP +\fBed-prev-char Pq vi command: h; emacs: Ctrl-B\fP +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 +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +It is an error if the cursor is already at the beginning of the +edit buffer. +.TP +\fBed-prev-history Pq vi command: k, -, Ctrl-P; emacs: Ctrl-P\fP +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. +.TP +\fBed-prev-line Pq not bound by default\fP +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. +.TP +\fBed-prev-word Pq emacs: Meta-B, Meta-b\fP +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 +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +It is an error if the cursor is already at the beginning of the +edit buffer. +.TP +\fBed-quoted-insert Pq vi insert, emacs: Ctrl-V\fP +Read one character from the terminal bypassing the normal line +editing functionality and call +\fBed-insert\fP +on it. +If trying to read the character returns end of file or an error, +call +\fBed-end-of-file\fP +instead. +.TP +\fBed-redisplay Pq vi command, emacs: Ctrl-R\fP +Redisplay everything. +Ignore any argument. +.TP +\fBed-search-next-history Pq vi command: J; emacs: Meta-N, Meta-n\fP +Replace the edit buffer with the next matching history entry. +.TP +\fBed-search-prev-history Pq vi command: K; emacs: Meta-P, Meta-p\fP +Replace the edit buffer with the previous matching history entry. +.TP +\fBed-sequence-lead-in Pq vi cmd: O, \&[; emacs: Ctrl-X;\\fP + both: Meta-O, Meta-[ +Call a macro. +See the section about +.B Macros +below for details. +.TP +\fBed-start-over Pq not bound by default\fP +Discard the contents of the edit buffer and start from scratch. +Ignore any argument. +.TP +\fBed-transpose-chars Pq emacs: Ctrl-T\fP +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. +.TP +\fBed-unassigned Pq all characters not listed\fP +This editor command always results in an error. +.TP +\fBem-capitol-case Pq emacs: Meta-C, Meta-c\fP +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. +.TP +\fBem-copy-prev-word Pq emacs: Ctrl-Meta-_\fP +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. +.TP +\fBem-copy-region Pq emacs: Meta-W, Meta-w\fP +Copy the string from the cursor to the mark to the cut buffer. +It is an error if the mark is not set. +.TP +\fBem-delete-next-word Pq emacs: Meta-D, Meta-d\fP +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. +.TP +\fBem-delete-or-list Pq emacs: Ctrl-D, EOF\fP +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. +.TP +\fBem-delete-prev-char Pq emacs: Ctrl-H, BS, Ctrl-?, DEL\fP +Delete the character to the left of the cursor. +It is an error if the cursor is at the beginning of the edit buffer. +.TP +\fBem-exchange-mark Pq not bound by default\fP +Exchange the cursor and the mark. +.TP +\fBem-gosmacs-transpose Pq not bound by default\fP +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. +.TP +\fBem-inc-search-next Pq not bound by default\fP +Emacs incremental next search. +.TP +\fBem-inc-search-prev Pq not bound by default\fP +Emacs incremental reverse search. +.TP +\fBem-kill-line Pq not bound by default\fP +Delete the entire contents of the edit buffer and save it to the +cut buffer. +.TP +\fBem-kill-region Pq emacs: Ctrl-W\fP +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. +.TP +\fBem-lower-case Pq emacs: Meta-L, Meta-l\fP +Convert the characters from the cursor to the end of the current +word to lower case. +.TP +\fBem-meta-next Pq vi command, emacs: Ctrl-[, ESC\fP +Set the bit 0x80 on the next character typed. +Unless the resulting code point is printable, holding down the +`Meta-' +key while typing that character is a simpler way to achieve the +same effect. +.TP +\fBem-next-word Pq Meta-F, Meta-f\fP +Move the cursor to the end of the current word. +Can be used as a movement command after +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +It is an error if the cursor is already at the end of the edit +buffer. +.TP +\fBem-set-mark Pq emacs: Ctrl-Q, NUL\fP +Set the mark at the current cursor position. +.TP +\fBem-toggle-overwrite Pq insert\fP +Switch from insert to overwrite mode or vice versa. +.TP +\fBem-universal-argument Pq not bound by default\fP +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. +.TP +\fBem-upper-case Pq emacs: Meta-U, Meta-u\fP +Convert the characters from the cursor to the end of the current +word to upper case. +.TP +\fBem-yank Pq emacs: Ctrl-Y\fP +Paste the cut buffer to the left of the cursor. +.TP +\fBvi-add Pq vi command: a\fP +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. +.TP +\fBvi-add-at-eol Pq vi command: A\fP +Switch to vi insert mode and move the cursor to the end of the edit +buffer. +.TP +\fBvi-alias Pq vi command: @\fP +If an alias function was defined by calling the +\fBel_set\fP(3) +or +\fBel_wset\fP(3) +function with the argument +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 +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 +\fBel_wpush\fP(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. +.TP +\fBvi-change-case Pq vi command: ~\fP +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. +.TP +\fBvi-change-meta Pq vi command: c\fP +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. +.TP +\fBvi-change-to-eol Pq vi command: C\fP +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. +.TP +\fBvi-command-mode Pq vi insert: Ctrl-[, ESC\fP +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. +.TP +\fBvi-comment-out Pq vi command: #\fP +Insert a +`#' +character at the beginning of the edit buffer and return the edit +buffer to the program. +.TP +\fBvi-delete-meta Pq vi command: d\fP +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. +.TP +\fBvi-delete-prev-char Pq vi insert: Ctrl-H, BS, Ctrl-?, DEL\fP +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. +.TP +\fBvi-end-big-word Pq vi command: E\fP +Move the cursor to the end of the current space delimited word. +Can be used as a movement command after +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +It is an error if the cursor is already at the end of the edit +buffer. +.TP +\fBvi-end-word Pq vi command: e\fP +Move the cursor to the end of the current word. +Can be used as a movement command after +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +It is an error if the cursor is already at the end of the edit +buffer. +.TP +\fBvi-history-word Pq vi command: _\fP +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. +.TP +\fBvi-insert Pq vi command: i\fP +Enter insert mode. +.TP +\fBvi-insert-at-bol Pq vi command: I\fP +Move the cursor to the beginning of the edit buffer and switch to +vi insert mode. +.TP +\fBvi-kill-line-prev Pq vi: Ctrl-U\fP +Delete the string from the beginning of the edit buffer to the +cursor and save it to the cut buffer. +.TP +\fBvi-list-or-eof Pq vi insert: Ctrl-D, EOF\fP +If the edit buffer is empty, indicate end of file to the program. +It is an error if the edit buffer is not empty. +.TP +\fBvi-match Pq vi command: %\fP +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 +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +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. +.TP +\fBvi-next-big-word Pq vi command: W\fP +Move the cursor to the right to the beginning of the next space +delimited word. +Can be used as a movement command after +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +It is an error if the cursor is already at the end of the edit +buffer or on its last character. +.TP +\fBvi-next-char Pq vi command: f\fP +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 +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +If trying to read the character results in end of file or an error, +call +\fBed-end-of-file\fP +instead. +It is an error if the character is not found searching to the right +in the edit buffer. +.TP +\fBvi-next-word Pq vi command: w\fP +Move the cursor to the right to the beginning of the next word. +Can be used as a movement command after +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +It is an error if the cursor is already at the end of the edit +buffer or on its last character. +.TP +\fBvi-paste-next Pq vi command: p\fP +Insert a copy of the cut buffer to the right of the cursor. +It is an error if the cut buffer is empty. +.TP +\fBvi-paste-prev Pq vi command: P\fP +Insert a copy of the cut buffer to the left of the cursor. +It is an error if the cut buffer is empty. +.TP +\fBvi-prev-big-word Pq vi command: B\fP +Move the cursor to the left to the next beginning of a space delimited +word. +Can be used as a movement command after +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +It is an error if the cursor is already at the beginning of the +edit buffer. +.TP +\fBvi-prev-char Pq vi command: F\fP +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 +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +If trying to read the character results in end of file or an error, +call +\fBed-end-of-file\fP +instead. +It is an error if the character is not found searching to the left +in the edit buffer. +.TP +\fBvi-prev-word Pq vi command: b\fP +Move the cursor to the left to the next beginning of a word. +Can be used as a movement command after +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +It is an error if the cursor is already at the beginning of the +edit buffer. +.TP +\fBvi-redo Pq vi command: Sq \&.\fP +Redo the last non-motion command. +.TP +\fBvi-repeat-next-char Pq vi command: Sq \&;\fP +Repeat the most recent character search in the same search direction. +Can be used as a movement command after +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +.TP +\fBvi-repeat-prev-char Pq vi command: Sq \&,\fP +Repeat the most recent character search in the opposite search +direction. +Can be used as a movement command after +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +.TP +\fBvi-repeat-search-next Pq vi command: n\fP +Repeat the most recent history search in the same search direction. +.TP +\fBvi-repeat-search-prev Pq vi command: N\fP +Repeat the most recent history search in the opposite search +direction. +.TP +\fBvi-replace-char Pq vi command: r\fP +Switch to vi replace mode, and automatically switch back to vi +command mode after the next character typed. +See +\fBed-insert\fP +for a description of replace mode. +It is an error if the cursor is at the end of the edit buffer. +.TP +\fBvi-replace-mode Pq vi command: R\fP +Switch to vi replace mode. +This is a variant of vi insert mode; see +\fBed-insert\fP +for the difference. +.TP +\fBvi-search-next Pq vi command: \&?\fP +Replace the edit buffer with the next matching history entry. +.TP +\fBvi-search-prev Pq vi command: /\fP +Replace the edit buffer with the previous matching history entry. +.TP +\fBvi-substitute-char Pq vi command: s\fP +Delete the character at the cursor and switch to vi insert mode. +.TP +\fBvi-substitute-line Pq vi command: S\fP +Delete the entire contents of the edit buffer, save a copy of it +in the cut buffer, and enter vi insert mode. +.TP +\fBvi-to-column Pq vi command: \&|\fP +Move the cursor to the column specified as the argument. +Can be used as a movement command after +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +.TP +\fBvi-to-history-line Pq vi command: G\fP +Replace the edit buffer with the specified history entry. +.TP +\fBvi-to-next-char Pq vi command: t\fP +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 +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +If trying to read the character results in end of file or an error, +call +\fBed-end-of-file\fP +instead. +It is an error if the character is not found searching to the right +in the edit buffer. +.TP +\fBvi-to-prev-char Pq vi command: T\fP +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 +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +If trying to read the character results in end of file or an error, +call +\fBed-end-of-file\fP +instead. +It is an error if the character is not found searching to the left +in the edit buffer. +.TP +\fBvi-undo Pq vi command: u\fP +Undo the last change. +.TP +\fBvi-undo-line Pq vi command: U\fP +Undo all changes to the edit buffer. +.TP +\fBvi-yank Pq vi command: y\fP +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. +.TP +\fBvi-yank-end Pq vi command: Y\fP +Copy the string from the cursor to the end of the edit buffer to +the cut buffer. +.TP +\fBvi-zero Pq vi command: 0\fP +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 +\fBvi_change_meta\fP, +\fBvi_delete_meta\fP, +or +\fBvi_yank\fP. +.SS Macros +If an input character is bound to the editor command +\fBed-sequence-lead-in\fP, +\fBeditline\fP +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. + +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 +.B Input Queue . + +The following command macros are defined by default in vi command +mode and in emacs mode: +It Esc \&[ A, Esc O A Ta \fBed-prev-history\fP +It Esc \&[ B, Esc O B Ta \fBed-next-history\fP +It Esc \&[ C, Esc O C Ta \fBed-next-char\fP +It Esc \&[ D, Esc O D Ta \fBed-prev-char\fP +It Esc \&[ F, Esc O F Ta \fBed-move-to-end\fP +It Esc \&[ H, Esc O H Ta \fBed-move-to-beg\fP + +In vi command mode, they are also defined by default without the +initial escape character. + +In addition, the +\fBeditline\fP +library tries to bind the strings generated by the arrow keys +as reported by the +\fBterminfo\fP(5) +database to these editor commands, unless that would clobber +user settings. + +In emacs mode, the two-character string +``Ctrl-X Ctrl-X'' +is bound to the +\fBem-exchange-mark\fP +editor command. +.SS Input Queue +The +\fBeditline\fP +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. + +A line can be appended to the end of the input queue in several ways: +It +By calling one of the keyboard +.B Macros . +It +By calling the editor command +\fBvi-redo\fP. +It +By calling the editor command +\fBvi-alias\fP. +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 +\fBel_push\fP(3) +or +\fBel_wpush\fP(3), +it can provide additional, program-specific ways +of appending to the input queue. +.SH SEE ALSO +\fBmg\fP(1), +\fBvi\fP(1), +\fBeditline\fP(3), +\fBel_wgets\fP(3), +\fBel_wpush\fP(3), +\fBel_wset\fP(3), +\fBeditrc\fP(5) +.SH HISTORY +This manual page first appeared in +Ox 6.0 +and +Nx 8 . +.SH AUTHORS + +-nosplit +This manual page was written by + +Ingo Schwarze <Mt schwarze@openbsd.org .>