1\input texinfo.tex    @c -*-texinfo-*-
2@comment $Id: info-stnd.texi,v 1.9 2004/12/14 16:58:15 karl Exp $
3@c We must \input texinfo.tex instead of texinfo, otherwise make
4@c distcheck in the Texinfo distribution fails, because the texinfo Info
5@c file is made first, and texi2dvi must include . first in the path.
6@comment %**start of header
7@setfilename info-stnd.info
8@include version-stnd.texi
9@settitle GNU Info @value{VERSION}
10@syncodeindex vr cp
11@syncodeindex fn cp
12@syncodeindex ky cp
13@comment %**end of header
14
15@copying
16This manual is for GNU Info (version @value{VERSION}, @value{UPDATED}),
17a program for viewing documents in Info format (usually created from
18Texinfo source files).
19
20Copyright @copyright{} 1992, 1993, 1996, 1997, 1998, 1999, 2001, 2002,
212003, 2004 Free Software Foundation, Inc.
22
23@quotation
24Permission is granted to copy, distribute and/or modify this document
25under the terms of the GNU Free Documentation License, Version 1.1 or
26any later version published by the Free Software Foundation; with no
27Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
28and with the Back-Cover Texts as in (a) below.  A copy of the
29license is included in the section entitled ``GNU Free Documentation
30License.''
31
32(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
33this GNU Manual, like GNU software.  Copies published by the Free
34Software Foundation raise funds for GNU development.''
35@end quotation
36@end copying
37
38@dircategory Texinfo documentation system
39@direntry
40* info standalone: (info-stnd).            Read Info documents without Emacs.
41* infokey: (info-stnd)Invoking infokey.    Compile Info customizations.
42@end direntry
43
44@titlepage
45@title GNU Info
46@subtitle for version @value{VERSION}, @value{UPDATED}
47@author Brian J. Fox (bfox@@gnu.org)
48@page
49@vskip 0pt plus 1filll
50@insertcopying
51@end titlepage
52
53@contents
54
55@ifnottex
56@node Top
57@top GNU Info
58
59@insertcopying
60
61This documentation is different from the documentation for the Info
62reader that is part of GNU Emacs.  If you do not know how to use Info,
63but have a working Info reader, you should read the Emacs documentation
64first, as it includes more background information and a thorough tutorial.
65@end ifnottex
66
67@menu
68* What is Info::                What is Info?
69* Invoking Info::               Options you can pass on the command line.
70* Cursor Commands::             Commands which move the cursor within a node.
71* Scrolling Commands::          Commands for reading the text within a node.
72* Node Commands::               Commands for selecting a new node.
73* Searching Commands::          Commands for searching an Info file.
74* Xref Commands::               Commands for selecting cross references.
75* Window Commands::             Commands which manipulate multiple windows.
76* Printing Nodes::              How to print out the contents of a node.
77* Miscellaneous Commands::      A few commands that defy categories.
78* Variables::                   How to change the default behavior of Info.
79* Custom Key Bindings::         How to define your own key-to-command bindings.
80* Copying This Manual::         The GNU Free Documentation License.
81* Index::                       Global index containing keystrokes,
82                                  command names, variable names,
83                                  and general concepts.
84@end menu
85
86
87@node What is Info
88@chapter What is Info?
89
90@dfn{Info} is a program which is used to view Info files on an ASCII
91terminal.  @dfn{Info files} are the result of processing Texinfo files
92with the program @code{makeinfo} or with one of the Emacs commands, such
93as @code{M-x texinfo-format-buffer}.  Texinfo itself is a documentation
94system that uses a single source file to produce both on-line
95information and printed output.  You can typeset and print the files
96that you read in Info.
97
98
99@node Invoking Info
100@chapter Invoking Info
101
102@cindex Info, invoking
103@cindex invoking Info
104@cindex command line options
105@cindex options, command line
106@cindex arguments, command line
107
108GNU Info accepts several options to control the initial node being
109viewed, and to specify which directories to search for Info files.  Here
110is a template showing an invocation of GNU Info from the shell:
111
112@example
113info [@var{option}]@dots{} [@var{menu-item}@dots{}]
114@end example
115
116The program accepts the following options:
117
118@table @code
119@anchor{--apropos}
120@item --apropos=@var{string}
121@cindex Searching all indices
122@cindex Info files@r{, searching all indices}
123@cindex Apropos@r{, in Info files}
124Specify a string to search in every index of every Info file installed
125on your system.  Info looks up the named @var{string} in all the indices
126it can find, prints the results to standard output, and then exits.  If
127you are not sure which Info file explains certain issues, this option is
128your friend.  Note that if your system has a lot of Info files
129installed, searching all of them might take some time.
130
131You can invoke the apropos command from inside Info; see
132@ref{Searching Commands}.
133
134@cindex directory path
135@item --directory @var{directory-path}
136@itemx -d @var{directory-path}
137Prepend @var{directory-path} to the list of directory paths searched
138when Info needs to find a file.  You may issue @code{--directory}
139multiple times; once for each directory which contains Info files.  The
140list of directories searched by Info is constructed from the value of
141the environment variable @code{INFOPATH}; @code{--directory} causes the
142named @var{directory-path} to be prepended to that list.  The value of
143@code{INFOPATH} is a list of directories usually separated by a colon;
144on MS-DOS/MS-Windows systems, the semicolon is used.  If you do not
145define @code{INFOPATH}, Info uses a default path defined when Info was
146built as the initial list of directories.  If the value of
147@code{INFOPATH} ends with a colon (or semicolon on MS-DOS/MS-Windows),
148the initial list of directories is constructed by appending the
149build-time default to the value of @code{INFOPATH}.
150
151@cindex keystrokes, recording
152@cindex remembering user keystrokes
153@item --dribble=@var{dribble-file}
154Specify a file where all user keystrokes will be recorded.  This file
155can be used later to replay the same sequence of commands, see the
156@samp{--restore} option below.
157
158@item --file @var{filename}
159@itemx -f @var{filename}
160@cindex Info file, selecting
161Specify a particular Info file to visit.  By default, Info visits
162the file @code{dir}; if you use this option, Info will start with
163@code{(@var{filename})Top} as the first file and node.
164
165@cindex relative Info file names
166@cindex file names, relative
167@cindex Info files, relative
168If @var{filename} is an absolute file name, or begins with @file{./} or
169@file{../}, Info looks for @var{filename} only in the directory of the
170specified @var{filename}, and adds the directory of @var{filename} to
171the value of @code{INFOPATH}.  In contrast, if @var{filename} is in the
172form of a relative file name, but without the @file{./} or @file{../}
173prefix, Info will only look for it in the directories specified in
174@code{INFOPATH}.  In other words, Info does @emph{not} treat file names
175which lack @file{./} and @file{../} prefix as relative to the current
176directory.
177
178@cindex compressed Info files
179@cindex files, compressed
180@cindex Info files, compressed
181In every directory Info tries, if @var{filename} is not found, Info
182looks for it with a number of known extensions of Info files@footnote{
183@file{.info}, @file{-info}, @file{/index}, and @file{.inf}.}.  For every
184known extension, Info looks for a compressed file, if a regular file
185isn't found.  Info supports files compressed with @code{gzip},
186@code{bzip2}, @code{compress} and @code{yabba} programs; it calls
187@code{gunzip}, @code{bunzip2}, @code{uncompress} and @code{unyabba},
188accordingly, to decompress such files.  Compressed Info files are
189assumed to have @file{.z}, @file{.gz}, @file{.bz2}, @file{.Z}, or
190@file{.Y} extensions, possibly in addition to one of the known Info
191files extensions@footnote{The MS-DOS version allows for the Info
192extension, such as @code{.inf}, and the short compressed file
193extensions, such as @file{.z} and @file{.gz}, to be merged into a single
194extension, since DOS doesn't allow more than a single dot in the
195basename of a file.  Thus, on MS-DOS, if Info looks for @file{bison},
196file names like @file{bison.igz} and @file{bison.inz} will be found and
197decompressed by @code{gunzip}.}.
198
199@item --help
200@itemx -h
201Produces a relatively brief description of the available Info options.
202
203@item --index-search @var{string}
204@cindex index search, selecting from the command line
205@cindex online help, using Info as
206After processing all command-line arguments, go to the index in the Info
207file and search for index entries which match @var{string}.  If such an
208entry is found, the Info session begins with displaying the node pointed
209to by the first matching index entry; press @kbd{,} to step through the
210rest of the matching entries.  If no such entry exists, print @samp{no
211entries found} and exit with nonzero status.  This can be used from
212another program as a way to provide online help, or as a quick way of
213starting to read an Info file at a certain node when you don't know the
214exact name of that node.
215
216This command can also be invoked from inside Info; see @ref{Searching
217Commands}.
218
219@item --node @var{nodename}
220@itemx -n @var{nodename}
221@cindex node, selecting from the command line
222Specify a particular node to visit in the initial file that Info
223loads.  This is especially useful in conjunction with
224@code{--file}@footnote{Of course, you can specify both the file and node
225in a @code{--node} command; but don't forget to escape the open and
226close parentheses and whitespace from the shell as in: @code{info --node
227"(emacs)Buffers"}.}.  You may specify @code{--node} multiple times; for
228an interactive Info, each @var{nodename} is visited in its own window,
229for a non-interactive Info (such as when @code{--output} is given) each
230@var{nodename} is processed sequentially.
231
232@item --output @var{filename}
233@itemx -o @var{filename}
234@cindex file, outputting to
235@cindex outputting to a file
236Specify @var{filename} as the name of a file to which to direct output.
237Each node that Info visits will be output to @var{filename} instead of
238interactively viewed.  A value of @code{-} for @var{filename} specifies
239the standard output.
240
241@cindex colors in documents
242@cindex ANSI escape sequences in documents
243@item --raw-escapes
244@itemx --no-raw-escapes
245@itemx -R
246Do not remove ANSI escape sequences from documents.  Some versions of
247Groff, the GNU document formatter, produce man pages with ANSI escape
248sequences for bold, italics, and underlined characters, and for
249colorized text.  By default, Info lets those escape sequences pass
250through directly to the terminal.  If your terminal does not support
251these escapes, use @code{--no-raw-escapes} to make Info remove them.
252
253@cindex replaying recorded keystrokes
254@item --restore=@var{dribble-file}
255Read keystrokes from @var{dribble-file}, presumably recorded during
256previous Info session (see the description of the @samp{--dribble}
257option above).  When the keystrokes in the files are all read, Info
258reverts its input to the usual interactive operation.
259
260@anchor{--show-options}
261@cindex command-line options, how to find
262@cindex invocation description, how to find
263@item --show-options
264@itemx --usage
265@itemx -O
266This option causes Info to look for the node that describes how to
267invoke the program and its command-line options, and begin the session
268by displaying that node.  It is provided to make it easier to find the
269most important usage information in a manual without the need to wade
270through complex menu hierarchies.  The effect is similar to the
271@code{M-x goto-invocation} command (@pxref{goto-invocation}) from inside
272Info.
273
274@cindex speech synthesizers
275@item --speech-friendly
276@itemx -b
277On MS-DOS/MS-Windows only, this option causes Info to use standard file
278I/O functions for screen writes.  (By default, Info uses direct writes
279to the video memory on these systems, for faster operation and colored
280display support.)  This allows the speech synthesizers used by blind
281persons to catch the output and convert it to audible speech.
282
283@item --subnodes
284@cindex @code{--subnodes}, command line option
285This option only has meaning when given in conjunction with
286@code{--output}.  It means to recursively output the nodes appearing in
287the menus of each node being output.  Menu items which resolve to
288external Info files are not output, and neither are menu items which are
289members of an index.  Each node is only output once.
290
291@item --version
292@cindex version information
293Prints the version information of Info and exits.
294
295@anchor{--vi-keys}
296@cindex vi-like key bindings
297@cindex Less-like key bindings
298@item --vi-keys
299This option binds functions to keys differently, to emulate the key
300bindings of @code{vi} and Less.  The default key bindings are generally
301modeled after Emacs.
302(@xref{Custom Key Bindings},
303for a more general way of altering GNU Info's key bindings.)
304
305@cindex Info manual location
306@cindex Where is an Info manual?
307@item --where
308@itemx --location
309@itemx -w
310Show the filename that would be read and exit, instead of actually
311reading it and starting Info.
312
313@item @var{menu-item}
314@cindex menu, following
315@anchor{command-line menu items}
316Info treats its remaining arguments as the names of menu items.  The
317first argument is a menu item in the initial node visited (generally
318@code{dir}), the second argument is a menu item in the first argument's
319node, etc.  You can easily move to the node of your choice by specifying
320the menu names which describe the path to that node.  For example,
321
322@example
323info emacs buffers
324@end example
325
326@noindent
327first selects the menu item @samp{Emacs} in the node @samp{(dir)Top},
328and then selects the menu item @samp{Buffers} in the node
329@samp{(emacs)Top}.
330@end table
331
332To avoid searching the @file{dir} files and just show some arbitrary
333file, use @samp{-f} and the filename, as in @samp{info -f ./foo.info}.
334
335The index search and the search for the node which describes program
336invocation and command-line options begins @emph{after} processing all
337the command-line menu items.  Therefore, the Info file searched for the
338index or the invocation node is the file where Info finds itself after
339following all the menu items given on the command line.  This is so
340@samp{info emacs --show-options} does what you'd expect.
341
342@c FIXME: the feature with lowercasing the file name isn't documented
343
344
345@node Cursor Commands
346@chapter Moving the Cursor
347@cindex cursor, moving
348@cindex moving the cursor
349
350Many people find that reading screens of text page by page is made
351easier when one is able to indicate particular pieces of text with
352some kind of pointing device.  Since this is the case, GNU Info (both
353the Emacs and standalone versions) have several commands which allow
354you to move the cursor about the screen.  The notation used in this
355manual to describe keystrokes is identical to the notation used within
356the Emacs manual, and the GNU Readline manual.  @xref{User Input,,,
357emacs, the GNU Emacs Manual}, if you are unfamiliar with the
358notation.@footnote{Here's a short summary.  @kbd{C-@var{x}} means
359press the @kbd{CTRL} key and the key @var{x}.  @kbd{M-@var{x}} means
360press the @kbd{META} key and the key @var{x}.  On many terminals th
361@kbd{META} key is known as the @kbd{ALT} key.  @kbd{SPC} is the space
362bar.  The other keys are usually called by the names imprinted on
363them.}
364
365The following table lists the basic cursor movement commands in Info.
366Each entry consists of the key sequence you should type to execute the
367cursor movement, the @code{M-x}@footnote{@code{M-x} is also a command; it
368invokes @code{execute-extended-command}.  @xref{M-x, , Executing an
369extended command, emacs, the GNU Emacs Manual}, for more detailed
370information.} command name (displayed in parentheses), and a short
371description of what the command does.  All of the cursor motion commands
372can take a @dfn{numeric} argument (see @ref{Miscellaneous Commands,
373@code{universal-argument}, to find out how to supply them}.  With a
374numeric argument, the motion commands are simply executed that
375many times; for example, a numeric argument of 4 given to
376@code{next-line} causes the cursor to move down 4 lines.  With a
377negative numeric argument, the motion is reversed; an argument of -4
378given to the @code{next-line} command would cause the cursor to move
379@emph{up} 4 lines.
380
381@table @asis
382@item @key{C-n} (@code{next-line})
383@itemx @key{DOWN} (an arrow key)
384@kindex C-n
385@kindex DOWN (an arrow key)
386@findex next-line
387Move the cursor down to the next line.
388
389@item @key{C-p} (@code{prev-line})
390@itemx @key{UP} (an arrow key)
391@kindex C-p
392@kindex UP (an arrow key)
393@findex prev-line
394Move the cursor up to the previous line.
395
396@item @key{C-a} (@code{beginning-of-line})
397@itemx @key{Home} (on DOS/Windows only)
398@kindex C-a, in Info windows
399@kindex Home
400@findex beginning-of-line
401Move the cursor to the start of the current line.
402
403@item @key{C-e} (@code{end-of-line})
404@itemx @key{End} (on DOS/Windows only)
405@kindex C-e, in Info windows
406@kindex End
407@findex end-of-line
408Move the cursor to the end of the current line.
409
410@item @key{C-f} (@code{forward-char})
411@itemx @key{RIGHT} (an arrow key)
412@kindex C-f, in Info windows
413@kindex RIGHT (an arrow key)
414@findex forward-char
415Move the cursor forward a character.
416
417@item @key{C-b} (@code{backward-char})
418@itemx @key{LEFT} (an arrow key)
419@kindex C-b, in Info windows
420@kindex LEFT (an arrow key)
421@findex backward-char
422Move the cursor backward a character.
423
424@item @key{M-f} (@code{forward-word})
425@itemx @kbd{C-@key{RIGHT}} (on DOS/Windows only)
426@kindex M-f, in Info windows
427@kindex C-RIGHT
428@findex forward-word
429Move the cursor forward a word.
430
431@item @key{M-b} (@code{backward-word})
432@itemx @kbd{C-@key{LEFT}} (on DOS/Windows only)
433@kindex M-b, in Info windows
434@kindex C-LEFT
435@findex backward-word
436Move the cursor backward a word.
437
438@item @key{M-<} (@code{beginning-of-node})
439@itemx @key{C-@key{Home}} (on DOS/Windows only)
440@itemx @key{b}
441@itemx @key{M-b}, vi-like operation
442@kindex b, in Info windows
443@kindex M-<
444@kindex C-Home
445@kindex M-b, vi-like operation
446@findex beginning-of-node
447Move the cursor to the start of the current node.
448
449@item @key{M->} (@code{end-of-node})
450@itemx @key{C-@key{End}} (on DOS/Windows only)
451@itemx @key{e}
452@kindex M->
453@kindex e, in Info windows
454@kindex C-End
455@findex end-of-node
456Move the cursor to the end of the current node.
457
458@item @key{M-r} (@code{move-to-window-line})
459@kindex M-r
460@findex move-to-window-line
461Move the cursor to a specific line of the window.  Without a numeric
462argument, @code{M-r} moves the cursor to the start of the line in the
463center of the window.  With a numeric argument of @var{n}, @code{M-r}
464moves the cursor to the start of the @var{n}th line in the window.
465@end table
466
467
468@node Scrolling Commands
469@chapter Moving Text Within a Window
470@cindex scrolling
471
472Sometimes you are looking at a screenful of text, and only part of the
473current paragraph you are reading is visible on the screen.  The
474commands detailed in this section are used to shift which part of the
475current node is visible on the screen.
476
477Scrolling commands are bound differently when @samp{--vi-keys} operation
478is in effect (@pxref{--vi-keys}).  These key bindings are designated
479with ``vi-like operation''.
480
481@table @asis
482@item @key{SPC} (@code{scroll-forward})
483@kindex SPC, in Info windows
484@findex scroll-forward
485Shift the text in this window up.  That is, show more of the node which
486is currently below the bottom of the window.  With a numeric argument,
487show that many more lines at the bottom of the window; a numeric
488argument of 4 would shift all of the text in the window up 4 lines
489(discarding the top 4 lines), and show you four new lines at the bottom
490of the window.  Without a numeric argument, @key{SPC} takes the bottom
491two lines of the window and places them at the top of the window,
492redisplaying almost a completely new screenful of lines.  If you are at
493the end of a node, @key{SPC} takes you to the ``next'' node, so that you can
494read an entire manual from start to finish by repeating @key{SPC}.
495
496The default scroll size is one screen-full, but it can be changed by
497invoking the (@code{scroll-forward-page-only-set-window}) command,
498@samp{z} under @samp{--vi-keys}, with a numeric argument.
499
500@item @key{NEXT} (an arrow key) (@code{scroll-forward-page-only})
501@itemx @key{C-v}
502@itemx @key{C-f}, vi-like operation
503@itemx @key{f}, vi-like operation
504@itemx @key{M-SPC}, vi-like operation
505@kindex NEXT
506@kindex C-v
507@kindex C-f, vi-like operation
508@kindex f, vi-like operation
509@kindex M-SPC, vi-like operation
510@findex scroll-forward-page-only
511Shift the text in this window up.  This is identical to the @key{SPC}
512operation above, except that it never scrolls beyond the end of the
513current node.
514
515@kindex PageDown
516The @key{NEXT} key is known as the @key{PageDown} key on some
517keyboards.
518
519@item @key{z} (@code{scroll-forward-page-only-set-window}, vi-like operation)
520@kindex z, vi-like operation
521@findex scroll-forward-page-only-set-window
522Scroll forward, like with @key{NEXT}, but if a numeric argument is
523specified, it becomes the default scroll size for subsequent
524@code{scroll-forward} and @code{scroll-backward} commands and their
525ilk.
526
527@item @key{DEL} (@code{scroll-backward})
528@kindex DEL, in Info windows
529@findex scroll-backward
530Shift the text in this window down.  The inverse of
531@code{scroll-forward}.
532If you are at the start of a node, @key{DEL} takes you to the
533``previous'' node, so that you can read an entire manual from finish to
534start by repeating @key{DEL}.  The default scroll size can be changed by
535invoking the (@code{scroll-backward-page-only-set-window}) command,
536@samp{w} under @samp{--vi-keys}, with a numeric argument.
537
538@itemx @key{PREVIOUS} (arrow key) (@code{scroll-backward-page-only})
539@itemx @key{PRIOR} (arrow key)
540@itemx @key{M-v}
541@itemx @key{b}, vi-like operation
542@itemx @key{C-b}, vi-like operation
543@kindex PREVIOUS
544@kindex M-v
545@kindex b, vi-like operation
546@kindex C-b, vi-like operation
547@findex scroll-backward-page-only
548Shift the text in this window down.  The inverse of
549@code{scroll-forward-page-only}.  Does not scroll beyond the start of
550the current node.  The default scroll size can be changed by invoking
551the(@code{scroll-backward-page-only-set-window}) command, @samp{w} under
552@samp{--vi-keys}, with a numeric argument.
553
554@item @key{w} (@code{scroll-backward-page-only-set-window}, vi-like operation)
555@kindex w, vi-like operation
556@findex scroll-backward-page-only-set-window
557Scroll backward, like with @key{PREVIOUS}, but if a numeric argument is
558specified, it becomes the default scroll size for subsequent
559@code{scroll-forward} and @code{scroll-backward} commands.
560
561@item @key{C-n} (@code{down-line}, vi-like operation)
562@itemx @key{C-e}, vi-like operation
563@itemx @key{RET}, vi-like operation
564@itemx @key{LFD}, vi-like operation
565@itemx @key{DOWN}, vi-like operation
566@kindex C-n, vi-like operation
567@kindex C-e, vi-like operation
568@kindex RET, vi-like operation
569@kindex LFD, vi-like operation
570@kindex DOWN, vi-like operation
571@findex down-line
572Scroll forward by one line.  With a numeric argument, scroll forward
573that many lines.
574
575@item @key{C-p} (@code{up-line}, vi-like operation)
576@itemx @key{UP}, vi-like operation
577@itemx @key{y}, vi-like operation
578@itemx @key{k}, vi-like operation
579@itemx @key{C-k}, vi-like operation
580@itemx @key{C-y}, vi-like operation
581@kindex C-p, vi-like operation
582@kindex UP, vi-like operation
583@kindex y, vi-like operation
584@kindex k, vi-like operation
585@kindex C-k, vi-like operation
586@kindex C-y, vi-like operation
587@findex up-line
588Scroll backward one line.  With a numeric argument, scroll backward that
589many lines.
590
591@item @key{d} (@code{scroll-half-screen-down}, vi-like operation)
592@itemx @key{C-d}, vi-like operation
593@kindex d, vi-like operation
594@kindex C-d, vi-like operation
595@findex scroll-half-screen-down
596Scroll forward by half of the screen size.  With a numeric argument,
597scroll that many lines.  If an argument is specified, it becomes the new
598default number of lines to scroll for subsequent @samp{d} and @samp{u}
599commands.
600
601@item @key{u} (@code{scroll-half-screen-up}, vi-like operation)
602@itemx @key{C-u}, vi-like operation
603@kindex u, vi-like operation
604@kindex C-u, vi-like operation
605@findex scroll-half-screen-up
606Scroll back by half of the screen size.  With a numeric argument,
607scroll that many lines.  If an argument is specified, it becomes the new
608default number of lines to scroll for subsequent @samp{u} and @samp{d}
609commands.
610@end table
611
612@cindex scrolling through node structure
613The @code{scroll-forward} and @code{scroll-backward} commands can also
614move forward and backward through the node structure of the file.  If
615you press @key{SPC} while viewing the end of a node, or @key{DEL} while
616viewing the beginning of a node, what happens is controlled by the
617variable @code{scroll-behavior}.  @xref{Variables,
618@code{scroll-behavior}}, for more information.
619
620The @code{scroll-forward-page-only} and @code{scroll-backward-page-only}
621commands never scroll beyond the current node.
622
623@kindex PageUp
624The @key{PREVIOUS} key is the @key{PageUp} key on many keyboards.  Emacs
625refers to it by the name @key{PRIOR}.  When you use @key{PRIOR} or
626@key{PageUp} to scroll, Info never scrolls beyond the beginning of the
627current node.
628
629@kindex BS (backspace)
630If your keyboard lacks the @key{DEL} key, look for a key called
631@key{BS}, or @samp{BackSpace}, sometimes designated with an arrow which
632points to the left, which should perform the same function.
633
634@table @asis
635@item @key{C-l} (@code{redraw-display})
636@kindex C-l
637@findex redraw-display
638Redraw the display from scratch, or shift the line containing the cursor
639to a specified location.  With no numeric argument, @samp{C-l} clears
640the screen, and then redraws its entire contents.  Given a numeric
641argument of @var{n}, the line containing the cursor is shifted so that
642it is on the @var{n}th line of the window.
643
644@item @kbd{C-x @key{w}} (@code{toggle-wrap})
645@kindex C-w
646@findex toggle-wrap
647Toggles the state of line wrapping in the current window.  Normally,
648lines which are longer than the screen width @dfn{wrap}, i.e., they are
649continued on the next line.  Lines which wrap have a @samp{\} appearing
650in the rightmost column of the screen.  You can cause such lines to be
651terminated at the rightmost column by changing the state of line
652wrapping in the window with @code{C-x w}.  When a line which needs more
653space than one screen width to display is displayed, a @samp{$} appears
654in the rightmost column of the screen, and the remainder of the line is
655invisible.  When long lines are truncated, the modeline displays the
656@samp{$} character near its left edge.
657@end table
658
659
660@node Node Commands
661@chapter Selecting a Node
662@cindex nodes, selection of
663
664This section details the numerous Info commands which select a new node
665to view in the current window.
666
667The most basic node commands are @samp{n}, @samp{p}, @samp{u}, and
668@samp{l}.  Note that the commands to select nodes are mapped differently
669when @samp{--vi-keys} is in effect; these keybindings are designated
670below as ``vi-like operation''.
671
672When you are viewing a node, the top line of the node contains some Info
673@dfn{pointers} which describe where the next, previous, and up nodes
674are.  Info uses this line to move about the node structure of the file
675when you use the following commands:
676
677@table @asis
678@item @key{n} (@code{next-node})
679@itemx @kbd{C-@key{NEXT}} (on DOS/Windows only)
680@itemx @kbd{C-x @key{n}}, vi-like operation
681@kindex n
682@kindex C-NEXT
683@kindex C-x n, vi-like operation
684@findex next-node
685Select the `Next' node.
686
687@kindex C-PgDn
688The @key{NEXT} key is known as the @key{PgDn} key on some
689keyboards.
690
691@item @key{p} (@code{prev-node})
692@itemx @kbd{C-@key{PREVIOUS}} (on DOS/Windows only)
693@kindex p
694@kindex C-PREVIOUS
695@findex prev-node
696Select the `Prev' node.
697
698@kindex C-PgUp
699The @key{PREVIOUS} key is known as the @key{PgUp} key on some
700keyboards.
701
702@item @key{u} (@code{up-node})
703@itemx @kbd{C-@key{UP}} (an arrow key on DOS/Windows only)
704@itemx @kbd{C-x @key{u}}, vi-like operation
705@kindex u
706@kindex C-UP
707@kindex C-x u, vi-like operation
708@findex up-node
709Select the `Up' node.
710@end table
711
712You can easily select a node that you have already viewed in this window
713by using the @samp{l} command---this name stands for ``last'', and
714actually moves backwards through the history of visited nodes for this
715window.  This is handy when you followed a reference to another node,
716possibly to read about a related issue, and would like then to resume
717reading at the same place where you started the excursion.
718
719Each node where you press @samp{l} is discarded from the history.  Thus,
720by the time you get to the first node you visited in a window, the
721entire history of that window is discarded.
722
723@table @asis
724@item @key{l} (@code{history-node})
725@itemx @key{C-@key{CENTER}} (on DOS/Windows only)
726@itemx @key{'}, vi-like operation
727@kindex l
728@kindex C-CENTER
729@kindex ', vi-like operation
730@findex history-node
731Pop the most recently selected node in this window from the node
732history.
733@end table
734
735Two additional commands make it easy to select the most commonly
736selected nodes; they are @samp{t} and @samp{d}.
737
738@table @asis
739@item @key{t} (@code{top-node})
740@itemx @key{M-t}, vi-like operation
741@kindex t
742@kindex M-t, vi-like operation
743@findex top-node
744Select the node @samp{Top} in the current Info file.
745
746@item @key{d} (@code{dir-node})
747@itemx @key{M-d}, vi-like operation
748@kindex d
749@kindex M-d, vi-like operation
750@findex dir-node
751Select the directory node (i.e., the node @samp{(dir)}).
752@end table
753
754Here are some other commands which immediately result in the selection
755of a different node in the current window:
756
757@table @asis
758@item @key{<} (@code{first-node})
759@itemx @key{g}, vi-like operation
760@kindex <
761@kindex g, vi-like operation
762@findex first-node
763Selects the first node which appears in this file.  This node is most
764often @samp{Top}, but it does not have to be.  With a numeric argument
765@var{N}, select the @var{N}th node (the first node is node 1).  An
766argument of zero is the same as the argument of 1.
767
768@item @key{>} (@code{last-node})
769@itemx @key{G}, vi-like operation
770@kindex >
771@kindex G, vi-like operation
772@findex last-node
773Select the last node which appears in this file.  With a numeric argument
774@var{N}, select the @var{N}th node (the first node is node 1).  An
775argument of zero is the same as no argument, i.e., it selects the last
776node.
777
778@item @key{]} (@code{global-next-node})
779@kindex ]
780@findex global-next-node
781Move forward or down through node structure.  If the node that you are
782currently viewing has a @samp{Next} pointer, that node is selected.
783Otherwise, if this node has a menu, the first menu item is selected.  If
784there is no @samp{Next} and no menu, the same process is tried with the
785@samp{Up} node of this node.
786
787@item @key{[} (@code{global-prev-node})
788@kindex [
789@findex global-prev-node
790Move backward or up through node structure.  If the node that you are
791currently viewing has a @samp{Prev} pointer, that node is selected.
792Otherwise, if the node has an @samp{Up} pointer, that node is selected,
793and if it has a menu, the last item in the menu is selected.
794@end table
795
796You can get the same behavior as @code{global-next-node} and
797@code{global-prev-node} while simply scrolling through the file with
798@key{SPC} and @key{DEL}; @xref{Variables, @code{scroll-behavior}}, for
799more information.
800
801@table @asis
802@anchor{goto-node}
803@item @key{g} (@code{goto-node})
804@itemx @kbd{C-x @key{g}}, vi-like operation
805@kindex g
806@kindex C-x g, vi-like operation
807@findex goto-node
808Read the name of a node and select it.  While reading the node name,
809completion (@pxref{The Echo Area, completion}) is only done for the
810nodes which reside in one of the Info files that were loaded in the
811current Info session; if the desired node resides in some other file,
812you must type the node exactly as it appears in that Info file, and you
813must include the Info file of the other file.  For example,
814
815@example
816@code{g(emacs)Buffers}
817@end example
818
819finds the node @samp{Buffers} in the Info file @file{emacs}.
820
821@anchor{goto-invocation}
822@item @key{O} (@code{goto-invocation}
823@itemx @key{I}
824@kindex O
825@kindex I
826@findex goto-invocation
827@cindex finding the Invocation node
828Read the name of a program and look for a node in the current Info file
829which describes the invocation and the command-line options for that
830program.  The default program name is derived from the name of the
831current Info file.  This command does the same as the
832@samp{--show-options} command-line option (@pxref{--show-options}), but
833it also allows to specify the program name; this is important for those
834manuals which describe several programs.
835
836If you need to find the Invocation node of a program that is documented
837in another Info file, you need to visit that file before invoking
838@samp{I}.  For example, if you are reading the Emacs manual and want to
839see the command-line options of the @code{makeinfo} program, type @kbd{g
840(texinfo) @key{RET}} and then @kbd{I makeinfo @key{RET}}.  If you don't
841know what Info file documents the command, or if invoking @samp{I}
842doesn't display the right node, go to the @samp{(dir)} node (using the
843@samp{d} command) and invoke @samp{I} from there.
844
845@item @key{G} (@code{menu-sequence})
846@kindex G
847@findex menu-sequence
848@cindex menu, following, from inside Info
849Read a sequence of menu entries and follow it.  Info prompts for a
850sequence of menu items separated by commas.  (Since commas are not
851allowed in a node name, they are a natural choice for a delimiter in a
852list of menu items.)  Info then looks up the first item in the menu of
853the node @samp{(dir)} (if the @samp{(dir)} node cannot be found, Info
854uses @samp{Top}).  If such an entry is found, Info goes to the node it
855points to and looks up the second item in the menu of that node, etc.
856In other words, you can specify a complete path which descends through
857the menu hierarchy of a particular Info file starting at the
858@samp{(dir)} node.  This has the same effect as if you typed the menu
859item sequence on Info's command line, see @ref{command-line menu items,,
860Info command-line arguments processing}.  For example,
861
862@example
863 @kbd{G Texinfo,Overview,Reporting Bugs @key{RET}}
864@end example
865
866@noindent
867displays the node @samp{Reporting Bugs} in the Texinfo manual.  (You
868don't actually need to type the menu items in their full length, or in
869their exact letter-case.  However, if you do type the menu items
870exactly, Info will find it faster.)
871
872If any of the menu items you type are not found, Info stops at the last
873entry it did find and reports an error.
874
875@item @kbd{C-x @key{k}} (@code{kill-node})
876@kindex C-x k
877@findex kill-node
878Kill a node.  The node name is prompted for in the echo area, with a
879default of the current node.  @dfn{Killing} a node means that Info tries
880hard to forget about it, removing it from the list of history nodes kept
881for the window where that node is found.  Another node is selected in
882the window which contained the killed node.
883
884@item @kbd{C-x C-f} (@code{view-file})
885@kindex C-x C-f
886@findex view-file
887Read the name of a file and selects the entire file.  The command
888@example
889@code{C-x C-f @var{filename}}
890@end example
891is equivalent to typing
892@example
893@code{g(@var{filename})*}
894@end example
895
896@item @kbd{C-x C-b} (@code{list-visited-nodes})
897@kindex C-x C-b
898@findex list-visited-nodes
899Make a window containing a menu of all of the currently visited nodes.
900This window becomes the selected window, and you may use the standard
901Info commands within it.
902
903@item @kbd{C-x @key{b}} (@code{select-visited-node})
904@kindex C-x b
905@findex select-visited-node
906Select a node which has been previously visited in a visible window.
907This is similar to @samp{C-x C-b} followed by @samp{m}, but no window is
908created.
909@end table
910
911
912@node Searching Commands
913@chapter Searching an Info File
914@cindex searching
915
916GNU Info allows you to search for a sequence of characters throughout an
917entire Info file, search through the indices of an Info file, or find
918areas within an Info file which discuss a particular topic.
919
920@table @asis
921@item @key{s} (@code{search})
922@itemx @key{/}
923@kindex s
924@kindex /
925@findex search
926Read a string in the echo area and search for it.  If the string
927includes upper-case characters, the Info file is searched
928case-sensitively; otherwise Info ignores the letter case.  With a
929numeric argument of @var{N}, search for @var{N}th occurrence of the
930string.  Negative arguments search backwards.
931
932@item @key{?} (@code{search-backward}, vi-like operation)
933@kindex ?, vi-like operation
934@findex search-backward
935Read a string in the echo area and search backward through the Info file
936for that string.  If the string includes upper-case characters, the Info
937file is searched case-sensitively; otherwise Info ignores the letter
938case.  With a numeric argument of @var{N}, search for @var{N}th
939occurrence of the string.  Negative arguments search forward.
940
941@item @key{S} (@code{search-case-sensitively}
942@kindex S
943@findex search-case-sensitively
944@cindex search, case-sensitive
945@cindex case-sensitive search
946Read a string in the echo area and search for it case-sensitively, even
947if the string includes only lower-case letters.  With a numeric argument
948of @var{N}, search for @var{N}th occurrence of the string.  Negative
949arguments search backwards.
950
951@item @kbd{C-x @key{n}} (@code{search-next})
952@itemx @key{n}, vi-like operation
953@kindex C-x n
954@kindex n, vi-like operation
955@findex search-next
956@cindex repeated search
957Search for the same string used in the last search command, in the same
958direction, and with the same case-sensitivity option.  With a numeric
959argument of @var{N}, search for @var{N}th next occurrence.
960
961@item @kbd{C-x @key{N}} (@code{search-previous})
962@itemx @key{N}, vi-like operation
963@kindex C-x N
964@kindex n, vi-like operation
965@findex search-previous
966Search for the same string used in the last search command, and with the
967same case-sensitivity option, but in the reverse direction.  With a
968numeric argument of @var{N}, search for @var{N}th previous occurrence.
969
970@item @key{C-s} (@code{isearch-forward})
971@kindex C-s
972@findex isearch-forward
973@cindex incremental search
974Interactively search forward through the Info file for a string as you
975type it.  If the string includes upper-case characters, the search is
976case-sensitive; otherwise Info ignores the letter case.
977
978@item @key{C-r} (@code{isearch-backward})
979@kindex C-r
980@findex isearch-backward
981Interactively search backward through the Info file for a string as
982you type it.  If the string includes upper-case characters, the search
983is case-sensitive; otherwise Info ignores the letter case.
984
985@item @key{i} (@code{index-search})
986@kindex i
987@findex index-search
988@cindex index, searching
989@cindex searching, in the indices
990Look up a string in the indices for this Info file, and select a node
991to which the found index entry points.
992
993@item @key{,} (@code{next-index-match})
994@kindex ,
995@findex next-index-match
996Move to the node containing the next matching index item from the last
997@samp{i} command.
998
999@item @kbd{M-x index-apropos}
1000@findex index-apropos
1001Grovel the indices of all the known Info files on your system for a
1002string, and build a menu of the possible matches.
1003@end table
1004
1005The most basic searching command is @samp{s} or @samp{/}
1006(@code{search}).  The @samp{s} command prompts you for a string in the
1007echo area, and then searches the remainder of the Info file for an
1008occurrence of that string.  If the string is found, the node containing
1009it is selected, and the cursor is left positioned at the start of the
1010found string.  Subsequent @samp{s} commands show you the default search
1011string within @samp{[} and @samp{]}; pressing @key{RET} instead of
1012typing a new string will use the default search string.  Under
1013@samp{--vi-keys} (@pxref{--vi-keys}), using the @samp{n} or @samp{N}
1014commands is a faster way of searching for the same string.
1015
1016@dfn{Incremental searching} is similar to basic searching, but the
1017string is looked up while you are typing it, instead of waiting until
1018the entire search string has been specified.
1019
1020@cindex search, and case-sensitivity
1021@cindex case-sensitivity, and search
1022Both incremental and non-incremental search by default ignore the case
1023of letters when comparing the Info file text with the search string.
1024However, an uppercase letter in the search string makes the search
1025case-sensitive.  You can force a case-sensitive non-incremental search,
1026even for a string that includes only lower-case letters, by using the
1027@samp{S} command (@code{search-case-sensitively}).  The @samp{n} and
1028@samp{N} commands operate case-sensitively if the last search command
1029was @samp{S}.
1030
1031The most efficient means of finding something quickly in a manual is
1032the @samp{i} command (@code{index-search}).  This command prompts for
1033a string, and then looks for that string in all the indices of the
1034current Info manual.  If it finds a matching index entry, it displays
1035the node to which that entry refers and prints the full text of the
1036entry in the echo area.  You can press @samp{,}
1037(@code{next-index-match}) to find more matches.  A good Info manual
1038has all of its important concepts indexed, so the @samp{i} command
1039lets you use a manual as a reference.
1040
1041If you don't know what manual documents something, try the @kbd{M-x
1042index-apropos} command.  It prompts for a string and then looks up
1043that string in all the indices of all the Info documents installed on
1044your system.  It can also be invoked from the command line; see
1045@ref{--apropos}.
1046
1047
1048@node Xref Commands
1049@chapter Selecting Cross References
1050
1051We have already discussed the @samp{Next}, @samp{Prev}, and @samp{Up}
1052pointers which appear at the top of a node.  In addition to these
1053pointers, a node may contain other pointers which refer you to a
1054different node, perhaps in another Info file.  Such pointers are called
1055@dfn{cross references}, or @dfn{xrefs} for short.
1056
1057@menu
1058* Parts of an Xref::            What a cross reference is made of.
1059* Selecting Xrefs::             Commands for selecting menu or note items.
1060@end menu
1061
1062@node Parts of an Xref
1063@section Parts of an Xref
1064
1065Cross references have two major parts: the first part is called the
1066@dfn{label}; it is the name that you can use to refer to the cross
1067reference, and the second is the @dfn{target}; it is the full name of
1068the node that the cross reference points to.
1069
1070The target is separated from the label by a colon @samp{:}; first the
1071label appears, and then the target.  For example, in the sample menu
1072cross reference below, the single colon separates the label from the
1073target.
1074
1075@example
1076* Foo Label: Foo Target.        More information about Foo.
1077@end example
1078
1079Note the @samp{.} which ends the name of the target.  The @samp{.} is
1080not part of the target; it serves only to let Info know where the target
1081name ends.
1082
1083A shorthand way of specifying references allows two adjacent colons to
1084stand for a target name which is the same as the label name:
1085
1086@example
1087* Foo Commands::                Commands pertaining to Foo.
1088@end example
1089
1090In the above example, the name of the target is the same as the name of
1091the label, in this case @code{Foo Commands}.
1092
1093You will normally see two types of cross reference while viewing nodes:
1094@dfn{menu} references, and @dfn{note} references.  Menu references
1095appear within a node's menu; they begin with a @samp{*} at the beginning
1096of a line, and continue with a label, a target, and a comment which
1097describes what the contents of the node pointed to contains.
1098
1099Note references appear within the body of the node text; they begin with
1100@code{*Note}, and continue with a label and a target.
1101
1102Like @samp{Next}, @samp{Prev}, and @samp{Up} pointers, cross references
1103can point to any valid node.  They are used to refer you to a place
1104where more detailed information can be found on a particular subject.
1105Here is a cross reference which points to a node within the Texinfo
1106documentation:  @xref{xref, , Writing an Xref, texinfo, the Texinfo
1107Manual}, for more information on creating your own texinfo cross
1108references.
1109
1110@node Selecting Xrefs
1111@section Selecting Xrefs
1112
1113The following table lists the Info commands which operate on menu items.
1114
1115@table @asis
1116@item @key{1} (@code{menu-digit})
1117@itemx @key{2} @dots{} @key{9}
1118@itemx @key{M-1}, vi-like operation
1119@itemx @key{M-2} @dots{} @key{M-9}, vi-like operation
1120@cindex 1 @dots{} 9, in Info windows
1121@cindex M-1 @dots{} M-9, vi-like operation
1122@kindex 1 @dots{} 9, in Info windows
1123@kindex M-1 @dots{} M-9, vi-like operation
1124@findex menu-digit
1125Within an Info window, pressing a single digit, (such as @samp{1}),
1126selects that menu item, and places its node in the current window.
1127For convenience, there is one exception; pressing @samp{0} selects the
1128@emph{last} item in the node's menu.  When @samp{--vi-keys} is in
1129effect, digits set the numeric argument, so these commands are remapped
1130to their @samp{M-} varieties.  For example, to select the last menu
1131item, press @key{M-0}.
1132
1133@item @key{0} (@code{last-menu-item})
1134@itemx @key{M-0}, vi-like operation
1135@kindex 0, in Info windows
1136@kindex M-0, vi-like operation
1137@findex last-menu-item
1138Select the last item in the current node's menu.
1139
1140@item @key{m} (@code{menu-item})
1141@kindex m
1142@findex menu-item
1143Reads the name of a menu item in the echo area and selects its node.
1144Completion is available while reading the menu label.  @xref{The Echo
1145Area, completion}.
1146
1147@item @kbd{M-x find-menu}
1148@findex find-menu
1149Move the cursor to the start of this node's menu.
1150@end table
1151
1152This table lists the Info commands which operate on cross references.
1153
1154@table @asis
1155@item @key{f} (@code{xref-item})
1156@itemx @key{r}
1157@item @key{M-f}, vi-like operation
1158@itemx @kbd{C-x @key{r}}, vi-like operation
1159@kindex f
1160@kindex r
1161@kindex M-f, vi-like operation
1162@kindex C-x r, vi-like operation
1163@findex xref-item
1164Reads the name of a note cross reference in the echo area and selects
1165its node.  Completion is available while reading the cross reference
1166label.  @xref{The Echo Area, completion}.
1167@end table
1168
1169Finally, the next few commands operate on menu or note references alike:
1170
1171@table @asis
1172@item @key{TAB} (@code{move-to-next-xref})
1173@kindex TAB, in Info windows
1174@findex move-to-next-xref
1175Move the cursor to the start of the next nearest menu item or note
1176reference in this node.  You can then use @key{RET}
1177(@code{select-reference-this-line}) to select the menu or note reference.
1178
1179@item @key{M-TAB} (@code{move-to-prev-xref})
1180@itemx @key{Shift-@key{TAB}} (on DOS/Windows only)
1181@kindex M-TAB, in Info windows
1182@findex move-to-prev-xref
1183Move the cursor the start of the nearest previous menu item or note
1184reference in this node.
1185
1186@kindex Shift-TAB, in Info windows
1187@kindex BackTab, in Info windows
1188On DOS/Windows only, the @kbd{Shift-@key{TAB}} key is an alias for
1189@kbd{M-@key{TAB}}.  This key is sometimes called @samp{BackTab}.
1190
1191@item @key{RET} (@code{select-reference-this-line})
1192@itemx @key{M-g}, vi-like operation
1193@kindex RET, in Info windows
1194@kindex M-g, vi-like operation
1195@findex select-reference-this-line
1196Select the menu item or note reference appearing on this line.
1197@end table
1198
1199
1200@node Window Commands
1201@chapter Manipulating Multiple Windows
1202@cindex windows, manipulating
1203
1204A @dfn{window} is a place to show the text of a node.  Windows have a
1205view area where the text of the node is displayed, and an associated
1206@dfn{mode line}, which briefly describes the node being viewed.
1207
1208GNU Info supports multiple windows appearing in a single screen; each
1209window is separated from the next by its modeline.  At any time, there
1210is only one @dfn{active} window, that is, the window in which the cursor
1211appears.  There are commands available for creating windows, changing
1212the size of windows, selecting which window is active, and for deleting
1213windows.
1214
1215@menu
1216* The Mode Line::               What appears in the mode line?
1217* Basic Windows::               Manipulating windows in Info.
1218* The Echo Area::               Used for displaying errors and reading input.
1219@end menu
1220
1221@node The Mode Line
1222@section The Mode Line
1223
1224A @dfn{mode line} is a line of inverse video which appears at the bottom
1225of an Info window.  It describes the contents of the window just above
1226it; this information includes the name of the file and node appearing in
1227that window, the number of screen lines it takes to display the node,
1228and the percentage of text that is above the top of the window.  It can
1229also tell you if the indirect tags table for this Info file needs to be
1230updated, and whether or not the Info file was compressed when stored on
1231disk.
1232
1233Here is a sample mode line for a window containing an uncompressed file
1234named @file{dir}, showing the node @samp{Top}.
1235
1236@example
1237@group
1238-----Info: (dir)Top, 40 lines --Top-------------------------------------
1239            ^^   ^   ^^^        ^^
1240          (file)Node #lines    where
1241@end group
1242@end example
1243
1244When a node comes from a file which is compressed on disk, this is
1245indicated in the mode line with two small @samp{z}'s.  In addition, if
1246the Info file containing the node has been split into subfiles, the name
1247of the subfile containing the node appears in the modeline as well:
1248
1249@example
1250--zz-Info: (emacs)Top, 291 lines --Top-- Subfile: emacs-1.Z-------------
1251@end example
1252
1253Truncation of long lines (as opposed to wrapping them to the next
1254display line, @pxref{Scrolling Commands, toggle-wrap}) is indicated by a
1255@samp{$} at the left edge of the mode line:
1256
1257@example
1258--$--Info: (texinfo)Top, 480 lines --Top-- Subfile: texinfo-1-----------
1259@end example
1260
1261When Info makes a node internally, such that there is no corresponding
1262info file on disk, the name of the node is surrounded by asterisks
1263(@samp{*}).  The name itself tells you what the contents of the window
1264are; the sample mode line below shows an internally constructed node
1265showing possible completions:
1266
1267@example
1268-----Info: *Completions*, 7 lines --All---------------------------------
1269@end example
1270
1271@node Basic Windows
1272@section Window Commands
1273
1274It can be convenient to view more than one node at a time.  To allow
1275this, Info can display more than one @dfn{window}.  Each window has its
1276own mode line (@pxref{The Mode Line}) and history of nodes viewed in that
1277window (@pxref{Node Commands, , @code{history-node}}).
1278
1279@table @asis
1280@item @kbd{C-x @key{o}} (@code{next-window})
1281@cindex windows, selecting
1282@kindex C-x o
1283@findex next-window
1284Select the next window on the screen.  Note that the echo area can only be
1285selected if it is already in use, and you have left it temporarily.
1286Normally, @samp{C-x o} simply moves the cursor into the next window on
1287the screen, or if you are already within the last window, into the first
1288window on the screen.  Given a numeric argument, @samp{C-x o} moves over
1289that many windows.  A negative argument causes @samp{C-x o} to select
1290the previous window on the screen.
1291
1292@item @kbd{M-x prev-window}
1293@findex prev-window
1294Select the previous window on the screen.  This is identical to
1295@samp{C-x o} with a negative argument.
1296
1297@item @kbd{C-x @key{2}} (@code{split-window})
1298@cindex windows, creating
1299@kindex C-x 2
1300@findex split-window
1301Split the current window into two windows, both showing the same node.
1302Each window is one half the size of the original window, and the cursor
1303remains in the original window.  The variable @code{automatic-tiling}
1304can cause all of the windows on the screen to be resized for you
1305automatically (@pxref{Variables, , automatic-tiling}).
1306
1307@item @kbd{C-x @key{0}} (@code{delete-window})
1308@cindex windows, deleting
1309@kindex C-x 0
1310@findex delete-window
1311Delete the current window from the screen.  If you have made too many
1312windows and your screen appears cluttered, this is the way to get rid of
1313some of them.
1314
1315@item @kbd{C-x @key{1}} (@code{keep-one-window})
1316@kindex C-x 1
1317@findex keep-one-window
1318Delete all of the windows excepting the current one.
1319
1320@item @kbd{ESC @key{C-v}} (@code{scroll-other-window})
1321@kindex ESC C-v, in Info windows
1322@findex scroll-other-window
1323Scroll the other window, in the same fashion that @samp{C-v} might
1324scroll the current window.  Given a negative argument, scroll the
1325``other'' window backward.
1326
1327@item @kbd{C-x @key{^}} (@code{grow-window})
1328@kindex C-x ^
1329@findex grow-window
1330Grow (or shrink) the current window.  Given a numeric argument, grow
1331the current window that many lines; with a negative numeric argument,
1332shrink the window instead.
1333
1334@item @kbd{C-x @key{t}} (@code{tile-windows})
1335@cindex tiling
1336@kindex C-x t
1337@findex tile-windows
1338Divide the available screen space among all of the visible windows.
1339Each window is given an equal portion of the screen in which to display
1340its contents.  The variable @code{automatic-tiling} can cause
1341@code{tile-windows} to be called when a window is created or deleted.
1342@xref{Variables, , @code{automatic-tiling}}.
1343@end table
1344
1345@node The Echo Area
1346@section The Echo Area
1347@cindex echo area
1348
1349The @dfn{echo area} is a one line window which appears at the bottom of
1350the screen.  It is used to display informative or error messages, and to
1351read lines of input from you when that is necessary.  Almost all of the
1352commands available in the echo area are identical to their Emacs
1353counterparts, so please refer to that documentation for greater depth of
1354discussion on the concepts of editing a line of text.  The following
1355table briefly lists the commands that are available while input is being
1356read in the echo area:
1357
1358@table @asis
1359@item @key{C-f} (@code{echo-area-forward})
1360@itemx @key{RIGHT} (an arrow key)
1361@itemx @key{M-h}, vi-like operation
1362@kindex C-f, in the echo area
1363@kindex RIGHT, in the echo area
1364@kindex M-h, in the echo area, vi-like operation
1365@findex echo-area-forward
1366Move forward a character.
1367
1368@item @key{C-b} (@code{echo-area-backward})
1369@itemx @key{LEFT} (an arrow key)
1370@itemx @key{M-l}, vi-like operation
1371@kindex LEFT, in the echo area
1372@kindex C-b, in the echo area
1373@kindex M-l, in the echo area, vi-like operation
1374@findex echo-area-backward
1375Move backward a character.
1376
1377@item @key{C-a} (@code{echo-area-beg-of-line})
1378@itemx @key{M-0}, vi-like operation
1379@kindex C-a, in the echo area
1380@kindex M-0, in the echo area, vi-like operation
1381@findex echo-area-beg-of-line
1382Move to the start of the input line.
1383
1384@item @key{C-e} (@code{echo-area-end-of-line})
1385@itemx @key{M-$}, vi-like operation
1386@kindex C-e, in the echo area
1387@kindex M-$, vi-like operation
1388@findex echo-area-end-of-line
1389Move to the end of the input line.
1390
1391@item @key{M-f} (@code{echo-area-forward-word})
1392@itemx @key{C-@key{RIGHT}} (DOS/Windows only)
1393@itemx @key{M-w}, vi-like operation
1394@kindex M-f, in the echo area
1395@kindex M-w, in the echo area, vi-like operation
1396@findex echo-area-forward-word
1397Move forward a word.
1398
1399@kindex C-RIGHT, in the echo area
1400On DOS/Windows, @kbd{C-@key{RIGHT}} moves forward by words.
1401
1402@item @key{M-b} (@code{echo-area-backward-word})
1403@itemx @key{C-@key{LEFT}} (DOS/Windows only)
1404@kindex M-b, in the echo area
1405@findex echo-area-backward-word
1406Move backward a word.
1407
1408@kindex C-LEFT, in the echo area
1409On DOS/Windows, @kbd{C-@key{LEFT}} moves backward by words.
1410
1411@item @key{C-d} (@code{echo-area-delete})
1412@itemx @key{M-x}, vi-like operation
1413@kindex C-d, in the echo area
1414@kindex M-x, in the echo area, vi-like operation
1415@findex echo-area-delete
1416Delete the character under the cursor.
1417
1418@item @key{DEL} (@code{echo-area-rubout})
1419@kindex DEL, in the echo area
1420@findex echo-area-rubout
1421Delete the character behind the cursor.
1422
1423On some keyboards, this key is designated @key{BS}, for
1424@samp{BackSpace}.  Those keyboards will usually bind @key{DEL} in the
1425echo area to @code{echo-area-delete}.
1426
1427@item @key{C-g} (@code{echo-area-abort})
1428@itemx @key{C-u}, vi-like operation
1429@kindex C-g, in the echo area
1430@kindex C-u, in the echo area, vi-like operation
1431@findex echo-area-abort
1432Cancel or quit the current operation.  If completion is being read, this
1433command discards the text of the input line which does not match any
1434completion.  If the input line is empty, it aborts the calling function.
1435
1436@item @key{RET} (@code{echo-area-newline})
1437@kindex RET, in the echo area
1438@findex echo-area-newline
1439Accept (or forces completion of) the current input line.
1440
1441@item @key{C-q} (@code{echo-area-quoted-insert})
1442@itemx @key{C-v}, vi-like operation
1443@kindex C-q, in the echo area
1444@kindex C-v, in the echo area, vi-like operation
1445@findex echo-area-quoted-insert
1446Insert the next character verbatim.  This is how you can insert control
1447characters into a search string, for example, or the @samp{?} character
1448when Info prompts with completion.
1449
1450@item @var{printing character} (@code{echo-area-insert})
1451@kindex printing characters, in the echo area
1452@findex echo-area-insert
1453Insert the character.  Characters that have their 8th bit set, and not
1454bound to @samp{M-} commands, are also inserted verbatim; this is useful
1455for terminals which support Latin scripts.
1456
1457@item @key{M-TAB} (@code{echo-area-tab-insert})
1458@itemx @key{Shift-@key{TAB}} (on DOS/Windows only)
1459@kindex M-TAB, in the echo area
1460@kindex Shift-TAB, in the echo area
1461@findex echo-area-tab-insert
1462Insert a TAB character.
1463
1464@kindex Shift-TAB, in the echo area
1465@kindex BackTab, in the echo area
1466On DOS/Windows only, the @kbd{Shift-@key{TAB}} key is an alias for
1467@kbd{M-@key{TAB}}.  This key is sometimes called @samp{BackTab}.
1468
1469@item @key{C-t} (@code{echo-area-transpose-chars})
1470@kindex C-t, in the echo area
1471@findex echo-area-transpose-chars
1472Transpose the characters at the cursor.
1473@end table
1474
1475The next group of commands deal with @dfn{killing}, and @dfn{yanking}
1476text@footnote{
1477Some people are used to calling these operations @dfn{cut} and
1478@dfn{paste}, respectively.}.   For an in-depth discussion of killing and
1479yanking, see @ref{Killing, , Killing and Deleting, emacs, the GNU Emacs
1480Manual}.
1481
1482@table @asis
1483@item @key{M-d} (@code{echo-area-kill-word})
1484@itemx @key{M-X}, vi-like operation
1485@kindex M-d, in the echo area
1486@kindex M-X, in the echo area, vi-like operation
1487@findex echo-area-kill-word
1488Kill the word following the cursor.
1489
1490@item @key{M-DEL} (@code{echo-area-backward-kill-word})
1491@itemx @key{M-@key{BS}}
1492@kindex M-DEL, in the echo area
1493@findex echo-area-backward-kill-word
1494Kill the word preceding the cursor.
1495
1496@kindex M-BS, in the echo area
1497On some keyboards, the @code{Backspace} key is used instead of
1498@code{DEL}, so @code{M-@key{Backspace}} has the same effect as
1499@code{M-@key{DEL}}.
1500
1501@item @key{C-k} (@code{echo-area-kill-line})
1502@kindex C-k, in the echo area
1503@findex echo-area-kill-line
1504Kill the text from the cursor to the end of the line.
1505
1506@item @kbd{C-x @key{DEL}} (@code{echo-area-backward-kill-line})
1507@kindex C-x DEL, in the echo area
1508@findex echo-area-backward-kill-line
1509Kill the text from the cursor to the beginning of the line.
1510
1511@item @key{C-y} (@code{echo-area-yank})
1512@kindex C-y, in the echo area
1513@findex echo-area-yank
1514Yank back the contents of the last kill.
1515
1516@item @key{M-y} (@code{echo-area-yank-pop})
1517@kindex M-y, in the echo area
1518@findex echo-area-yank-pop
1519Yank back a previous kill, removing the last yanked text first.
1520@end table
1521
1522@cindex completion
1523Sometimes when reading input in the echo area, the command that needed
1524input will only accept one of a list of several choices.  The choices
1525represent the @dfn{possible completions}, and you must respond with one
1526of them.  Since there are a limited number of responses you can make,
1527Info allows you to abbreviate what you type, only typing as much of the
1528response as is necessary to uniquely identify it.  In addition, you can
1529request Info to fill in as much of the response as is possible; this
1530is called @dfn{completion}.
1531
1532The following commands are available when completing in the echo area:
1533
1534@table @asis
1535@item @key{TAB} (@code{echo-area-complete})
1536@itemx @key{SPC}
1537@kindex TAB, in the echo area
1538@kindex SPC, in the echo area
1539@findex echo-area-complete
1540Insert as much of a completion as is possible.
1541
1542@item @key{?} (@code{echo-area-possible-completions})
1543@kindex ?, in the echo area
1544@findex echo-area-possible-completions
1545Display a window containing a list of the possible completions of what
1546you have typed so far.  For example, if the available choices are:
1547
1548@example
1549@group
1550bar
1551foliate
1552food
1553forget
1554@end group
1555@end example
1556
1557@noindent
1558and you have typed an @samp{f}, followed by @samp{?}, Info will pop up a
1559window showing a node called @samp{*Completions*} which lists the
1560possible completions like this:
1561
1562@example
1563@group
15643 completions:
1565foliate         food
1566forget
1567@end group
1568@end example
1569
1570@noindent
1571i.e., all of the choices which begin with @samp{f}.  Pressing @key{SPC}
1572or @key{TAB} would result in @samp{fo} appearing in the echo area, since
1573all of the choices which begin with @samp{f} continue with @samp{o}.
1574Now, typing @samp{l} followed by @samp{TAB} results in @samp{foliate}
1575appearing in the echo area, since that is the only choice which begins
1576with @samp{fol}.
1577
1578@item @key{ESC C-v} (@code{echo-area-scroll-completions-window})
1579@kindex ESC C-v, in the echo area
1580@findex echo-area-scroll-completions-window
1581Scroll the completions window, if that is visible, or the ``other''
1582window if not.
1583@end table
1584
1585
1586@node Printing Nodes
1587@chapter Printing Nodes
1588@cindex printing
1589
1590In general, we recommend that you use @TeX{} to format the document and
1591print sections of it, by running @code{tex} on the Texinfo source file.
1592However, you may wish to print out the contents of a node as a quick
1593reference document for later use, or if you don't have @TeX{} installed.
1594Info provides you with a command for doing this.
1595
1596@table @asis
1597@item @kbd{M-x print-node}
1598@findex print-node
1599@cindex INFO_PRINT_COMMAND, environment variable
1600Pipe the contents of the current node through the command in the
1601environment variable @code{INFO_PRINT_COMMAND}.  If the variable does not
1602exist, the node is simply piped to @code{lpr} (on DOS/Windows, the
1603default is to print the node to the local printer device, @file{PRN}).
1604
1605@cindex printing nodes to the local printer
1606@cindex local printer device
1607The value of @code{INFO_PRINT_COMMAND} may begin with the @samp{>}
1608character, as in @samp{>/dev/printer}, in which case Info treats the
1609rest as the name of a file or a device.  Instead of piping to a command,
1610Info opens the file, writes the node contents, and closes the file,
1611under the assumption that text written to that file will be printed by
1612the underlying OS.
1613@end table
1614
1615
1616@node Miscellaneous Commands
1617@chapter Miscellaneous Commands
1618
1619GNU Info contains several commands which self-document GNU Info:
1620
1621@table @asis
1622@item @kbd{M-x describe-command}
1623@cindex functions, describing
1624@cindex commands, describing
1625@findex describe-command
1626Read the name of an Info command in the echo area and then display a
1627brief description of what that command does.
1628
1629@item @kbd{M-x describe-key}
1630@cindex keys, describing
1631@findex describe-key
1632Read a key sequence in the echo area, and then display the name and
1633documentation of the Info command that the key sequence invokes.
1634
1635@item @kbd{M-x describe-variable}
1636Read the name of a variable in the echo area and then display a brief
1637description of what the variable affects.
1638
1639@item @kbd{M-x where-is}
1640@findex where-is
1641Read the name of an Info command in the echo area, and then display
1642a key sequence which can be typed in order to invoke that command.
1643
1644@item @key{C-h} (@code{get-help-window})
1645@itemx @key{?}
1646@itemx @key{F1} (on DOS/Windows only)
1647@itemx h, vi-like operation
1648@kindex C-h
1649@kindex ?, in Info windows
1650@kindex F1
1651@kindex h, vi-like operation
1652@findex get-help-window
1653Create (or Move into) the window displaying @code{*Help*}, and place
1654a node containing a quick reference card into it.  This window displays
1655the most concise information about GNU Info available.
1656
1657@item @key{h} (@code{get-info-help-node})
1658@itemx @key{M-h}, vi-like operation
1659@kindex h
1660@kindex M-h, vi-like operation
1661@findex get-info-help-node
1662Try hard to visit the node @code{(info)Help}.  The Info file
1663@file{info.texi} distributed with GNU Info contains this node.  Of
1664course, the file must first be processed with @code{makeinfo}, and then
1665placed into the location of your Info directory.
1666@end table
1667
1668Here are the commands for creating a numeric argument:
1669
1670@table @asis
1671@item @key{C-u} (@code{universal-argument})
1672@cindex numeric arguments
1673@kindex C-u
1674@findex universal-argument
1675Start (or multiply by 4) the current numeric argument.  @samp{C-u} is
1676a good way to give a small numeric argument to cursor movement or
1677scrolling commands; @samp{C-u C-v} scrolls the screen 4 lines, while
1678@samp{C-u C-u C-n} moves the cursor down 16 lines.  @samp{C-u} followed
1679by digit keys sets the numeric argument to the number thus typed:
1680@kbd{C-u 1 2 0} sets the argument to 120.
1681
1682@item @key{M-1} (@code{add-digit-to-numeric-arg})
1683@itemx @key{1}, vi-like operation
1684@itemx @key{M-2} @dots{} @key{M-9}
1685@itemx @key{2} @dots{} @key{9}, vi-like operation
1686@itemx @key{M-0}
1687@itemx @key{0}, vi-like operation
1688@kindex M-0 @dots{} M-9
1689@kindex 0 @dots{} 9, vi-like operation
1690@findex add-digit-to-numeric-arg
1691Add the digit value of the invoking key to the current numeric
1692argument.  Once Info is reading a numeric argument, you may just type
1693the digits of the argument, without the Meta prefix.  For example, you
1694might give @samp{C-l} a numeric argument of 32 by typing:
1695
1696@example
1697@kbd{C-u 3 2 C-l}
1698@end example
1699
1700@noindent
1701or
1702
1703@example
1704@kbd{M-3 2 C-l}
1705@end example
1706
1707@item @key{M--} (@code{add-digit-to-numeric-arg}
1708@itemx @key{-}
1709@kindex M--
1710@kindex -
1711@cindex negative arguments
1712@cindex arguments, negative
1713@cindex numeric arguments, negative
1714To make a negative argument, type @kbd{-}.  Typing @kbd{-} alone makes a
1715negative argument with a value of -1.  If you continue to type digit or
1716Meta-digit keys after @kbd{-}, the result is a negative number produced
1717by those digits.
1718
1719@kbd{-} doesn't work when you type in the echo area, because you need to
1720be able to insert the @samp{-} character itself; use @kbd{M--} instead,
1721if you need to specify negative arguments in the echo area.
1722@end table
1723
1724@samp{C-g} is used to abort the reading of a multi-character key
1725sequence, to cancel lengthy operations (such as multi-file searches) and
1726to cancel reading input in the echo area.
1727
1728@table @asis
1729@item @key{C-g} (@code{abort-key})
1730@itemx @key{C-u}, vi-like operation
1731@cindex cancelling typeahead
1732@cindex cancelling the current operation
1733@kindex C-g, in Info windows
1734@kindex C-u cancels typeahead, vi-like operation
1735@findex abort-key
1736Cancel current operation.
1737@end table
1738
1739The @samp{q} command of Info simply quits running Info.  Under
1740@samp{--vi-keys} (@pxref{--vi-keys}), you can also exit with @samp{:q}
1741or @samp{ZZ}.
1742
1743@table @asis
1744@item @key{q} (@code{quit})
1745@itemx @kbd{C-x C-c}
1746@itemx @kbd{:q}, vi-like operation
1747@itemx @kbd{ZZ}, vi-like operation
1748@cindex quitting
1749@kindex q
1750@kindex C-x C-c
1751@kindex ZZ, vi-like operation
1752@findex quit
1753Exit GNU Info.
1754@end table
1755
1756If the operating system tells GNU Info that the screen is 60 lines tall,
1757and it is actually only 40 lines tall, here is a way to tell Info that
1758the operating system is correct.
1759
1760@table @asis
1761@item @kbd{M-x set-screen-height}
1762@findex set-screen-height
1763@cindex screen, changing the height of
1764Read a height value in the echo area and set the height of the
1765displayed screen to that value.
1766@end table
1767
1768On MS-DOS/MS-Windows, this command actually tries to change the
1769dimensions of the visible screen to the value you type in the echo
1770area.
1771
1772Finally, Info provides a convenient way to display footnotes which might
1773be associated with the current node that you are viewing:
1774
1775@table @asis
1776@item @key{ESC C-f} (@code{show-footnotes})
1777@kindex ESC C-f
1778@findex show-footnotes
1779@cindex footnotes, displaying
1780Show the footnotes (if any) associated with the current node in another
1781window.  You can have Info automatically display the footnotes
1782associated with a node when the node is selected by setting the variable
1783@code{automatic-footnotes}.  @xref{Variables, , @code{automatic-footnotes}}.
1784@end table
1785
1786
1787@node Variables
1788@chapter Manipulating Variables
1789
1790GNU Info contains several @dfn{variables} whose values are looked at by
1791various Info commands.  You can change the values of these variables,
1792and thus change the behavior of Info to more closely match your
1793environment and Info file reading manner.
1794
1795There are two ways to set the value of a variable: interactively, using
1796the @code{set-variable} command described below, or in the @code{#var}
1797section of the @code{.infokey} file.  @xref{Custom Key Bindings}.
1798
1799@table @asis
1800@item @kbd{M-x set-variable}
1801@cindex variables, setting
1802@findex set-variable
1803Read the name of a variable, and the value for it, in the echo area and
1804then set the variable to that value.  Completion is available when
1805reading the variable name (@pxref{The Echo Area, completion}); often,
1806completion is available when reading the value to give to the variable,
1807but that depends on the variable itself.  If a variable does @emph{not}
1808supply multiple choices to complete over, it expects a numeric value.
1809
1810@item @kbd{M-x describe-variable}
1811@cindex variables, describing
1812@findex describe-variable
1813Read the name of a variable in the echo area and then display a brief
1814description of what the variable affects.
1815@end table
1816
1817Here is a list of the variables that you can set in Info.
1818
1819@table @code
1820@item automatic-footnotes
1821@vindex automatic-footnotes
1822When set to @code{On}, footnotes appear and disappear automatically;
1823else, they appear at the bottom of the node text.  This variable is
1824@code{Off} by default.  When a node is selected, a window containing
1825the footnotes which appear in that node is created, and the footnotes
1826are displayed within the new window.  The window that Info creates to
1827contain the footnotes is called @samp{*Footnotes*}.  If a node is
1828selected which contains no footnotes, and a @samp{*Footnotes*} window
1829is on the screen, the @samp{*Footnotes*} window is deleted.  Footnote
1830windows created in this fashion are not automatically tiled so that
1831they can use as little of the display as is possible.
1832
1833@item automatic-tiling
1834@vindex automatic-tiling
1835When set to @code{On}, creating or deleting a window resizes other
1836windows.  This variable is @code{Off} by default.  Normally, typing
1837@samp{C-x 2} divides the current window into two equal parts.  When
1838@code{automatic-tiling} is set to @code{On}, all of the windows are
1839resized automatically, keeping an equal number of lines visible in each
1840window.  There are exceptions to the automatic tiling; specifically, the
1841windows @samp{*Completions*} and @samp{*Footnotes*} are @emph{not}
1842resized through automatic tiling; they remain their original size.
1843
1844@item errors-ring-bell
1845@vindex errors-ring-bell
1846When set to @code{On}, errors cause the bell to ring.  The default
1847setting of this variable is @code{On}.
1848
1849@item gc-compressed-files
1850@vindex gc-compressed-files
1851When set to @code{On}, Info garbage collects files which had to be
1852uncompressed.  The default value of this variable is @code{Off}.
1853Whenever a node is visited in Info, the Info file containing that node
1854is read into core, and Info reads information about the tags and nodes
1855contained in that file.  Once the tags information is read by Info, it
1856is never forgotten.  However, the actual text of the nodes does not need
1857to remain in core unless a particular Info window needs it.  For
1858non-compressed files, the text of the nodes does not remain in core when
1859it is no longer in use.  But de-compressing a file can be a time
1860consuming operation, and so Info tries hard not to do it twice.
1861@code{gc-compressed-files} tells Info it is okay to garbage collect the
1862text of the nodes of a file which was compressed on disk.
1863
1864@item ISO-Latin
1865@cindex ISO Latin characters
1866@vindex ISO-Latin
1867When set to @code{On}, Info accepts and displays ISO Latin characters.
1868By default, Info assumes an ASCII character set.  @code{ISO-Latin} tells
1869Info that it is running in an environment where the European standard
1870character set is in use, and allows you to input such characters to
1871Info, as well as display them.
1872
1873@item scroll-behavior
1874@vindex scroll-behavior
1875Control what happens when forward scrolling is requested at the end of
1876a node, or when backward scrolling is requested at the beginning of a
1877node.  The default value for this variable is @code{Continuous}.  There
1878are three possible values for this variable:
1879
1880@table @code
1881@item Continuous
1882Try to get the first item in this node's menu, or failing that, the
1883@samp{Next} node, or failing that, the @samp{Next} of the @samp{Up}.
1884This behavior is identical to using the @samp{]}
1885(@code{global-next-node}) and @samp{[} (@code{global-prev-node})
1886commands.
1887
1888@item Next Only
1889Only try to get the @samp{Next} node.
1890
1891@item Page Only
1892Simply give up, changing nothing.  If @code{scroll-behavior} is
1893@code{Page Only}, no scrolling command can change the node that is being
1894viewed.
1895@end table
1896
1897@item scroll-step
1898@vindex scroll-step
1899The number of lines to scroll when the cursor moves out of the window.
1900Scrolling happens automatically if the cursor has moved out of the
1901visible portion of the node text when it is time to display.  Usually
1902the scrolling is done so as to put the cursor on the center line of the
1903current window.  However, if the variable @code{scroll-step} has a
1904nonzero value, Info attempts to scroll the node text by that many lines;
1905if that is enough to bring the cursor back into the window, that is what
1906is done.  The default value of this variable is 0, thus placing the
1907cursor (and the text it is attached to) in the center of the window.
1908Setting this variable to 1 causes a kind of ``smooth scrolling'' which
1909some people prefer.
1910
1911@item show-index-match
1912@vindex show-index-match
1913When set to @code{On}, the portion of the matched search string is
1914highlighted in the message which explains where the matched search
1915string was found.  The default value of this variable is @code{On}.
1916When Info displays the location where an index match was found,
1917(@pxref{Searching Commands, , @code{next-index-match}}), the portion of the
1918string that you had typed is highlighted by displaying it in the inverse
1919case from its surrounding characters.
1920
1921@item visible-bell
1922@vindex visible-bell
1923When set to @code{On}, GNU Info attempts to flash the screen instead of
1924ringing the bell.  This variable is @code{Off} by default.  Of course,
1925Info can only flash the screen if the terminal allows it; in the case
1926that the terminal does not allow it, the setting of this variable has no
1927effect.  However, you can make Info perform quietly by setting the
1928@code{errors-ring-bell} variable to @code{Off}.
1929
1930@end table
1931
1932
1933@node Custom Key Bindings
1934@chapter Customizing Key Bindings and Variables
1935
1936@cindex default key bindings, overriding
1937@cindex overriding default key bindings
1938@cindex customizing key bindings
1939@cindex key bindings, customizing
1940@cindex infokey
1941@cindex .info
1942@cindex .infokey
1943@cindex _info file (MS-DOS)
1944
1945For those whose editor/pager of choice is not Emacs and who are not
1946entirely satisfied with the --vi-keys option (@pxref{--vi-keys}), GNU
1947Info provides a way to define different key-to-command bindings and
1948variable settings from the defaults described in this document.
1949
1950On startup, GNU Info looks for a configuration file in the invoker's
1951HOME directory called @file{.info}@footnote{Due to the limitations of
1952DOS filesystems, the MS-DOS version of Info looks for a file
1953@file{_info} instead.  If the @env{HOME} variable is not defined, Info
1954additionally looks in the current directory.}.  If it is present, and
1955appears to contain Info configuration data, and was created with the
1956current version of the @code{infokey} command, then Info adopts the
1957key bindings and variable settings contained therein.
1958
1959The @file{.info} file contains compact, non-textual data for reasons of
1960efficiency and because its design was lifted wholesale from the GNU Less
1961program, which also does it that way.  It must be created by compiling a
1962textual source file using the @code{infokey} command.
1963
1964@menu
1965* Invoking infokey::
1966* infokey source format::
1967@end menu
1968
1969
1970@node Invoking infokey
1971@section Invoking @command{infokey}
1972
1973@cindex invoking infokey
1974@cindex infokey, invoking
1975@cindex _infokey file (MS-DOS)
1976
1977@command{infokey} compiles a source file
1978(@file{$HOME/.infokey}@footnote{This file is named @file{_infokey} in
1979the MS-DOS version, and is looked for in the current directory if
1980@env{HOME} is undefined.} by default) containing Info customizations
1981into a binary format (@file{$HOME/.info} by default).  GNU Info reads
1982the binary file at startup to override the default key bindings and
1983variable definitions.  Synopsis:
1984
1985@example
1986infokey [@var{option}@dots{}] [@var{input-file}]
1987@end example
1988
1989Besides the standard @option{--help} and @option{--version}, the only
1990option is @option{--output @var{file}}.  This tells @command{infokey} to
1991write the binary data to @var{file} instead of @file{$HOME/.info}.
1992
1993
1994@node infokey source format
1995@section @command{infokey} source format
1996
1997@cindex infokey source format
1998@cindex .infokey source format
1999@cindex format of .infokey source
2000
2001The format of the source file read by @command{infokey} is most easily
2002illustrated by example.  For instance, here is a sample @file{.infokey}
2003source file suitable for aficionados of @command{vi} or @command{less}:
2004
2005@example
2006#info
2007j       next-line
2008k       prev-line
2009l       forward-char
2010h       backward-char
2011\kd     next-line
2012\ku     prev-line
2013\kr     forward-char
2014\kl     backward-char
2015\       scroll-forward
2016\kD     scroll-forward-page-only
2017b       scroll-backward
2018\kU     scroll-backward-page-only
2019g       beginning-of-node
2020\kh     beginning-of-node
2021G       end-of-node
2022\ke     end-of-node
2023\t      select-reference-this-line
2024-       history-node
2025n       next-node
2026p       prev-node
2027u       up-node
2028t       top-node
2029d       dir-node
2030#var
2031scroll-step=1
2032@end example
2033
2034The source file consists of one or more @dfn{sections}.
2035Each section starts with a line that identifies the type of section.
2036Possible sections are:
2037
2038@table @code
2039@item #info
2040Key bindings for Info windows.
2041The start of this section is indicated by a line containing just
2042@code{#info} by itself.  If this is the first section in the source
2043file, the @code{#info} line can be omitted.  The rest of this section
2044consists of lines of the form:
2045
2046@example
2047@var{string} whitespace @var{action} [ whitespace [ # comment ] ] newline
2048@end example
2049
2050Whitespace is any sequence of one or more spaces and/or tabs.  Comment
2051is any sequence of any characters, excluding newline.  @var{string} is
2052the key sequence which invokes the action.  @var{action} is the name of
2053an Info command.  The characters in @var{string} are interpreted
2054literally or prefixed by a caret (@code{^}) to indicate a control
2055character.  A backslash followed by certain characters specifies input
2056keystrokes as follows:
2057
2058@table @code
2059@item \b
2060Backspace
2061@item \e
2062Escape (ESC)
2063@item \n
2064Newline
2065@item \r
2066Return
2067@item \t
2068Tab
2069@item \ku
2070Up arrow
2071@item \kd
2072Down arrow
2073@item \kl
2074Left arrow
2075@item \kr
2076Right arrow
2077@item \kU
2078Page Up
2079@item \kD
2080Page Down
2081@item \kh
2082HOME
2083@item \ke
2084END
2085@item \kx
2086Delete (DEL)
2087@item \m@var{x}
2088Meta-@var{x} where @var{x} is any character as described above.
2089@end table
2090
2091Backslash followed by any other character indicates that character is to
2092be taken literally.  Characters which must be preceded by a backslash
2093include caret, space, tab, and backslash itself.
2094
2095@item #echo-area
2096Key bindings for the echo area.
2097The start of this section is indicated by a line containing just
2098@code{#echo-area} by itself.  The rest of this section has a syntax
2099identical to that for the key definitions for the Info area, described
2100above.
2101
2102@item #var
2103Variable initializations.
2104The start of this section is indicated by a line containing just
2105@code{#var} by itself.  Following this line is a list of variable
2106assignments, one per line.  Each line consists of a variable name
2107(@xref{Variables},) followed by @code{=} followed by a value.
2108There may be no white space between the variable name and the @code{=},
2109and all characters following the @code{=}, including white space,
2110are included in the value.
2111@end table
2112
2113Blank lines and lines starting with @code{#} are ignored, except for
2114the special section header lines.
2115
2116Key bindings defined in the @file{.info} file take precedence over GNU
2117Info's default key bindings, whether or not @samp{--vi-keys} is used.  A
2118default key binding may be disabled by overriding it in the @file{.info}
2119file with the action @code{invalid}.  In addition, @emph{all} default
2120key bindings can be disabled by adding this line @emph{anywhere} in the
2121relevant section:
2122
2123@example
2124#stop
2125@end example
2126
2127This will cause GNU Info to ignore all the default key commands for that
2128section.
2129
2130Beware: @code{#stop} can be dangerous.  Since it disables all default
2131key bindings, you must supply enough new key bindings to enable all
2132necessary actions.  Failure to bind any key to the @code{quit} command,
2133for example, can lead to frustration.
2134
2135The order in which key bindings are defined in the @file{.info} file is
2136not important, except that the command summary produced by the
2137@code{get-help-window} command only displays the @emph{first} key that
2138is bound to each command.
2139
2140
2141@c the following is incomplete
2142@ignore
2143@c node Info for Sys Admins
2144@c chapter Info for System Administrators
2145
2146This text describes some common ways of setting up an Info hierarchy
2147from scratch, and details the various options that are available when
2148installing Info.  This text is designed for the person who is installing
2149GNU Info on the system; although users may find the information present
2150in this section interesting, none of it is vital to understanding how to
2151use GNU Info.
2152
2153@menu
2154* Setting the INFOPATH::        Where are my Info files kept?
2155* Editing the DIR node::        What goes in `DIR', and why?
2156* Storing Info files::          Alternate formats allow flexibility in setups.
2157* Using `localdir'::            Building DIR on the fly.
2158* Example setups::              Some common ways to organize Info files.
2159@end menu
2160
2161@c node Setting the INFOPATH
2162@c section Setting the INFOPATH
2163
2164Where are my Info files kept?
2165
2166@c node Editing the DIR node
2167@c section Editing the DIR node
2168
2169What goes in `DIR', and why?
2170
2171@c node Storing Info files
2172@c section Storing Info files
2173
2174Alternate formats allow flexibility in setups.
2175
2176@c node Using `localdir'
2177@c section Using `localdir'
2178
2179Building DIR on the fly.
2180
2181@c node Example setups
2182@c section Example setups
2183
2184Some common ways to organize Info files.
2185@end ignore
2186
2187
2188@node Copying This Manual
2189@appendix Copying This Manual
2190
2191@menu
2192* GNU Free Documentation License::  License for copying this manual.
2193@end menu
2194
2195@include fdl.texi
2196
2197
2198@node Index
2199@appendix Index
2200
2201@printindex cp
2202
2203@bye
2204