Annotation of embedaddon/readline/doc/rluser.texi, revision 1.1.1.1
1.1 misho 1: @comment %**start of header (This is for running Texinfo on a region.)
2: @setfilename rluser.info
3: @comment %**end of header (This is for running Texinfo on a region.)
4:
5: @ignore
6: This file documents the end user interface to the GNU command line
7: editing features. It is to be an appendix to manuals for programs which
8: use these features. There is a document entitled "readline.texinfo"
9: which contains both end-user and programmer documentation for the
10: GNU Readline Library.
11:
12: Copyright (C) 1988--2014 Free Software Foundation, Inc.
13:
14: Authored by Brian Fox and Chet Ramey.
15:
16: Permission is granted to process this file through Tex and print the
17: results, provided the printed document carries copying permission notice
18: identical to this one except for the removal of this paragraph (this
19: paragraph not being relevant to the printed manual).
20:
21: Permission is granted to make and distribute verbatim copies of this manual
22: provided the copyright notice and this permission notice are preserved on
23: all copies.
24:
25: Permission is granted to copy and distribute modified versions of this
26: manual under the conditions for verbatim copying, provided also that the
27: GNU Copyright statement is available to the distributee, and provided that
28: the entire resulting derived work is distributed under the terms of a
29: permission notice identical to this one.
30:
31: Permission is granted to copy and distribute translations of this manual
32: into another language, under the above conditions for modified versions.
33: @end ignore
34:
35: @comment If you are including this manual as an appendix, then set the
36: @comment variable readline-appendix.
37:
38: @ifclear BashFeatures
39: @defcodeindex bt
40: @end ifclear
41:
42: @node Command Line Editing
43: @chapter Command Line Editing
44:
45: This chapter describes the basic features of the @sc{gnu}
46: command line editing interface.
47: @ifset BashFeatures
48: Command line editing is provided by the Readline library, which is
49: used by several different programs, including Bash.
50: Command line editing is enabled by default when using an interactive shell,
51: unless the @option{--noediting} option is supplied at shell invocation.
52: Line editing is also used when using the @option{-e} option to the
53: @code{read} builtin command (@pxref{Bash Builtins}).
54: By default, the line editing commands are similar to those of Emacs.
55: A vi-style line editing interface is also available.
56: Line editing can be enabled at any time using the @option{-o emacs} or
57: @option{-o vi} options to the @code{set} builtin command
58: (@pxref{The Set Builtin}), or disabled using the @option{+o emacs} or
59: @option{+o vi} options to @code{set}.
60: @end ifset
61:
62: @menu
63: * Introduction and Notation:: Notation used in this text.
64: * Readline Interaction:: The minimum set of commands for editing a line.
65: * Readline Init File:: Customizing Readline from a user's view.
66: * Bindable Readline Commands:: A description of most of the Readline commands
67: available for binding
68: * Readline vi Mode:: A short description of how to make Readline
69: behave like the vi editor.
70: @ifset BashFeatures
71: * Programmable Completion:: How to specify the possible completions for
72: a specific command.
73: * Programmable Completion Builtins:: Builtin commands to specify how to
74: complete arguments for a particular command.
75: * A Programmable Completion Example:: An example shell function for
76: generating possible completions.
77: @end ifset
78: @end menu
79:
80: @node Introduction and Notation
81: @section Introduction to Line Editing
82:
83: The following paragraphs describe the notation used to represent
84: keystrokes.
85:
86: The text @kbd{C-k} is read as `Control-K' and describes the character
87: produced when the @key{k} key is pressed while the Control key
88: is depressed.
89:
90: The text @kbd{M-k} is read as `Meta-K' and describes the character
91: produced when the Meta key (if you have one) is depressed, and the @key{k}
92: key is pressed.
93: The Meta key is labeled @key{ALT} on many keyboards.
94: On keyboards with two keys labeled @key{ALT} (usually to either side of
95: the space bar), the @key{ALT} on the left side is generally set to
96: work as a Meta key.
97: The @key{ALT} key on the right may also be configured to work as a
98: Meta key or may be configured as some other modifier, such as a
99: Compose key for typing accented characters.
100:
101: If you do not have a Meta or @key{ALT} key, or another key working as
102: a Meta key, the identical keystroke can be generated by typing @key{ESC}
103: @emph{first}, and then typing @key{k}.
104: Either process is known as @dfn{metafying} the @key{k} key.
105:
106: The text @kbd{M-C-k} is read as `Meta-Control-k' and describes the
107: character produced by @dfn{metafying} @kbd{C-k}.
108:
109: In addition, several keys have their own names. Specifically,
110: @key{DEL}, @key{ESC}, @key{LFD}, @key{SPC}, @key{RET}, and @key{TAB} all
111: stand for themselves when seen in this text, or in an init file
112: (@pxref{Readline Init File}).
113: If your keyboard lacks a @key{LFD} key, typing @key{C-j} will
114: produce the desired character.
115: The @key{RET} key may be labeled @key{Return} or @key{Enter} on
116: some keyboards.
117:
118: @node Readline Interaction
119: @section Readline Interaction
120: @cindex interaction, readline
121:
122: Often during an interactive session you type in a long line of text,
123: only to notice that the first word on the line is misspelled. The
124: Readline library gives you a set of commands for manipulating the text
125: as you type it in, allowing you to just fix your typo, and not forcing
126: you to retype the majority of the line. Using these editing commands,
127: you move the cursor to the place that needs correction, and delete or
128: insert the text of the corrections. Then, when you are satisfied with
129: the line, you simply press @key{RET}. You do not have to be at the
130: end of the line to press @key{RET}; the entire line is accepted
131: regardless of the location of the cursor within the line.
132:
133: @menu
134: * Readline Bare Essentials:: The least you need to know about Readline.
135: * Readline Movement Commands:: Moving about the input line.
136: * Readline Killing Commands:: How to delete text, and how to get it back!
137: * Readline Arguments:: Giving numeric arguments to commands.
138: * Searching:: Searching through previous lines.
139: @end menu
140:
141: @node Readline Bare Essentials
142: @subsection Readline Bare Essentials
143: @cindex notation, readline
144: @cindex command editing
145: @cindex editing command lines
146:
147: In order to enter characters into the line, simply type them. The typed
148: character appears where the cursor was, and then the cursor moves one
149: space to the right. If you mistype a character, you can use your
150: erase character to back up and delete the mistyped character.
151:
152: Sometimes you may mistype a character, and
153: not notice the error until you have typed several other characters. In
154: that case, you can type @kbd{C-b} to move the cursor to the left, and then
155: correct your mistake. Afterwards, you can move the cursor to the right
156: with @kbd{C-f}.
157:
158: When you add text in the middle of a line, you will notice that characters
159: to the right of the cursor are `pushed over' to make room for the text
160: that you have inserted. Likewise, when you delete text behind the cursor,
161: characters to the right of the cursor are `pulled back' to fill in the
162: blank space created by the removal of the text. A list of the bare
163: essentials for editing the text of an input line follows.
164:
165: @table @asis
166: @item @kbd{C-b}
167: Move back one character.
168: @item @kbd{C-f}
169: Move forward one character.
170: @item @key{DEL} or @key{Backspace}
171: Delete the character to the left of the cursor.
172: @item @kbd{C-d}
173: Delete the character underneath the cursor.
174: @item @w{Printing characters}
175: Insert the character into the line at the cursor.
176: @item @kbd{C-_} or @kbd{C-x C-u}
177: Undo the last editing command. You can undo all the way back to an
178: empty line.
179: @end table
180:
181: @noindent
182: (Depending on your configuration, the @key{Backspace} key be set to
183: delete the character to the left of the cursor and the @key{DEL} key set
184: to delete the character underneath the cursor, like @kbd{C-d}, rather
185: than the character to the left of the cursor.)
186:
187: @node Readline Movement Commands
188: @subsection Readline Movement Commands
189:
190:
191: The above table describes the most basic keystrokes that you need
192: in order to do editing of the input line. For your convenience, many
193: other commands have been added in addition to @kbd{C-b}, @kbd{C-f},
194: @kbd{C-d}, and @key{DEL}. Here are some commands for moving more rapidly
195: about the line.
196:
197: @table @kbd
198: @item C-a
199: Move to the start of the line.
200: @item C-e
201: Move to the end of the line.
202: @item M-f
203: Move forward a word, where a word is composed of letters and digits.
204: @item M-b
205: Move backward a word.
206: @item C-l
207: Clear the screen, reprinting the current line at the top.
208: @end table
209:
210: Notice how @kbd{C-f} moves forward a character, while @kbd{M-f} moves
211: forward a word. It is a loose convention that control keystrokes
212: operate on characters while meta keystrokes operate on words.
213:
214: @node Readline Killing Commands
215: @subsection Readline Killing Commands
216:
217: @cindex killing text
218: @cindex yanking text
219:
220: @dfn{Killing} text means to delete the text from the line, but to save
221: it away for later use, usually by @dfn{yanking} (re-inserting)
222: it back into the line.
223: (`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
224:
225: If the description for a command says that it `kills' text, then you can
226: be sure that you can get the text back in a different (or the same)
227: place later.
228:
229: When you use a kill command, the text is saved in a @dfn{kill-ring}.
230: Any number of consecutive kills save all of the killed text together, so
231: that when you yank it back, you get it all. The kill
232: ring is not line specific; the text that you killed on a previously
233: typed line is available to be yanked back later, when you are typing
234: another line.
235: @cindex kill ring
236:
237: Here is the list of commands for killing text.
238:
239: @table @kbd
240: @item C-k
241: Kill the text from the current cursor position to the end of the line.
242:
243: @item M-d
244: Kill from the cursor to the end of the current word, or, if between
245: words, to the end of the next word.
246: Word boundaries are the same as those used by @kbd{M-f}.
247:
248: @item M-@key{DEL}
249: Kill from the cursor the start of the current word, or, if between
250: words, to the start of the previous word.
251: Word boundaries are the same as those used by @kbd{M-b}.
252:
253: @item C-w
254: Kill from the cursor to the previous whitespace. This is different than
255: @kbd{M-@key{DEL}} because the word boundaries differ.
256:
257: @end table
258:
259: Here is how to @dfn{yank} the text back into the line. Yanking
260: means to copy the most-recently-killed text from the kill buffer.
261:
262: @table @kbd
263: @item C-y
264: Yank the most recently killed text back into the buffer at the cursor.
265:
266: @item M-y
267: Rotate the kill-ring, and yank the new top. You can only do this if
268: the prior command is @kbd{C-y} or @kbd{M-y}.
269: @end table
270:
271: @node Readline Arguments
272: @subsection Readline Arguments
273:
274: You can pass numeric arguments to Readline commands. Sometimes the
275: argument acts as a repeat count, other times it is the @i{sign} of the
276: argument that is significant. If you pass a negative argument to a
277: command which normally acts in a forward direction, that command will
278: act in a backward direction. For example, to kill text back to the
279: start of the line, you might type @samp{M-- C-k}.
280:
281: The general way to pass numeric arguments to a command is to type meta
282: digits before the command. If the first `digit' typed is a minus
283: sign (@samp{-}), then the sign of the argument will be negative. Once
284: you have typed one meta digit to get the argument started, you can type
285: the remainder of the digits, and then the command. For example, to give
286: the @kbd{C-d} command an argument of 10, you could type @samp{M-1 0 C-d},
287: which will delete the next ten characters on the input line.
288:
289: @node Searching
290: @subsection Searching for Commands in the History
291:
292: Readline provides commands for searching through the command history
293: @ifset BashFeatures
294: (@pxref{Bash History Facilities})
295: @end ifset
296: for lines containing a specified string.
297: There are two search modes: @dfn{incremental} and @dfn{non-incremental}.
298:
299: Incremental searches begin before the user has finished typing the
300: search string.
301: As each character of the search string is typed, Readline displays
302: the next entry from the history matching the string typed so far.
303: An incremental search requires only as many characters as needed to
304: find the desired history entry.
305: To search backward in the history for a particular string, type
306: @kbd{C-r}. Typing @kbd{C-s} searches forward through the history.
307: The characters present in the value of the @code{isearch-terminators} variable
308: are used to terminate an incremental search.
309: If that variable has not been assigned a value, the @key{ESC} and
310: @kbd{C-J} characters will terminate an incremental search.
311: @kbd{C-g} will abort an incremental search and restore the original line.
312: When the search is terminated, the history entry containing the
313: search string becomes the current line.
314:
315: To find other matching entries in the history list, type @kbd{C-r} or
316: @kbd{C-s} as appropriate.
317: This will search backward or forward in the history for the next
318: entry matching the search string typed so far.
319: Any other key sequence bound to a Readline command will terminate
320: the search and execute that command.
321: For instance, a @key{RET} will terminate the search and accept
322: the line, thereby executing the command from the history list.
323: A movement command will terminate the search, make the last line found
324: the current line, and begin editing.
325:
326: Readline remembers the last incremental search string. If two
327: @kbd{C-r}s are typed without any intervening characters defining a new
328: search string, any remembered search string is used.
329:
330: Non-incremental searches read the entire search string before starting
331: to search for matching history lines. The search string may be
332: typed by the user or be part of the contents of the current line.
333:
334: @node Readline Init File
335: @section Readline Init File
336: @cindex initialization file, readline
337:
338: Although the Readline library comes with a set of Emacs-like
339: keybindings installed by default, it is possible to use a different set
340: of keybindings.
341: Any user can customize programs that use Readline by putting
342: commands in an @dfn{inputrc} file, conventionally in his home directory.
343: The name of this
344: @ifset BashFeatures
345: file is taken from the value of the shell variable @env{INPUTRC}. If
346: @end ifset
347: @ifclear BashFeatures
348: file is taken from the value of the environment variable @env{INPUTRC}. If
349: @end ifclear
350: that variable is unset, the default is @file{~/.inputrc}. If that
351: file does not exist or cannot be read, the ultimate default is
352: @file{/etc/inputrc}.
353:
354: When a program which uses the Readline library starts up, the
355: init file is read, and the key bindings are set.
356:
357: In addition, the @code{C-x C-r} command re-reads this init file, thus
358: incorporating any changes that you might have made to it.
359:
360: @menu
361: * Readline Init File Syntax:: Syntax for the commands in the inputrc file.
362:
363: * Conditional Init Constructs:: Conditional key bindings in the inputrc file.
364:
365: * Sample Init File:: An example inputrc file.
366: @end menu
367:
368: @node Readline Init File Syntax
369: @subsection Readline Init File Syntax
370:
371: There are only a few basic constructs allowed in the
372: Readline init file. Blank lines are ignored.
373: Lines beginning with a @samp{#} are comments.
374: Lines beginning with a @samp{$} indicate conditional
375: constructs (@pxref{Conditional Init Constructs}). Other lines
376: denote variable settings and key bindings.
377:
378: @table @asis
379: @item Variable Settings
380: You can modify the run-time behavior of Readline by
381: altering the values of variables in Readline
382: using the @code{set} command within the init file.
383: The syntax is simple:
384:
385: @example
386: set @var{variable} @var{value}
387: @end example
388:
389: @noindent
390: Here, for example, is how to
391: change from the default Emacs-like key binding to use
392: @code{vi} line editing commands:
393:
394: @example
395: set editing-mode vi
396: @end example
397:
398: Variable names and values, where appropriate, are recognized without regard
399: to case. Unrecognized variable names are ignored.
400:
401: Boolean variables (those that can be set to on or off) are set to on if
402: the value is null or empty, @var{on} (case-insensitive), or 1. Any other
403: value results in the variable being set to off.
404:
405: @ifset BashFeatures
406: The @w{@code{bind -V}} command lists the current Readline variable names
407: and values. @xref{Bash Builtins}.
408: @end ifset
409:
410: A great deal of run-time behavior is changeable with the following
411: variables.
412:
413: @cindex variables, readline
414: @table @code
415:
416: @item bell-style
417: @vindex bell-style
418: Controls what happens when Readline wants to ring the terminal bell.
419: If set to @samp{none}, Readline never rings the bell. If set to
420: @samp{visible}, Readline uses a visible bell if one is available.
421: If set to @samp{audible} (the default), Readline attempts to ring
422: the terminal's bell.
423:
424: @item bind-tty-special-chars
425: @vindex bind-tty-special-chars
426: If set to @samp{on}, Readline attempts to bind the control characters
427: treated specially by the kernel's terminal driver to their Readline
428: equivalents.
429:
430: @item colored-stats
431: @vindex colored-stats
432: If set to @samp{on}, Readline displays possible completions using different
433: colors to indicate their file type.
434: The color definitions are taken from the value of the @env{LS_COLORS}
435: environment variable.
436: The default is @samp{off}.
437:
438: @item comment-begin
439: @vindex comment-begin
440: The string to insert at the beginning of the line when the
441: @code{insert-comment} command is executed. The default value
442: is @code{"#"}.
443:
444: @item completion-display-width
445: @vindex completion-display-width
446: The number of screen columns used to display possible matches
447: when performing completion.
448: The value is ignored if it is less than 0 or greater than the terminal
449: screen width.
450: A value of 0 will cause matches to be displayed one per line.
451: The default value is -1.
452:
453: @item completion-ignore-case
454: @vindex completion-ignore-case
455: If set to @samp{on}, Readline performs filename matching and completion
456: in a case-insensitive fashion.
457: The default value is @samp{off}.
458:
459: @item completion-map-case
460: @vindex completion-map-case
461: If set to @samp{on}, and @var{completion-ignore-case} is enabled, Readline
462: treats hyphens (@samp{-}) and underscores (@samp{_}) as equivalent when
463: performing case-insensitive filename matching and completion.
464:
465: @item completion-prefix-display-length
466: @vindex completion-prefix-display-length
467: The length in characters of the common prefix of a list of possible
468: completions that is displayed without modification. When set to a
469: value greater than zero, common prefixes longer than this value are
470: replaced with an ellipsis when displaying possible completions.
471:
472: @item completion-query-items
473: @vindex completion-query-items
474: The number of possible completions that determines when the user is
475: asked whether the list of possibilities should be displayed.
476: If the number of possible completions is greater than this value,
477: Readline will ask the user whether or not he wishes to view
478: them; otherwise, they are simply listed.
479: This variable must be set to an integer value greater than or equal to 0.
480: A negative value means Readline should never ask.
481: The default limit is @code{100}.
482:
483: @item convert-meta
484: @vindex convert-meta
485: If set to @samp{on}, Readline will convert characters with the
486: eighth bit set to an @sc{ascii} key sequence by stripping the eighth
487: bit and prefixing an @key{ESC} character, converting them to a
488: meta-prefixed key sequence. The default value is @samp{on}.
489:
490: @item disable-completion
491: @vindex disable-completion
492: If set to @samp{On}, Readline will inhibit word completion.
493: Completion characters will be inserted into the line as if they had
494: been mapped to @code{self-insert}. The default is @samp{off}.
495:
496: @item editing-mode
497: @vindex editing-mode
498: The @code{editing-mode} variable controls which default set of
499: key bindings is used. By default, Readline starts up in Emacs editing
500: mode, where the keystrokes are most similar to Emacs. This variable can be
501: set to either @samp{emacs} or @samp{vi}.
502:
503: @item echo-control-characters
504: When set to @samp{on}, on operating systems that indicate they support it,
505: readline echoes a character corresponding to a signal generated from the
506: keyboard. The default is @samp{on}.
507:
508: @item enable-keypad
509: @vindex enable-keypad
510: When set to @samp{on}, Readline will try to enable the application
511: keypad when it is called. Some systems need this to enable the
512: arrow keys. The default is @samp{off}.
513:
514: @item enable-meta-key
515: When set to @samp{on}, Readline will try to enable any meta modifier
516: key the terminal claims to support when it is called. On many terminals,
517: the meta key is used to send eight-bit characters.
518: The default is @samp{on}.
519:
520: @item expand-tilde
521: @vindex expand-tilde
522: If set to @samp{on}, tilde expansion is performed when Readline
523: attempts word completion. The default is @samp{off}.
524:
525: @item history-preserve-point
526: @vindex history-preserve-point
527: If set to @samp{on}, the history code attempts to place the point (the
528: current cursor position) at the
529: same location on each history line retrieved with @code{previous-history}
530: or @code{next-history}. The default is @samp{off}.
531:
532: @item history-size
533: @vindex history-size
534: Set the maximum number of history entries saved in the history list.
535: If set to zero, any existing history entries are deleted and no new entries
536: are saved.
537: If set to a value less than zero, the number of history entries is not
538: limited.
539: By default, the number of history entries is not limited.
540:
541: @item horizontal-scroll-mode
542: @vindex horizontal-scroll-mode
543: This variable can be set to either @samp{on} or @samp{off}. Setting it
544: to @samp{on} means that the text of the lines being edited will scroll
545: horizontally on a single screen line when they are longer than the width
546: of the screen, instead of wrapping onto a new screen line. By default,
547: this variable is set to @samp{off}.
548:
549: @item input-meta
550: @vindex input-meta
551: @vindex meta-flag
552: If set to @samp{on}, Readline will enable eight-bit input (it
553: will not clear the eighth bit in the characters it reads),
554: regardless of what the terminal claims it can support. The
555: default value is @samp{off}. The name @code{meta-flag} is a
556: synonym for this variable.
557:
558: @item isearch-terminators
559: @vindex isearch-terminators
560: The string of characters that should terminate an incremental search without
561: subsequently executing the character as a command (@pxref{Searching}).
562: If this variable has not been given a value, the characters @key{ESC} and
563: @kbd{C-J} will terminate an incremental search.
564:
565: @item keymap
566: @vindex keymap
567: Sets Readline's idea of the current keymap for key binding commands.
568: Acceptable @code{keymap} names are
569: @code{emacs},
570: @code{emacs-standard},
571: @code{emacs-meta},
572: @code{emacs-ctlx},
573: @code{vi},
574: @code{vi-move},
575: @code{vi-command}, and
576: @code{vi-insert}.
577: @code{vi} is equivalent to @code{vi-command}; @code{emacs} is
578: equivalent to @code{emacs-standard}. The default value is @code{emacs}.
579: The value of the @code{editing-mode} variable also affects the
580: default keymap.
581:
582: @item keyseq-timeout
583: Specifies the duration Readline will wait for a character when reading an
584: ambiguous key sequence (one that can form a complete key sequence using
585: the input read so far, or can take additional input to complete a longer
586: key sequence).
587: If no input is received within the timeout, Readline will use the shorter
588: but complete key sequence.
589: Readline uses this value to determine whether or not input is
590: available on the current input source (@code{rl_instream} by default).
591: The value is specified in milliseconds, so a value of 1000 means that
592: Readline will wait one second for additional input.
593: If this variable is set to a value less than or equal to zero, or to a
594: non-numeric value, Readline will wait until another key is pressed to
595: decide which key sequence to complete.
596: The default value is @code{500}.
597:
598: @item mark-directories
599: If set to @samp{on}, completed directory names have a slash
600: appended. The default is @samp{on}.
601:
602: @item mark-modified-lines
603: @vindex mark-modified-lines
604: This variable, when set to @samp{on}, causes Readline to display an
605: asterisk (@samp{*}) at the start of history lines which have been modified.
606: This variable is @samp{off} by default.
607:
608: @item mark-symlinked-directories
609: @vindex mark-symlinked-directories
610: If set to @samp{on}, completed names which are symbolic links
611: to directories have a slash appended (subject to the value of
612: @code{mark-directories}).
613: The default is @samp{off}.
614:
615: @item match-hidden-files
616: @vindex match-hidden-files
617: This variable, when set to @samp{on}, causes Readline to match files whose
618: names begin with a @samp{.} (hidden files) when performing filename
619: completion.
620: If set to @samp{off}, the leading @samp{.} must be
621: supplied by the user in the filename to be completed.
622: This variable is @samp{on} by default.
623:
624: @item menu-complete-display-prefix
625: @vindex menu-complete-display-prefix
626: If set to @samp{on}, menu completion displays the common prefix of the
627: list of possible completions (which may be empty) before cycling through
628: the list. The default is @samp{off}.
629:
630: @item output-meta
631: @vindex output-meta
632: If set to @samp{on}, Readline will display characters with the
633: eighth bit set directly rather than as a meta-prefixed escape
634: sequence. The default is @samp{off}.
635:
636: @item page-completions
637: @vindex page-completions
638: If set to @samp{on}, Readline uses an internal @code{more}-like pager
639: to display a screenful of possible completions at a time.
640: This variable is @samp{on} by default.
641:
642: @item print-completions-horizontally
643: If set to @samp{on}, Readline will display completions with matches
644: sorted horizontally in alphabetical order, rather than down the screen.
645: The default is @samp{off}.
646:
647: @item revert-all-at-newline
648: @vindex revert-all-at-newline
649: If set to @samp{on}, Readline will undo all changes to history lines
650: before returning when @code{accept-line} is executed. By default,
651: history lines may be modified and retain individual undo lists across
652: calls to @code{readline}. The default is @samp{off}.
653:
654: @item show-all-if-ambiguous
655: @vindex show-all-if-ambiguous
656: This alters the default behavior of the completion functions. If
657: set to @samp{on},
658: words which have more than one possible completion cause the
659: matches to be listed immediately instead of ringing the bell.
660: The default value is @samp{off}.
661:
662: @item show-all-if-unmodified
663: @vindex show-all-if-unmodified
664: This alters the default behavior of the completion functions in
665: a fashion similar to @var{show-all-if-ambiguous}.
666: If set to @samp{on},
667: words which have more than one possible completion without any
668: possible partial completion (the possible completions don't share
669: a common prefix) cause the matches to be listed immediately instead
670: of ringing the bell.
671: The default value is @samp{off}.
672:
673: @item show-mode-in-prompt
674: @vindex show-mode-in-prompt
675: If set to @samp{on}, add a character to the beginning of the prompt
676: indicating the editing mode: emacs (@samp{@@}), vi command (@samp{:}),
677: or vi insertion (@samp{+}).
678: The default value is @samp{off}.
679:
680: @item skip-completed-text
681: @vindex skip-completed-text
682: If set to @samp{on}, this alters the default completion behavior when
683: inserting a single match into the line. It's only active when
684: performing completion in the middle of a word. If enabled, readline
685: does not insert characters from the completion that match characters
686: after point in the word being completed, so portions of the word
687: following the cursor are not duplicated.
688: For instance, if this is enabled, attempting completion when the cursor
689: is after the @samp{e} in @samp{Makefile} will result in @samp{Makefile}
690: rather than @samp{Makefilefile}, assuming there is a single possible
691: completion.
692: The default value is @samp{off}.
693:
694: @item visible-stats
695: @vindex visible-stats
696: If set to @samp{on}, a character denoting a file's type
697: is appended to the filename when listing possible
698: completions. The default is @samp{off}.
699:
700: @end table
701:
702: @item Key Bindings
703: The syntax for controlling key bindings in the init file is
704: simple. First you need to find the name of the command that you
705: want to change. The following sections contain tables of the command
706: name, the default keybinding, if any, and a short description of what
707: the command does.
708:
709: Once you know the name of the command, simply place on a line
710: in the init file the name of the key
711: you wish to bind the command to, a colon, and then the name of the
712: command.
713: There can be no space between the key name and the colon -- that will be
714: interpreted as part of the key name.
715: The name of the key can be expressed in different ways, depending on
716: what you find most comfortable.
717:
718: In addition to command names, readline allows keys to be bound
719: to a string that is inserted when the key is pressed (a @var{macro}).
720:
721: @ifset BashFeatures
722: The @w{@code{bind -p}} command displays Readline function names and
723: bindings in a format that can put directly into an initialization file.
724: @xref{Bash Builtins}.
725: @end ifset
726:
727: @table @asis
728: @item @w{@var{keyname}: @var{function-name} or @var{macro}}
729: @var{keyname} is the name of a key spelled out in English. For example:
730: @example
731: Control-u: universal-argument
732: Meta-Rubout: backward-kill-word
733: Control-o: "> output"
734: @end example
735:
736: In the above example, @kbd{C-u} is bound to the function
737: @code{universal-argument},
738: @kbd{M-DEL} is bound to the function @code{backward-kill-word}, and
739: @kbd{C-o} is bound to run the macro
740: expressed on the right hand side (that is, to insert the text
741: @samp{> output} into the line).
742:
743: A number of symbolic character names are recognized while
744: processing this key binding syntax:
745: @var{DEL},
746: @var{ESC},
747: @var{ESCAPE},
748: @var{LFD},
749: @var{NEWLINE},
750: @var{RET},
751: @var{RETURN},
752: @var{RUBOUT},
753: @var{SPACE},
754: @var{SPC},
755: and
756: @var{TAB}.
757:
758: @item @w{"@var{keyseq}": @var{function-name} or @var{macro}}
759: @var{keyseq} differs from @var{keyname} above in that strings
760: denoting an entire key sequence can be specified, by placing
761: the key sequence in double quotes. Some @sc{gnu} Emacs style key
762: escapes can be used, as in the following example, but the
763: special character names are not recognized.
764:
765: @example
766: "\C-u": universal-argument
767: "\C-x\C-r": re-read-init-file
768: "\e[11~": "Function Key 1"
769: @end example
770:
771: In the above example, @kbd{C-u} is again bound to the function
772: @code{universal-argument} (just as it was in the first example),
773: @samp{@kbd{C-x} @kbd{C-r}} is bound to the function @code{re-read-init-file},
774: and @samp{@key{ESC} @key{[} @key{1} @key{1} @key{~}} is bound to insert
775: the text @samp{Function Key 1}.
776:
777: @end table
778:
779: The following @sc{gnu} Emacs style escape sequences are available when
780: specifying key sequences:
781:
782: @table @code
783: @item @kbd{\C-}
784: control prefix
785: @item @kbd{\M-}
786: meta prefix
787: @item @kbd{\e}
788: an escape character
789: @item @kbd{\\}
790: backslash
791: @item @kbd{\"}
792: @key{"}, a double quotation mark
793: @item @kbd{\'}
794: @key{'}, a single quote or apostrophe
795: @end table
796:
797: In addition to the @sc{gnu} Emacs style escape sequences, a second
798: set of backslash escapes is available:
799:
800: @table @code
801: @item \a
802: alert (bell)
803: @item \b
804: backspace
805: @item \d
806: delete
807: @item \f
808: form feed
809: @item \n
810: newline
811: @item \r
812: carriage return
813: @item \t
814: horizontal tab
815: @item \v
816: vertical tab
817: @item \@var{nnn}
818: the eight-bit character whose value is the octal value @var{nnn}
819: (one to three digits)
820: @item \x@var{HH}
821: the eight-bit character whose value is the hexadecimal value @var{HH}
822: (one or two hex digits)
823: @end table
824:
825: When entering the text of a macro, single or double quotes must
826: be used to indicate a macro definition.
827: Unquoted text is assumed to be a function name.
828: In the macro body, the backslash escapes described above are expanded.
829: Backslash will quote any other character in the macro text,
830: including @samp{"} and @samp{'}.
831: For example, the following binding will make @samp{@kbd{C-x} \}
832: insert a single @samp{\} into the line:
833: @example
834: "\C-x\\": "\\"
835: @end example
836:
837: @end table
838:
839: @node Conditional Init Constructs
840: @subsection Conditional Init Constructs
841:
842: Readline implements a facility similar in spirit to the conditional
843: compilation features of the C preprocessor which allows key
844: bindings and variable settings to be performed as the result
845: of tests. There are four parser directives used.
846:
847: @table @code
848: @item $if
849: The @code{$if} construct allows bindings to be made based on the
850: editing mode, the terminal being used, or the application using
851: Readline. The text of the test extends to the end of the line;
852: no characters are required to isolate it.
853:
854: @table @code
855: @item mode
856: The @code{mode=} form of the @code{$if} directive is used to test
857: whether Readline is in @code{emacs} or @code{vi} mode.
858: This may be used in conjunction
859: with the @samp{set keymap} command, for instance, to set bindings in
860: the @code{emacs-standard} and @code{emacs-ctlx} keymaps only if
861: Readline is starting out in @code{emacs} mode.
862:
863: @item term
864: The @code{term=} form may be used to include terminal-specific
865: key bindings, perhaps to bind the key sequences output by the
866: terminal's function keys. The word on the right side of the
867: @samp{=} is tested against both the full name of the terminal and
868: the portion of the terminal name before the first @samp{-}. This
869: allows @code{sun} to match both @code{sun} and @code{sun-cmd},
870: for instance.
871:
872: @item application
873: The @var{application} construct is used to include
874: application-specific settings. Each program using the Readline
875: library sets the @var{application name}, and you can test for
876: a particular value.
877: This could be used to bind key sequences to functions useful for
878: a specific program. For instance, the following command adds a
879: key sequence that quotes the current or previous word in Bash:
880: @example
881: $if Bash
882: # Quote the current or previous word
883: "\C-xq": "\eb\"\ef\""
884: $endif
885: @end example
886: @end table
887:
888: @item $endif
889: This command, as seen in the previous example, terminates an
890: @code{$if} command.
891:
892: @item $else
893: Commands in this branch of the @code{$if} directive are executed if
894: the test fails.
895:
896: @item $include
897: This directive takes a single filename as an argument and reads commands
898: and bindings from that file.
899: For example, the following directive reads from @file{/etc/inputrc}:
900: @example
901: $include /etc/inputrc
902: @end example
903: @end table
904:
905: @node Sample Init File
906: @subsection Sample Init File
907:
908: Here is an example of an @var{inputrc} file. This illustrates key
909: binding, variable assignment, and conditional syntax.
910:
911: @example
912: @page
913: # This file controls the behaviour of line input editing for
914: # programs that use the GNU Readline library. Existing
915: # programs include FTP, Bash, and GDB.
916: #
917: # You can re-read the inputrc file with C-x C-r.
918: # Lines beginning with '#' are comments.
919: #
920: # First, include any system-wide bindings and variable
921: # assignments from /etc/Inputrc
922: $include /etc/Inputrc
923:
924: #
925: # Set various bindings for emacs mode.
926:
927: set editing-mode emacs
928:
929: $if mode=emacs
930:
931: Meta-Control-h: backward-kill-word Text after the function name is ignored
932:
933: #
934: # Arrow keys in keypad mode
935: #
936: #"\M-OD": backward-char
937: #"\M-OC": forward-char
938: #"\M-OA": previous-history
939: #"\M-OB": next-history
940: #
941: # Arrow keys in ANSI mode
942: #
943: "\M-[D": backward-char
944: "\M-[C": forward-char
945: "\M-[A": previous-history
946: "\M-[B": next-history
947: #
948: # Arrow keys in 8 bit keypad mode
949: #
950: #"\M-\C-OD": backward-char
951: #"\M-\C-OC": forward-char
952: #"\M-\C-OA": previous-history
953: #"\M-\C-OB": next-history
954: #
955: # Arrow keys in 8 bit ANSI mode
956: #
957: #"\M-\C-[D": backward-char
958: #"\M-\C-[C": forward-char
959: #"\M-\C-[A": previous-history
960: #"\M-\C-[B": next-history
961:
962: C-q: quoted-insert
963:
964: $endif
965:
966: # An old-style binding. This happens to be the default.
967: TAB: complete
968:
969: # Macros that are convenient for shell interaction
970: $if Bash
971: # edit the path
972: "\C-xp": "PATH=$@{PATH@}\e\C-e\C-a\ef\C-f"
973: # prepare to type a quoted word --
974: # insert open and close double quotes
975: # and move to just after the open quote
976: "\C-x\"": "\"\"\C-b"
977: # insert a backslash (testing backslash escapes
978: # in sequences and macros)
979: "\C-x\\": "\\"
980: # Quote the current or previous word
981: "\C-xq": "\eb\"\ef\""
982: # Add a binding to refresh the line, which is unbound
983: "\C-xr": redraw-current-line
984: # Edit variable on current line.
985: "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
986: $endif
987:
988: # use a visible bell if one is available
989: set bell-style visible
990:
991: # don't strip characters to 7 bits when reading
992: set input-meta on
993:
994: # allow iso-latin1 characters to be inserted rather
995: # than converted to prefix-meta sequences
996: set convert-meta off
997:
998: # display characters with the eighth bit set directly
999: # rather than as meta-prefixed characters
1000: set output-meta on
1001:
1002: # if there are more than 150 possible completions for
1003: # a word, ask the user if he wants to see all of them
1004: set completion-query-items 150
1005:
1006: # For FTP
1007: $if Ftp
1008: "\C-xg": "get \M-?"
1009: "\C-xt": "put \M-?"
1010: "\M-.": yank-last-arg
1011: $endif
1012: @end example
1013:
1014: @node Bindable Readline Commands
1015: @section Bindable Readline Commands
1016:
1017: @menu
1018: * Commands For Moving:: Moving about the line.
1019: * Commands For History:: Getting at previous lines.
1020: * Commands For Text:: Commands for changing text.
1021: * Commands For Killing:: Commands for killing and yanking.
1022: * Numeric Arguments:: Specifying numeric arguments, repeat counts.
1023: * Commands For Completion:: Getting Readline to do the typing for you.
1024: * Keyboard Macros:: Saving and re-executing typed characters
1025: * Miscellaneous Commands:: Other miscellaneous commands.
1026: @end menu
1027:
1028: This section describes Readline commands that may be bound to key
1029: sequences.
1030: @ifset BashFeatures
1031: You can list your key bindings by executing
1032: @w{@code{bind -P}} or, for a more terse format, suitable for an
1033: @var{inputrc} file, @w{@code{bind -p}}. (@xref{Bash Builtins}.)
1034: @end ifset
1035: Command names without an accompanying key sequence are unbound by default.
1036:
1037: In the following descriptions, @dfn{point} refers to the current cursor
1038: position, and @dfn{mark} refers to a cursor position saved by the
1039: @code{set-mark} command.
1040: The text between the point and mark is referred to as the @dfn{region}.
1041:
1042: @node Commands For Moving
1043: @subsection Commands For Moving
1044: @ftable @code
1045: @item beginning-of-line (C-a)
1046: Move to the start of the current line.
1047:
1048: @item end-of-line (C-e)
1049: Move to the end of the line.
1050:
1051: @item forward-char (C-f)
1052: Move forward a character.
1053:
1054: @item backward-char (C-b)
1055: Move back a character.
1056:
1057: @item forward-word (M-f)
1058: Move forward to the end of the next word.
1059: Words are composed of letters and digits.
1060:
1061: @item backward-word (M-b)
1062: Move back to the start of the current or previous word.
1063: Words are composed of letters and digits.
1064:
1065: @ifset BashFeatures
1066: @item shell-forward-word ()
1067: Move forward to the end of the next word.
1068: Words are delimited by non-quoted shell metacharacters.
1069:
1070: @item shell-backward-word ()
1071: Move back to the start of the current or previous word.
1072: Words are delimited by non-quoted shell metacharacters.
1073: @end ifset
1074:
1075: @item clear-screen (C-l)
1076: Clear the screen and redraw the current line,
1077: leaving the current line at the top of the screen.
1078:
1079: @item redraw-current-line ()
1080: Refresh the current line. By default, this is unbound.
1081:
1082: @end ftable
1083:
1084: @node Commands For History
1085: @subsection Commands For Manipulating The History
1086:
1087: @ftable @code
1088: @item accept-line (Newline or Return)
1089: @ifset BashFeatures
1090: Accept the line regardless of where the cursor is.
1091: If this line is
1092: non-empty, add it to the history list according to the setting of
1093: the @env{HISTCONTROL} and @env{HISTIGNORE} variables.
1094: If this line is a modified history line, then restore the history line
1095: to its original state.
1096: @end ifset
1097: @ifclear BashFeatures
1098: Accept the line regardless of where the cursor is.
1099: If this line is
1100: non-empty, it may be added to the history list for future recall with
1101: @code{add_history()}.
1102: If this line is a modified history line, the history line is restored
1103: to its original state.
1104: @end ifclear
1105:
1106: @item previous-history (C-p)
1107: Move `back' through the history list, fetching the previous command.
1108:
1109: @item next-history (C-n)
1110: Move `forward' through the history list, fetching the next command.
1111:
1112: @item beginning-of-history (M-<)
1113: Move to the first line in the history.
1114:
1115: @item end-of-history (M->)
1116: Move to the end of the input history, i.e., the line currently
1117: being entered.
1118:
1119: @item reverse-search-history (C-r)
1120: Search backward starting at the current line and moving `up' through
1121: the history as necessary. This is an incremental search.
1122:
1123: @item forward-search-history (C-s)
1124: Search forward starting at the current line and moving `down' through
1125: the the history as necessary. This is an incremental search.
1126:
1127: @item non-incremental-reverse-search-history (M-p)
1128: Search backward starting at the current line and moving `up'
1129: through the history as necessary using a non-incremental search
1130: for a string supplied by the user.
1131:
1132: @item non-incremental-forward-search-history (M-n)
1133: Search forward starting at the current line and moving `down'
1134: through the the history as necessary using a non-incremental search
1135: for a string supplied by the user.
1136:
1137: @item history-search-forward ()
1138: Search forward through the history for the string of characters
1139: between the start of the current line and the point.
1140: The search string must match at the beginning of a history line.
1141: This is a non-incremental search.
1142: By default, this command is unbound.
1143:
1144: @item history-search-backward ()
1145: Search backward through the history for the string of characters
1146: between the start of the current line and the point.
1147: The search string must match at the beginning of a history line.
1148: This is a non-incremental search.
1149: By default, this command is unbound.
1150:
1151: @item history-substr-search-forward ()
1152: Search forward through the history for the string of characters
1153: between the start of the current line and the point.
1154: The search string may match anywhere in a history line.
1155: This is a non-incremental search.
1156: By default, this command is unbound.
1157:
1158: @item history-substr-search-backward ()
1159: Search backward through the history for the string of characters
1160: between the start of the current line and the point.
1161: The search string may match anywhere in a history line.
1162: This is a non-incremental search.
1163: By default, this command is unbound.
1164:
1165: @item yank-nth-arg (M-C-y)
1166: Insert the first argument to the previous command (usually
1167: the second word on the previous line) at point.
1168: With an argument @var{n},
1169: insert the @var{n}th word from the previous command (the words
1170: in the previous command begin with word 0). A negative argument
1171: inserts the @var{n}th word from the end of the previous command.
1172: Once the argument @var{n} is computed, the argument is extracted
1173: as if the @samp{!@var{n}} history expansion had been specified.
1174:
1175: @item yank-last-arg (M-. or M-_)
1176: Insert last argument to the previous command (the last word of the
1177: previous history entry).
1178: With a numeric argument, behave exactly like @code{yank-nth-arg}.
1179: Successive calls to @code{yank-last-arg} move back through the history
1180: list, inserting the last word (or the word specified by the argument to
1181: the first call) of each line in turn.
1182: Any numeric argument supplied to these successive calls determines
1183: the direction to move through the history. A negative argument switches
1184: the direction through the history (back or forward).
1185: The history expansion facilities are used to extract the last argument,
1186: as if the @samp{!$} history expansion had been specified.
1187:
1188: @end ftable
1189:
1190: @node Commands For Text
1191: @subsection Commands For Changing Text
1192:
1193: @ftable @code
1194:
1195: @item @i{end-of-file} (usually C-d)
1196: The character indicating end-of-file as set, for example, by
1197: @code{stty}. If this character is read when there are no characters
1198: on the line, and point is at the beginning of the line, Readline
1199: interprets it as the end of input and returns @sc{eof}.
1200:
1201: @item delete-char (C-d)
1202: Delete the character at point. If this function is bound to the
1203: same character as the tty @sc{eof} character, as @kbd{C-d}
1204: commonly is, see above for the effects.
1205:
1206: @item backward-delete-char (Rubout)
1207: Delete the character behind the cursor. A numeric argument means
1208: to kill the characters instead of deleting them.
1209:
1210: @item forward-backward-delete-char ()
1211: Delete the character under the cursor, unless the cursor is at the
1212: end of the line, in which case the character behind the cursor is
1213: deleted. By default, this is not bound to a key.
1214:
1215: @item quoted-insert (C-q or C-v)
1216: Add the next character typed to the line verbatim. This is
1217: how to insert key sequences like @kbd{C-q}, for example.
1218:
1219: @ifclear BashFeatures
1220: @item tab-insert (M-@key{TAB})
1221: Insert a tab character.
1222: @end ifclear
1223:
1224: @item self-insert (a, b, A, 1, !, @dots{})
1225: Insert yourself.
1226:
1227: @item transpose-chars (C-t)
1228: Drag the character before the cursor forward over
1229: the character at the cursor, moving the
1230: cursor forward as well. If the insertion point
1231: is at the end of the line, then this
1232: transposes the last two characters of the line.
1233: Negative arguments have no effect.
1234:
1235: @item transpose-words (M-t)
1236: Drag the word before point past the word after point,
1237: moving point past that word as well.
1238: If the insertion point is at the end of the line, this transposes
1239: the last two words on the line.
1240:
1241: @item upcase-word (M-u)
1242: Uppercase the current (or following) word. With a negative argument,
1243: uppercase the previous word, but do not move the cursor.
1244:
1245: @item downcase-word (M-l)
1246: Lowercase the current (or following) word. With a negative argument,
1247: lowercase the previous word, but do not move the cursor.
1248:
1249: @item capitalize-word (M-c)
1250: Capitalize the current (or following) word. With a negative argument,
1251: capitalize the previous word, but do not move the cursor.
1252:
1253: @item overwrite-mode ()
1254: Toggle overwrite mode. With an explicit positive numeric argument,
1255: switches to overwrite mode. With an explicit non-positive numeric
1256: argument, switches to insert mode. This command affects only
1257: @code{emacs} mode; @code{vi} mode does overwrite differently.
1258: Each call to @code{readline()} starts in insert mode.
1259:
1260: In overwrite mode, characters bound to @code{self-insert} replace
1261: the text at point rather than pushing the text to the right.
1262: Characters bound to @code{backward-delete-char} replace the character
1263: before point with a space.
1264:
1265: By default, this command is unbound.
1266:
1267: @end ftable
1268:
1269: @node Commands For Killing
1270: @subsection Killing And Yanking
1271:
1272: @ftable @code
1273:
1274: @item kill-line (C-k)
1275: Kill the text from point to the end of the line.
1276:
1277: @item backward-kill-line (C-x Rubout)
1278: Kill backward to the beginning of the line.
1279:
1280: @item unix-line-discard (C-u)
1281: Kill backward from the cursor to the beginning of the current line.
1282:
1283: @item kill-whole-line ()
1284: Kill all characters on the current line, no matter where point is.
1285: By default, this is unbound.
1286:
1287: @item kill-word (M-d)
1288: Kill from point to the end of the current word, or if between
1289: words, to the end of the next word.
1290: Word boundaries are the same as @code{forward-word}.
1291:
1292: @item backward-kill-word (M-@key{DEL})
1293: Kill the word behind point.
1294: Word boundaries are the same as @code{backward-word}.
1295:
1296: @ifset BashFeatures
1297: @item shell-kill-word ()
1298: Kill from point to the end of the current word, or if between
1299: words, to the end of the next word.
1300: Word boundaries are the same as @code{shell-forward-word}.
1301:
1302: @item shell-backward-kill-word ()
1303: Kill the word behind point.
1304: Word boundaries are the same as @code{shell-backward-word}.
1305: @end ifset
1306:
1307: @item unix-word-rubout (C-w)
1308: Kill the word behind point, using white space as a word boundary.
1309: The killed text is saved on the kill-ring.
1310:
1311: @item unix-filename-rubout ()
1312: Kill the word behind point, using white space and the slash character
1313: as the word boundaries.
1314: The killed text is saved on the kill-ring.
1315:
1316: @item delete-horizontal-space ()
1317: Delete all spaces and tabs around point. By default, this is unbound.
1318:
1319: @item kill-region ()
1320: Kill the text in the current region.
1321: By default, this command is unbound.
1322:
1323: @item copy-region-as-kill ()
1324: Copy the text in the region to the kill buffer, so it can be yanked
1325: right away. By default, this command is unbound.
1326:
1327: @item copy-backward-word ()
1328: Copy the word before point to the kill buffer.
1329: The word boundaries are the same as @code{backward-word}.
1330: By default, this command is unbound.
1331:
1332: @item copy-forward-word ()
1333: Copy the word following point to the kill buffer.
1334: The word boundaries are the same as @code{forward-word}.
1335: By default, this command is unbound.
1336:
1337: @item yank (C-y)
1338: Yank the top of the kill ring into the buffer at point.
1339:
1340: @item yank-pop (M-y)
1341: Rotate the kill-ring, and yank the new top. You can only do this if
1342: the prior command is @code{yank} or @code{yank-pop}.
1343: @end ftable
1344:
1345: @node Numeric Arguments
1346: @subsection Specifying Numeric Arguments
1347: @ftable @code
1348:
1349: @item digit-argument (@kbd{M-0}, @kbd{M-1}, @dots{} @kbd{M--})
1350: Add this digit to the argument already accumulating, or start a new
1351: argument. @kbd{M--} starts a negative argument.
1352:
1353: @item universal-argument ()
1354: This is another way to specify an argument.
1355: If this command is followed by one or more digits, optionally with a
1356: leading minus sign, those digits define the argument.
1357: If the command is followed by digits, executing @code{universal-argument}
1358: again ends the numeric argument, but is otherwise ignored.
1359: As a special case, if this command is immediately followed by a
1360: character that is neither a digit or minus sign, the argument count
1361: for the next command is multiplied by four.
1362: The argument count is initially one, so executing this function the
1363: first time makes the argument count four, a second time makes the
1364: argument count sixteen, and so on.
1365: By default, this is not bound to a key.
1366: @end ftable
1367:
1368: @node Commands For Completion
1369: @subsection Letting Readline Type For You
1370:
1371: @ftable @code
1372: @item complete (@key{TAB})
1373: Attempt to perform completion on the text before point.
1374: The actual completion performed is application-specific.
1375: @ifset BashFeatures
1376: Bash attempts completion treating the text as a variable (if the
1377: text begins with @samp{$}), username (if the text begins with
1378: @samp{~}), hostname (if the text begins with @samp{@@}), or
1379: command (including aliases and functions) in turn. If none
1380: of these produces a match, filename completion is attempted.
1381: @end ifset
1382: @ifclear BashFeatures
1383: The default is filename completion.
1384: @end ifclear
1385:
1386: @item possible-completions (M-?)
1387: List the possible completions of the text before point.
1388: When displaying completions, Readline sets the number of columns used
1389: for display to the value of @code{completion-display-width}, the value of
1390: the environment variable @env{COLUMNS}, or the screen width, in that order.
1391:
1392: @item insert-completions (M-*)
1393: Insert all completions of the text before point that would have
1394: been generated by @code{possible-completions}.
1395:
1396: @item menu-complete ()
1397: Similar to @code{complete}, but replaces the word to be completed
1398: with a single match from the list of possible completions.
1399: Repeated execution of @code{menu-complete} steps through the list
1400: of possible completions, inserting each match in turn.
1401: At the end of the list of completions, the bell is rung
1402: (subject to the setting of @code{bell-style})
1403: and the original text is restored.
1404: An argument of @var{n} moves @var{n} positions forward in the list
1405: of matches; a negative argument may be used to move backward
1406: through the list.
1407: This command is intended to be bound to @key{TAB}, but is unbound
1408: by default.
1409:
1410: @item menu-complete-backward ()
1411: Identical to @code{menu-complete}, but moves backward through the list
1412: of possible completions, as if @code{menu-complete} had been given a
1413: negative argument.
1414:
1415: @item delete-char-or-list ()
1416: Deletes the character under the cursor if not at the beginning or
1417: end of the line (like @code{delete-char}).
1418: If at the end of the line, behaves identically to
1419: @code{possible-completions}.
1420: This command is unbound by default.
1421:
1422: @ifset BashFeatures
1423: @item complete-filename (M-/)
1424: Attempt filename completion on the text before point.
1425:
1426: @item possible-filename-completions (C-x /)
1427: List the possible completions of the text before point,
1428: treating it as a filename.
1429:
1430: @item complete-username (M-~)
1431: Attempt completion on the text before point, treating
1432: it as a username.
1433:
1434: @item possible-username-completions (C-x ~)
1435: List the possible completions of the text before point,
1436: treating it as a username.
1437:
1438: @item complete-variable (M-$)
1439: Attempt completion on the text before point, treating
1440: it as a shell variable.
1441:
1442: @item possible-variable-completions (C-x $)
1443: List the possible completions of the text before point,
1444: treating it as a shell variable.
1445:
1446: @item complete-hostname (M-@@)
1447: Attempt completion on the text before point, treating
1448: it as a hostname.
1449:
1450: @item possible-hostname-completions (C-x @@)
1451: List the possible completions of the text before point,
1452: treating it as a hostname.
1453:
1454: @item complete-command (M-!)
1455: Attempt completion on the text before point, treating
1456: it as a command name. Command completion attempts to
1457: match the text against aliases, reserved words, shell
1458: functions, shell builtins, and finally executable filenames,
1459: in that order.
1460:
1461: @item possible-command-completions (C-x !)
1462: List the possible completions of the text before point,
1463: treating it as a command name.
1464:
1465: @item dynamic-complete-history (M-@key{TAB})
1466: Attempt completion on the text before point, comparing
1467: the text against lines from the history list for possible
1468: completion matches.
1469:
1470: @item dabbrev-expand ()
1471: Attempt menu completion on the text before point, comparing
1472: the text against lines from the history list for possible
1473: completion matches.
1474:
1475: @item complete-into-braces (M-@{)
1476: Perform filename completion and insert the list of possible completions
1477: enclosed within braces so the list is available to the shell
1478: (@pxref{Brace Expansion}).
1479:
1480: @end ifset
1481: @end ftable
1482:
1483: @node Keyboard Macros
1484: @subsection Keyboard Macros
1485: @ftable @code
1486:
1487: @item start-kbd-macro (C-x ()
1488: Begin saving the characters typed into the current keyboard macro.
1489:
1490: @item end-kbd-macro (C-x ))
1491: Stop saving the characters typed into the current keyboard macro
1492: and save the definition.
1493:
1494: @item call-last-kbd-macro (C-x e)
1495: Re-execute the last keyboard macro defined, by making the characters
1496: in the macro appear as if typed at the keyboard.
1497:
1498: @item print-last-kbd-macro ()
1499: Print the last keboard macro defined in a format suitable for the
1500: @var{inputrc} file.
1501:
1502: @end ftable
1503:
1504: @node Miscellaneous Commands
1505: @subsection Some Miscellaneous Commands
1506: @ftable @code
1507:
1508: @item re-read-init-file (C-x C-r)
1509: Read in the contents of the @var{inputrc} file, and incorporate
1510: any bindings or variable assignments found there.
1511:
1512: @item abort (C-g)
1513: Abort the current editing command and
1514: ring the terminal's bell (subject to the setting of
1515: @code{bell-style}).
1516:
1517: @item do-uppercase-version (M-a, M-b, M-@var{x}, @dots{})
1518: If the metafied character @var{x} is lowercase, run the command
1519: that is bound to the corresponding uppercase character.
1520:
1521: @item prefix-meta (@key{ESC})
1522: Metafy the next character typed. This is for keyboards
1523: without a meta key. Typing @samp{@key{ESC} f} is equivalent to typing
1524: @kbd{M-f}.
1525:
1526: @item undo (C-_ or C-x C-u)
1527: Incremental undo, separately remembered for each line.
1528:
1529: @item revert-line (M-r)
1530: Undo all changes made to this line. This is like executing the @code{undo}
1531: command enough times to get back to the beginning.
1532:
1533: @ifset BashFeatures
1534: @item tilde-expand (M-&)
1535: @end ifset
1536: @ifclear BashFeatures
1537: @item tilde-expand (M-~)
1538: @end ifclear
1539: Perform tilde expansion on the current word.
1540:
1541: @item set-mark (C-@@)
1542: Set the mark to the point. If a
1543: numeric argument is supplied, the mark is set to that position.
1544:
1545: @item exchange-point-and-mark (C-x C-x)
1546: Swap the point with the mark. The current cursor position is set to
1547: the saved position, and the old cursor position is saved as the mark.
1548:
1549: @item character-search (C-])
1550: A character is read and point is moved to the next occurrence of that
1551: character. A negative count searches for previous occurrences.
1552:
1553: @item character-search-backward (M-C-])
1554: A character is read and point is moved to the previous occurrence
1555: of that character. A negative count searches for subsequent
1556: occurrences.
1557:
1558: @item skip-csi-sequence ()
1559: Read enough characters to consume a multi-key sequence such as those
1560: defined for keys like Home and End. Such sequences begin with a
1561: Control Sequence Indicator (CSI), usually ESC-[. If this sequence is
1562: bound to "\e[", keys producing such sequences will have no effect
1563: unless explicitly bound to a readline command, instead of inserting
1564: stray characters into the editing buffer. This is unbound by default,
1565: but usually bound to ESC-[.
1566:
1567: @item insert-comment (M-#)
1568: Without a numeric argument, the value of the @code{comment-begin}
1569: variable is inserted at the beginning of the current line.
1570: If a numeric argument is supplied, this command acts as a toggle: if
1571: the characters at the beginning of the line do not match the value
1572: of @code{comment-begin}, the value is inserted, otherwise
1573: the characters in @code{comment-begin} are deleted from the beginning of
1574: the line.
1575: In either case, the line is accepted as if a newline had been typed.
1576: @ifset BashFeatures
1577: The default value of @code{comment-begin} causes this command
1578: to make the current line a shell comment.
1579: If a numeric argument causes the comment character to be removed, the line
1580: will be executed by the shell.
1581: @end ifset
1582:
1583: @item dump-functions ()
1584: Print all of the functions and their key bindings to the
1585: Readline output stream. If a numeric argument is supplied,
1586: the output is formatted in such a way that it can be made part
1587: of an @var{inputrc} file. This command is unbound by default.
1588:
1589: @item dump-variables ()
1590: Print all of the settable variables and their values to the
1591: Readline output stream. If a numeric argument is supplied,
1592: the output is formatted in such a way that it can be made part
1593: of an @var{inputrc} file. This command is unbound by default.
1594:
1595: @item dump-macros ()
1596: Print all of the Readline key sequences bound to macros and the
1597: strings they output. If a numeric argument is supplied,
1598: the output is formatted in such a way that it can be made part
1599: of an @var{inputrc} file. This command is unbound by default.
1600:
1601: @ifset BashFeatures
1602: @item glob-complete-word (M-g)
1603: The word before point is treated as a pattern for pathname expansion,
1604: with an asterisk implicitly appended. This pattern is used to
1605: generate a list of matching file names for possible completions.
1606:
1607: @item glob-expand-word (C-x *)
1608: The word before point is treated as a pattern for pathname expansion,
1609: and the list of matching file names is inserted, replacing the word.
1610: If a numeric argument is supplied, a @samp{*} is appended before
1611: pathname expansion.
1612:
1613: @item glob-list-expansions (C-x g)
1614: The list of expansions that would have been generated by
1615: @code{glob-expand-word} is displayed, and the line is redrawn.
1616: If a numeric argument is supplied, a @samp{*} is appended before
1617: pathname expansion.
1618:
1619: @item display-shell-version (C-x C-v)
1620: Display version information about the current instance of Bash.
1621:
1622: @item shell-expand-line (M-C-e)
1623: Expand the line as the shell does.
1624: This performs alias and history expansion as well as all of the shell
1625: word expansions (@pxref{Shell Expansions}).
1626:
1627: @item history-expand-line (M-^)
1628: Perform history expansion on the current line.
1629:
1630: @item magic-space ()
1631: Perform history expansion on the current line and insert a space
1632: (@pxref{History Interaction}).
1633:
1634: @item alias-expand-line ()
1635: Perform alias expansion on the current line (@pxref{Aliases}).
1636:
1637: @item history-and-alias-expand-line ()
1638: Perform history and alias expansion on the current line.
1639:
1640: @item insert-last-argument (M-. or M-_)
1641: A synonym for @code{yank-last-arg}.
1642:
1643: @item operate-and-get-next (C-o)
1644: Accept the current line for execution and fetch the next line
1645: relative to the current line from the history for editing. Any
1646: argument is ignored.
1647:
1648: @item edit-and-execute-command (C-xC-e)
1649: Invoke an editor on the current command line, and execute the result as shell
1650: commands.
1651: Bash attempts to invoke
1652: @code{$VISUAL}, @code{$EDITOR}, and @code{emacs}
1653: as the editor, in that order.
1654:
1655: @end ifset
1656:
1657: @ifclear BashFeatures
1658: @item emacs-editing-mode (C-e)
1659: When in @code{vi} command mode, this causes a switch to @code{emacs}
1660: editing mode.
1661:
1662: @item vi-editing-mode (M-C-j)
1663: When in @code{emacs} editing mode, this causes a switch to @code{vi}
1664: editing mode.
1665:
1666: @end ifclear
1667:
1668: @end ftable
1669:
1670: @node Readline vi Mode
1671: @section Readline vi Mode
1672:
1673: While the Readline library does not have a full set of @code{vi}
1674: editing functions, it does contain enough to allow simple editing
1675: of the line. The Readline @code{vi} mode behaves as specified in
1676: the @sc{posix} standard.
1677:
1678: @ifset BashFeatures
1679: In order to switch interactively between @code{emacs} and @code{vi}
1680: editing modes, use the @samp{set -o emacs} and @samp{set -o vi}
1681: commands (@pxref{The Set Builtin}).
1682: @end ifset
1683: @ifclear BashFeatures
1684: In order to switch interactively between @code{emacs} and @code{vi}
1685: editing modes, use the command @kbd{M-C-j} (bound to emacs-editing-mode
1686: when in @code{vi} mode and to vi-editing-mode in @code{emacs} mode).
1687: @end ifclear
1688: The Readline default is @code{emacs} mode.
1689:
1690: When you enter a line in @code{vi} mode, you are already placed in
1691: `insertion' mode, as if you had typed an @samp{i}. Pressing @key{ESC}
1692: switches you into `command' mode, where you can edit the text of the
1693: line with the standard @code{vi} movement keys, move to previous
1694: history lines with @samp{k} and subsequent lines with @samp{j}, and
1695: so forth.
1696:
1697: @ifset BashFeatures
1698: @node Programmable Completion
1699: @section Programmable Completion
1700: @cindex programmable completion
1701:
1702: When word completion is attempted for an argument to a command for
1703: which a completion specification (a @var{compspec}) has been defined
1704: using the @code{complete} builtin (@pxref{Programmable Completion Builtins}),
1705: the programmable completion facilities are invoked.
1706:
1707: First, the command name is identified.
1708: If a compspec has been defined for that command, the
1709: compspec is used to generate the list of possible completions for the word.
1710: If the command word is the empty string (completion attempted at the
1711: beginning of an empty line), any compspec defined with
1712: the @option{-E} option to @code{complete} is used.
1713: If the command word is a full pathname, a compspec for the full
1714: pathname is searched for first.
1715: If no compspec is found for the full pathname, an attempt is made to
1716: find a compspec for the portion following the final slash.
1717: If those searches do not result in a compspec, any compspec defined with
1718: the @option{-D} option to @code{complete} is used as the default.
1719:
1720: Once a compspec has been found, it is used to generate the list of
1721: matching words.
1722: If a compspec is not found, the default Bash completion
1723: described above (@pxref{Commands For Completion}) is performed.
1724:
1725: First, the actions specified by the compspec are used.
1726: Only matches which are prefixed by the word being completed are
1727: returned.
1728: When the @option{-f} or @option{-d} option is used for filename or
1729: directory name completion, the shell variable @env{FIGNORE} is
1730: used to filter the matches.
1731: @xref{Bash Variables}, for a description of @env{FIGNORE}.
1732:
1733: Any completions specified by a filename expansion pattern to the
1734: @option{-G} option are generated next.
1735: The words generated by the pattern need not match the word being completed.
1736: The @env{GLOBIGNORE} shell variable is not used to filter the matches,
1737: but the @env{FIGNORE} shell variable is used.
1738:
1739: Next, the string specified as the argument to the @option{-W} option
1740: is considered.
1741: The string is first split using the characters in the @env{IFS}
1742: special variable as delimiters.
1743: Shell quoting is honored.
1744: Each word is then expanded using
1745: brace expansion, tilde expansion, parameter and variable expansion,
1746: command substitution, and arithmetic expansion,
1747: as described above (@pxref{Shell Expansions}).
1748: The results are split using the rules described above
1749: (@pxref{Word Splitting}).
1750: The results of the expansion are prefix-matched against the word being
1751: completed, and the matching words become the possible completions.
1752:
1753: After these matches have been generated, any shell function or command
1754: specified with the @option{-F} and @option{-C} options is invoked.
1755: When the command or function is invoked, the @env{COMP_LINE},
1756: @env{COMP_POINT}, @env{COMP_KEY}, and @env{COMP_TYPE} variables are
1757: assigned values as described above (@pxref{Bash Variables}).
1758: If a shell function is being invoked, the @env{COMP_WORDS} and
1759: @env{COMP_CWORD} variables are also set.
1760: When the function or command is invoked, the first argument ($1) is the
1761: name of the command whose arguments are being completed, the
1762: second argument ($2) is the word being completed, and the third argument
1763: ($3) is the word preceding the word being completed on the current command
1764: line.
1765: No filtering of the generated completions against the word being completed
1766: is performed; the function or command has complete freedom in generating
1767: the matches.
1768:
1769: Any function specified with @option{-F} is invoked first.
1770: The function may use any of the shell facilities, including the
1771: @code{compgen} and @code{compopt} builtins described below
1772: (@pxref{Programmable Completion Builtins}), to generate the matches.
1773: It must put the possible completions in the @env{COMPREPLY} array
1774: variable, one per array element.
1775:
1776: Next, any command specified with the @option{-C} option is invoked
1777: in an environment equivalent to command substitution.
1778: It should print a list of completions, one per line, to
1779: the standard output.
1780: Backslash may be used to escape a newline, if necessary.
1781:
1782: After all of the possible completions are generated, any filter
1783: specified with the @option{-X} option is applied to the list.
1784: The filter is a pattern as used for pathname expansion; a @samp{&}
1785: in the pattern is replaced with the text of the word being completed.
1786: A literal @samp{&} may be escaped with a backslash; the backslash
1787: is removed before attempting a match.
1788: Any completion that matches the pattern will be removed from the list.
1789: A leading @samp{!} negates the pattern; in this case any completion
1790: not matching the pattern will be removed.
1791:
1792: Finally, any prefix and suffix specified with the @option{-P} and @option{-S}
1793: options are added to each member of the completion list, and the result is
1794: returned to the Readline completion code as the list of possible
1795: completions.
1796:
1797: If the previously-applied actions do not generate any matches, and the
1798: @option{-o dirnames} option was supplied to @code{complete} when the
1799: compspec was defined, directory name completion is attempted.
1800:
1801: If the @option{-o plusdirs} option was supplied to @code{complete} when
1802: the compspec was defined, directory name completion is attempted and any
1803: matches are added to the results of the other actions.
1804:
1805: By default, if a compspec is found, whatever it generates is returned to
1806: the completion code as the full set of possible completions.
1807: The default Bash completions are not attempted, and the Readline default
1808: of filename completion is disabled.
1809: If the @option{-o bashdefault} option was supplied to @code{complete} when
1810: the compspec was defined, the default Bash completions are attempted
1811: if the compspec generates no matches.
1812: If the @option{-o default} option was supplied to @code{complete} when the
1813: compspec was defined, Readline's default completion will be performed
1814: if the compspec (and, if attempted, the default Bash completions)
1815: generate no matches.
1816:
1817: When a compspec indicates that directory name completion is desired,
1818: the programmable completion functions force Readline to append a slash
1819: to completed names which are symbolic links to directories, subject to
1820: the value of the @var{mark-directories} Readline variable, regardless
1821: of the setting of the @var{mark-symlinked-directories} Readline variable.
1822:
1823: There is some support for dynamically modifying completions. This is
1824: most useful when used in combination with a default completion specified
1825: with @option{-D}. It's possible for shell functions executed as completion
1826: handlers to indicate that completion should be retried by returning an
1827: exit status of 124. If a shell function returns 124, and changes
1828: the compspec associated with the command on which completion is being
1829: attempted (supplied as the first argument when the function is executed),
1830: programmable completion restarts from the beginning, with an
1831: attempt to find a new compspec for that command. This allows a set of
1832: completions to be built dynamically as completion is attempted, rather than
1833: being loaded all at once.
1834:
1835: For instance, assuming that there is a library of compspecs, each kept in a
1836: file corresponding to the name of the command, the following default
1837: completion function would load completions dynamically:
1838:
1839: @example
1840: _completion_loader()
1841: @{
1842: . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
1843: @}
1844: complete -D -F _completion_loader -o bashdefault -o default
1845: @end example
1846:
1847: @node Programmable Completion Builtins
1848: @section Programmable Completion Builtins
1849: @cindex completion builtins
1850:
1851: Three builtin commands are available to manipulate the programmable completion
1852: facilities: one to specify how the arguments to a particular command are to
1853: be completed, and two to modify the completion as it is happening.
1854:
1855: @table @code
1856: @item compgen
1857: @btindex compgen
1858: @example
1859: @code{compgen [@var{option}] [@var{word}]}
1860: @end example
1861:
1862: Generate possible completion matches for @var{word} according to
1863: the @var{option}s, which may be any option accepted by the
1864: @code{complete}
1865: builtin with the exception of @option{-p} and @option{-r}, and write
1866: the matches to the standard output.
1867: When using the @option{-F} or @option{-C} options, the various shell variables
1868: set by the programmable completion facilities, while available, will not
1869: have useful values.
1870:
1871: The matches will be generated in the same way as if the programmable
1872: completion code had generated them directly from a completion specification
1873: with the same flags.
1874: If @var{word} is specified, only those completions matching @var{word}
1875: will be displayed.
1876:
1877: The return value is true unless an invalid option is supplied, or no
1878: matches were generated.
1879:
1880: @item complete
1881: @btindex complete
1882: @example
1883: @code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-DE] [-A @var{action}] [-G @var{globpat}] [-W @var{wordlist}]
1884: [-F @var{function}] [-C @var{command}] [-X @var{filterpat}]
1885: [-P @var{prefix}] [-S @var{suffix}] @var{name} [@var{name} @dots{}]}
1886: @code{complete -pr [-DE] [@var{name} @dots{}]}
1887: @end example
1888:
1889: Specify how arguments to each @var{name} should be completed.
1890: If the @option{-p} option is supplied, or if no options are supplied, existing
1891: completion specifications are printed in a way that allows them to be
1892: reused as input.
1893: The @option{-r} option removes a completion specification for
1894: each @var{name}, or, if no @var{name}s are supplied, all
1895: completion specifications.
1896: The @option{-D} option indicates that the remaining options and actions should
1897: apply to the ``default'' command completion; that is, completion attempted
1898: on a command for which no completion has previously been defined.
1899: The @option{-E} option indicates that the remaining options and actions should
1900: apply to ``empty'' command completion; that is, completion attempted on a
1901: blank line.
1902:
1903: The process of applying these completion specifications when word completion
1904: is attempted is described above (@pxref{Programmable Completion}). The
1905: @option{-D} option takes precedence over @option{-E}.
1906:
1907: Other options, if specified, have the following meanings.
1908: The arguments to the @option{-G}, @option{-W}, and @option{-X} options
1909: (and, if necessary, the @option{-P} and @option{-S} options)
1910: should be quoted to protect them from expansion before the
1911: @code{complete} builtin is invoked.
1912:
1913:
1914: @table @code
1915: @item -o @var{comp-option}
1916: The @var{comp-option} controls several aspects of the compspec's behavior
1917: beyond the simple generation of completions.
1918: @var{comp-option} may be one of:
1919:
1920: @table @code
1921:
1922: @item bashdefault
1923: Perform the rest of the default Bash completions if the compspec
1924: generates no matches.
1925:
1926: @item default
1927: Use Readline's default filename completion if the compspec generates
1928: no matches.
1929:
1930: @item dirnames
1931: Perform directory name completion if the compspec generates no matches.
1932:
1933: @item filenames
1934: Tell Readline that the compspec generates filenames, so it can perform any
1935: filename-specific processing (like adding a slash to directory names
1936: quoting special characters, or suppressing trailing spaces).
1937: This option is intended to be used with shell functions specified
1938: with @option{-F}.
1939:
1940: @item noquote
1941: Tell Readline not to quote the completed words if they are filenames
1942: (quoting filenames is the default).
1943:
1944: @item nospace
1945: Tell Readline not to append a space (the default) to words completed at
1946: the end of the line.
1947:
1948: @item plusdirs
1949: After any matches defined by the compspec are generated,
1950: directory name completion is attempted and any
1951: matches are added to the results of the other actions.
1952:
1953: @end table
1954:
1955: @item -A @var{action}
1956: The @var{action} may be one of the following to generate a list of possible
1957: completions:
1958:
1959: @table @code
1960: @item alias
1961: Alias names. May also be specified as @option{-a}.
1962:
1963: @item arrayvar
1964: Array variable names.
1965:
1966: @item binding
1967: Readline key binding names (@pxref{Bindable Readline Commands}).
1968:
1969: @item builtin
1970: Names of shell builtin commands. May also be specified as @option{-b}.
1971:
1972: @item command
1973: Command names. May also be specified as @option{-c}.
1974:
1975: @item directory
1976: Directory names. May also be specified as @option{-d}.
1977:
1978: @item disabled
1979: Names of disabled shell builtins.
1980:
1981: @item enabled
1982: Names of enabled shell builtins.
1983:
1984: @item export
1985: Names of exported shell variables. May also be specified as @option{-e}.
1986:
1987: @item file
1988: File names. May also be specified as @option{-f}.
1989:
1990: @item function
1991: Names of shell functions.
1992:
1993: @item group
1994: Group names. May also be specified as @option{-g}.
1995:
1996: @item helptopic
1997: Help topics as accepted by the @code{help} builtin (@pxref{Bash Builtins}).
1998:
1999: @item hostname
2000: Hostnames, as taken from the file specified by the
2001: @env{HOSTFILE} shell variable (@pxref{Bash Variables}).
2002:
2003: @item job
2004: Job names, if job control is active. May also be specified as @option{-j}.
2005:
2006: @item keyword
2007: Shell reserved words. May also be specified as @option{-k}.
2008:
2009: @item running
2010: Names of running jobs, if job control is active.
2011:
2012: @item service
2013: Service names. May also be specified as @option{-s}.
2014:
2015: @item setopt
2016: Valid arguments for the @option{-o} option to the @code{set} builtin
2017: (@pxref{The Set Builtin}).
2018:
2019: @item shopt
2020: Shell option names as accepted by the @code{shopt} builtin
2021: (@pxref{Bash Builtins}).
2022:
2023: @item signal
2024: Signal names.
2025:
2026: @item stopped
2027: Names of stopped jobs, if job control is active.
2028:
2029: @item user
2030: User names. May also be specified as @option{-u}.
2031:
2032: @item variable
2033: Names of all shell variables. May also be specified as @option{-v}.
2034: @end table
2035:
2036: @item -C @var{command}
2037: @var{command} is executed in a subshell environment, and its output is
2038: used as the possible completions.
2039:
2040: @item -F @var{function}
2041: The shell function @var{function} is executed in the current shell
2042: environment.
2043: When it is executed, $1 is the name of the command whose arguments are
2044: being completed, $2 is the word being completed, and $3 is the word
2045: preceding the word being completed, as described above
2046: (@pxref{Programmable Completion}).
2047: When it finishes, the possible completions are retrieved from the value
2048: of the @env{COMPREPLY} array variable.
2049:
2050: @item -G @var{globpat}
2051: The filename expansion pattern @var{globpat} is expanded to generate
2052: the possible completions.
2053:
2054: @item -P @var{prefix}
2055: @var{prefix} is added at the beginning of each possible completion
2056: after all other options have been applied.
2057:
2058: @item -S @var{suffix}
2059: @var{suffix} is appended to each possible completion
2060: after all other options have been applied.
2061:
2062: @item -W @var{wordlist}
2063: The @var{wordlist} is split using the characters in the
2064: @env{IFS} special variable as delimiters, and each resultant word
2065: is expanded.
2066: The possible completions are the members of the resultant list which
2067: match the word being completed.
2068:
2069: @item -X @var{filterpat}
2070: @var{filterpat} is a pattern as used for filename expansion.
2071: It is applied to the list of possible completions generated by the
2072: preceding options and arguments, and each completion matching
2073: @var{filterpat} is removed from the list.
2074: A leading @samp{!} in @var{filterpat} negates the pattern; in this
2075: case, any completion not matching @var{filterpat} is removed.
2076: @end table
2077:
2078: The return value is true unless an invalid option is supplied, an option
2079: other than @option{-p} or @option{-r} is supplied without a @var{name}
2080: argument, an attempt is made to remove a completion specification for
2081: a @var{name} for which no specification exists, or
2082: an error occurs adding a completion specification.
2083:
2084: @item compopt
2085: @btindex compopt
2086: @example
2087: @code{compopt} [-o @var{option}] [-DE] [+o @var{option}] [@var{name}]
2088: @end example
2089: Modify completion options for each @var{name} according to the
2090: @var{option}s, or for the currently-executing completion if no @var{name}s
2091: are supplied.
2092: If no @var{option}s are given, display the completion options for each
2093: @var{name} or the current completion.
2094: The possible values of @var{option} are those valid for the @code{complete}
2095: builtin described above.
2096: The @option{-D} option indicates that the remaining options should
2097: apply to the ``default'' command completion; that is, completion attempted
2098: on a command for which no completion has previously been defined.
2099: The @option{-E} option indicates that the remaining options should
2100: apply to ``empty'' command completion; that is, completion attempted on a
2101: blank line.
2102:
2103: The @option{-D} option takes precedence over @option{-E}.
2104:
2105: The return value is true unless an invalid option is supplied, an attempt
2106: is made to modify the options for a @var{name} for which no completion
2107: specification exists, or an output error occurs.
2108:
2109: @end table
2110:
2111: @node A Programmable Completion Example
2112: @section A Programmable Completion Example
2113:
2114: The most common way to obtain additional completion functionality beyond
2115: the default actions @code{complete} and @code{compgen} provide is to use
2116: a shell function and bind it to a particular command using @code{complete -F}.
2117:
2118: The following function provides completions for the @code{cd} builtin.
2119: It is a reasonably good example of what shell functions must do when
2120: used for completion. This function uses the word passsed as @code{$2}
2121: to determine the directory name to complete. You can also use the
2122: @code{COMP_WORDS} array variable; the current word is indexed by the
2123: @code{COMP_CWORD} variable.
2124:
2125: The function relies on the @code{complete} and @code{compgen} builtins
2126: to do much of the work, adding only the things that the Bash @code{cd}
2127: does beyond accepting basic directory names:
2128: tilde expansion (@pxref{Tilde Expansion}),
2129: searching directories in @var{$CDPATH}, which is described above
2130: (@pxref{Bourne Shell Builtins}),
2131: and basic support for the @code{cdable_vars} shell option
2132: (@pxref{The Shopt Builtin}).
2133: @code{_comp_cd} modifies the value of @var{IFS} so that it contains only
2134: a newline to accommodate file names containing spaces and tabs --
2135: @code{compgen} prints the possible completions it generates one per line.
2136:
2137: Possible completions go into the @var{COMPREPLY} array variable, one
2138: completion per array element. The programmable completion system retrieves
2139: the completions from there when the function returns.
2140:
2141: @example
2142: # A completion function for the cd builtin
2143: # based on the cd completion function from the bash_completion package
2144: _comp_cd()
2145: @{
2146: local IFS=$' \t\n' # normalize IFS
2147: local cur _skipdot _cdpath
2148: local i j k
2149:
2150: # Tilde expansion, with side effect of expanding tilde to full pathname
2151: case "$2" in
2152: \~*) eval cur="$2" ;;
2153: *) cur=$2 ;;
2154: esac
2155:
2156: # no cdpath or absolute pathname -- straight directory completion
2157: if [[ -z "$@{CDPATH:-@}" ]] || [[ "$cur" == @@(./*|../*|/*) ]]; then
2158: # compgen prints paths one per line; could also use while loop
2159: IFS=$'\n'
2160: COMPREPLY=( $(compgen -d -- "$cur") )
2161: IFS=$' \t\n'
2162: # CDPATH+directories in the current directory if not in CDPATH
2163: else
2164: IFS=$'\n'
2165: _skipdot=false
2166: # preprocess CDPATH to convert null directory names to .
2167: _cdpath=$@{CDPATH/#:/.:@}
2168: _cdpath=$@{_cdpath//::/:.:@}
2169: _cdpath=$@{_cdpath/%:/:.@}
2170: for i in $@{_cdpath//:/$'\n'@}; do
2171: if [[ $i -ef . ]]; then _skipdot=true; fi
2172: k="$@{#COMPREPLY[@@]@}"
2173: for j in $( compgen -d -- "$i/$cur" ); do
2174: COMPREPLY[k++]=$@{j#$i/@} # cut off directory
2175: done
2176: done
2177: $_skipdot || COMPREPLY+=( $(compgen -d -- "$cur") )
2178: IFS=$' \t\n'
2179: fi
2180:
2181: # variable names if appropriate shell option set and no completions
2182: if shopt -q cdable_vars && [[ $@{#COMPREPLY[@@]@} -eq 0 ]]; then
2183: COMPREPLY=( $(compgen -v -- "$cur") )
2184: fi
2185:
2186: return 0
2187: @}
2188: @end example
2189:
2190: We install the completion function using the @option{-F} option to
2191: @code{complete}:
2192:
2193: @example
2194: # Tell readline to quote appropriate and append slashes to directories;
2195: # use the bash default completion for other arguments
2196: complete -o filenames -o nospace -o bashdefault -F _comp_cd cd
2197: @end example
2198:
2199: @noindent
2200: Since we'd like Bash and Readline to take care of some
2201: of the other details for us, we use several other options to tell Bash
2202: and Readline what to do. The @option{-o filenames} option tells Readline
2203: that the possible completions should be treated as filenames, and quoted
2204: appropriately. That option will also cause Readline to append a slash to
2205: filenames it can determine are directories (which is why we might want to
2206: extend @code{_comp_cd} to append a slash if we're using directories found
2207: via @var{CDPATH}: Readline can't tell those completions are directories).
2208: The @option{-o nospace} option tells Readline to not append a space
2209: character to the directory name, in case we want to append to it.
2210: The @option{-o bashdefault} option brings in the rest of the "Bash default"
2211: completions -- possible completion that Bash adds to the default Readline
2212: set. These include things like command name completion, variable completion
2213: for words beginning with @samp{@{}, completions containing pathname
2214: expansion patterns (@pxref{Filename Expansion}), and so on.
2215:
2216: Once installed using @code{complete}, @code{_comp_cd} will be called every
2217: time we attempt word completion for a @code{cd} command.
2218:
2219: Many more examples -- an extensive collection of completions for most of
2220: the common GNU, Unix, and Linux commands -- are available as part of the
2221: bash_completion project. This is installed by default on many GNU/Linux
2222: distributions. Originally written by Ian Macdonald, the project now lives
2223: at @url{http://bash-completion.alioth.debian.org/}. There are ports for
2224: other systems such as Solaris and Mac OS X.
2225:
2226: An older version of the bash_completion package is distributed with bash
2227: in the @file{examples/complete} subdirectory.
2228:
2229: @end ifset
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>