1819 строки
62 KiB
Plaintext
1819 строки
62 KiB
Plaintext
\input texinfo @c -*-texinfo-*-
|
|
@c %**start of header
|
|
@setfilename nano.info
|
|
@settitle nano
|
|
@c %**end of header
|
|
|
|
@documentencoding UTF-8
|
|
|
|
@smallbook
|
|
@set EDITION 0.5
|
|
@set VERSION 4.7
|
|
@set UPDATED December 2019
|
|
|
|
@dircategory Editors
|
|
@direntry
|
|
* nano: (nano). Small and friendly text editor.
|
|
@end direntry
|
|
|
|
@c tex
|
|
@c \overfullrule=0pt
|
|
@c end tex
|
|
|
|
@titlepage
|
|
@title GNU @command{nano}
|
|
@subtitle a small and friendly text editor
|
|
@subtitle version 4.7
|
|
|
|
@author Chris Allegretta
|
|
@page
|
|
|
|
This manual documents the GNU @command{nano} editor.
|
|
@sp 1
|
|
This manual is part of the GNU @command{nano} distribution.@*
|
|
|
|
@sp 4
|
|
Copyright @copyright{} 1999-2009, 2014-2020 Free Software Foundation, Inc.
|
|
|
|
@sp 1
|
|
This document is dual-licensed. You may distribute and/or modify it
|
|
under the terms of either of the following licenses:
|
|
|
|
@sp 1
|
|
* The GNU General Public License, as published by the Free Software
|
|
Foundation, version 3 or (at your option) any later version. You
|
|
should have received a copy of the GNU General Public License along
|
|
with this program. If not, see @url{https://www.gnu.org/licenses/}.
|
|
|
|
@sp 1
|
|
* The GNU Free Documentation License, as published by the Free Software
|
|
Foundation, version 1.2 or (at your option) any later version, with no
|
|
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
|
|
You should have received a copy of the GNU Free Documentation License
|
|
along with this program. If not, see @url{https://www.gnu.org/licenses/}.
|
|
|
|
@sp 1
|
|
You may contact the author by
|
|
e-mail: @email{chrisa@@asty.org}@*
|
|
@end titlepage
|
|
|
|
@ifnottex
|
|
|
|
|
|
@node Top
|
|
@top
|
|
|
|
This manual documents the GNU @command{nano} editor, version 4.7.
|
|
|
|
@menu
|
|
* Introduction::
|
|
* Invoking::
|
|
* Command-line Options::
|
|
* Editor Basics::
|
|
* Built-in Help::
|
|
* Feature Toggles::
|
|
* Nanorc Files::
|
|
* The File Browser::
|
|
* Pico Compatibility::
|
|
* Building and Configure Options::
|
|
@end menu
|
|
|
|
@end ifnottex
|
|
|
|
|
|
@node Introduction
|
|
@chapter Introduction
|
|
|
|
GNU @command{nano} is a small and friendly text editor. Besides
|
|
basic text editing, @command{nano} offers features like undo/redo,
|
|
syntax coloring, interactive search-and-replace, auto-indentation,
|
|
line numbers, word completion, file locking, backup files, and
|
|
internationalization support.
|
|
|
|
The original goal for @command{nano} was to be a complete bug-for-bug
|
|
emulation of Pico. But currently the goal is to be as compatible
|
|
as is reasonable while offering a superset of Pico's functionality.
|
|
@xref{Pico Compatibility} for more details on how @command{nano} and
|
|
Pico differ.
|
|
|
|
Starting with version 4.0, @command{nano} no longer hard-wraps an overlong
|
|
line by default. It further uses smooth scrolling by default, and by
|
|
default includes the line below the title bar into the editing area.
|
|
|
|
If you want the old, Pico behavior back, you can use the
|
|
following options: @option{--breaklonglines},
|
|
@option{--jumpyscrolling}, and @option{--emptyline}
|
|
(or @option{-bje} for short).
|
|
|
|
Please report bugs via @url{https://savannah.gnu.org/bugs/?group=nano}.
|
|
|
|
|
|
@node Invoking
|
|
@chapter Invoking
|
|
|
|
The usual way to invoke @command{nano} is:
|
|
|
|
@iftex
|
|
@sp 1
|
|
@end iftex
|
|
@example
|
|
@code{nano [FILE]}
|
|
@end example
|
|
@iftex
|
|
@sp 1
|
|
@end iftex
|
|
|
|
But it is also possible to specify one or more options (see the next
|
|
section), and to edit several files in a row. Additionally, the cursor
|
|
can be put on a specific line of a file by adding the line number
|
|
with a plus sign before the filename, and even in a specific column by
|
|
adding it with a comma.
|
|
(Negative numbers count from the end of the file or line.)
|
|
The cursor can also be put on the first or last occurrence of a specific string
|
|
by specifying that string after @code{+/} or @code{+?} before the filename.
|
|
The string can be made case sensitive and/or caused to be interpreted as a
|
|
regular expression by inserting a @code{c} and/or @code{r} after the plus sign.
|
|
These search modes can be explicitly disabled by using the uppercase variant
|
|
of those letters: @code{C} and/or @code{R}. When the string contains spaces,
|
|
it needs to be enclosed in quotes.
|
|
A more complete command synopsis thus is:
|
|
|
|
@iftex
|
|
@sp 1
|
|
@end iftex
|
|
@example
|
|
@code{nano [OPTION]@dots{} [[+LINE[,COLUMN]|+[crCR](/|?)STRING] FILE]@dots{}}
|
|
@end example
|
|
@iftex
|
|
@sp 1
|
|
@end iftex
|
|
|
|
Normally, however, you set your preferred options in a @file{nanorc}
|
|
file (@pxref{Nanorc Files}). And when using @code{set positionlog}
|
|
(making @command{nano} remember the cursor position when you close a file),
|
|
you will rarely need to specify a line number.
|
|
|
|
As a special case: when instead of a filename a dash is given, @command{nano}
|
|
will read data from standard input. This means you can pipe the output of
|
|
a command straight into a buffer, and then edit it.
|
|
|
|
|
|
@node Command-line Options
|
|
@chapter Command-line Options
|
|
|
|
@command{nano} takes the following options from the command line:
|
|
|
|
@table @option
|
|
|
|
@item -A
|
|
@itemx --smarthome
|
|
Make the Home key smarter. When Home is pressed anywhere but at the
|
|
very beginning of non-whitespace characters on a line, the cursor will
|
|
jump to that beginning (either forwards or backwards). If the cursor is
|
|
already at that position, it will jump to the true beginning of the
|
|
line.
|
|
|
|
@item -B
|
|
@itemx --backup
|
|
When saving a file, back up the previous version of it, using the current
|
|
filename suffixed with a tilde (@code{~}).
|
|
|
|
@item -C @var{directory}
|
|
@itemx --backupdir=@var{directory}
|
|
Make and keep not just one backup file, but make and keep a uniquely
|
|
numbered one every time a file is saved --- when backups are enabled.
|
|
The uniquely numbered files are stored in the specified directory.
|
|
|
|
@item -D
|
|
@itemx --boldtext
|
|
Use bold text instead of reverse video text.
|
|
|
|
@item -E
|
|
@itemx --tabstospaces
|
|
Convert typed tabs to spaces.
|
|
|
|
@item -F
|
|
@itemx --multibuffer
|
|
Read a file into a new buffer by default.
|
|
|
|
@item -G
|
|
@itemx --locking
|
|
Enable vim-style file locking when editing files.
|
|
|
|
@item -H
|
|
@itemx --historylog
|
|
Save the last hundred search strings and replacement strings and
|
|
executed commands, so they can be easily reused in later sessions.
|
|
|
|
@item -I
|
|
@itemx --ignorercfiles
|
|
Don't look at the system's nanorc file nor at the user's nanorc.
|
|
|
|
@item -J
|
|
@itemx --guidestripe
|
|
Draw a vertical stripe at the given column, to help judge the width of the
|
|
text. (The color of the stripe can be changed with @code{set stripecolor}
|
|
in your nanorc file.)
|
|
|
|
@item -K
|
|
@itemx --rawsequences
|
|
Interpret escape sequences directly (instead of asking @code{ncurses} to
|
|
translate them). If you need this option to get your keyboard to work
|
|
properly, please report a bug. Using this option disables @command{nano}'s
|
|
mouse support.
|
|
|
|
@item -L
|
|
@itemx --nonewlines
|
|
Don't automatically add a newline when a text does not end with one.
|
|
(This can cause you to save non-POSIX text files.)
|
|
|
|
@item -M
|
|
@itemx --trimblanks
|
|
Snip trailing whitespace from the wrapped line when automatic
|
|
hard-wrapping occurs or when text is justified.
|
|
|
|
@item -N
|
|
@itemx --noconvert
|
|
Disable automatic conversion of files from DOS/Mac format.
|
|
|
|
@item -O
|
|
@itemx --morespace
|
|
Obsolete and ignored option, since the line below the title bar is included
|
|
into the editing space by default. If you prefer to keep this line blank,
|
|
use @option{-e} or @option{--emptyline}.
|
|
|
|
@item -P
|
|
@itemx --positionlog
|
|
For the 200 most recent files, log the last position of the cursor,
|
|
and place it at that position again upon reopening such a file.
|
|
|
|
@item -Q "@var{regex}"
|
|
@itemx --quotestr="@var{regex}"
|
|
Set the regular expression for matching the quoting part of a line.
|
|
The default value is @t{"^([@w{ }\t]*([!#%:;>|@}]|//))+"}.
|
|
(Note that @code{\t} stands for a literal Tab character.)
|
|
This makes it possible to rejustify blocks of quoted text when composing
|
|
email, and to rewrap blocks of line comments when writing source code.
|
|
|
|
@item -R
|
|
@itemx --restricted
|
|
Restricted mode: don't read or write to any file not specified on the
|
|
command line. This means: don't read or write history files; don't allow
|
|
suspending; don't allow spell checking; don't
|
|
allow a file to be appended to, prepended to, or saved under a different
|
|
name if it already has one; and don't make backup files.
|
|
Restricted mode can also be activated by invoking @command{nano} with
|
|
any name beginning with @code{r} (e.g.@: @command{rnano}).
|
|
|
|
@item -S
|
|
@itemx --smooth
|
|
Obsolete and ignored option, since smooth scrolling has become the default.
|
|
If you prefer the chunk-by-chunk scrolling behavior,
|
|
use @option{-j} or @option{--jumpyscrolling}.
|
|
|
|
@item -T @var{number}
|
|
@itemx --tabsize=@var{number}
|
|
Set the displayed tab length to @var{number} columns. The value of
|
|
@var{number} must be greater than 0. The default value is @t{8}.
|
|
|
|
@item -U
|
|
@itemx --quickblank
|
|
Do quick status-bar blanking: status-bar messages will disappear after 1
|
|
keystroke instead of 25. Note that option @option{-c}
|
|
(@option{--constantshow}) overrides this.
|
|
|
|
@item -V
|
|
@itemx --version
|
|
Show the current version number and exit.
|
|
|
|
@item -W
|
|
@itemx --wordbounds
|
|
Detect word boundaries differently by treating punctuation
|
|
characters as parts of words.
|
|
|
|
@item -X "@var{characters}"
|
|
@itemx --wordchars="@var{characters}"
|
|
Specify which other characters (besides the normal alphanumeric ones)
|
|
should be considered as parts of words. This overrides option
|
|
@option{-W} (@option{--wordbounds}).
|
|
|
|
@item -Y @var{name}
|
|
@itemx --syntax=@var{name}
|
|
Specify the syntax to be used for highlighting.
|
|
@xref{Syntax Highlighting} for more info.
|
|
|
|
@item -Z
|
|
@itemx --zap
|
|
Let an unmodified @key{Backspace} or @key{Delete} erase the marked region
|
|
(instead of a single character, and without affecting the cutbuffer).
|
|
|
|
@item -a
|
|
@itemx --atblanks
|
|
When doing soft line wrapping, wrap lines at whitespace
|
|
instead of always at the edge of the screen.
|
|
|
|
@item -b
|
|
@itemx --breaklonglines
|
|
Automatically hard-wrap the current line when it becomes overlong.
|
|
(This option is the opposite of @option{-w} (@option{--nowrap}) ---
|
|
the last one given takes effect.)
|
|
|
|
@item -c
|
|
@itemx --constantshow
|
|
Constantly display the cursor position (line number, column number,
|
|
and character number) on the status bar.
|
|
Note that this overrides option @option{-U} (@option{--quickblank}).
|
|
|
|
@item -d
|
|
@itemx --rebinddelete
|
|
Interpret the Delete and Backspace keys differently so that both Backspace
|
|
and Delete work properly. You should only use this option when on your
|
|
system either Backspace acts like Delete or Delete acts like Backspace.
|
|
|
|
@item -e
|
|
@itemx --emptyline
|
|
Do not use the line below the title bar, leaving it entirely blank.
|
|
|
|
@item -f @var{file}
|
|
@itemx --rcfile=@var{file}
|
|
Read only this @var{file} for setting nano's options, instead of reading
|
|
both the system-wide and the user's nanorc files.
|
|
|
|
@item -g
|
|
@itemx --showcursor
|
|
Make the cursor visible in the file browser (putting it on the
|
|
highlighted item) and in the help viewer. Useful for braille users
|
|
and people with poor vision.
|
|
|
|
@item -h
|
|
@itemx --help
|
|
Show a summary of command-line options and exit.
|
|
|
|
@item -i
|
|
@itemx --autoindent
|
|
Automatically indent a newly created line to the same number of tabs
|
|
and/or spaces as the previous line (or as the next line if the previous
|
|
line is the beginning of a paragraph).
|
|
|
|
@item -j
|
|
@itemx --jumpyscrolling
|
|
Scroll the buffer contents per half-screen instead of per line.
|
|
|
|
@item -k
|
|
@itemx --cutfromcursor
|
|
Make the 'Cut Text' command (normally @kbd{^K}) cut from the current cursor
|
|
position to the end of the line, instead of cutting the entire line.
|
|
|
|
@item -l
|
|
@itemx --linenumbers
|
|
Display line numbers to the left of the text area.
|
|
|
|
@item -m
|
|
@itemx --mouse
|
|
Enable mouse support, if available for your system. When enabled, mouse
|
|
clicks can be used to place the cursor, set the mark (with a double
|
|
click), and execute shortcuts. The mouse will work in the X Window
|
|
System, and on the console when gpm is running. Text can still be
|
|
selected through dragging by holding down the Shift key.
|
|
|
|
@item -n
|
|
@itemx --noread
|
|
Treat any name given on the command line as a new file. This allows
|
|
@command{nano} to write to named pipes: it will start with a blank buffer,
|
|
and will write to the pipe when the user saves the "file". This way
|
|
@command{nano} can be used as an editor in combination with for instance
|
|
@command{gpg} without having to write sensitive data to disk first.
|
|
|
|
@item -o @var{directory}
|
|
@itemx --operatingdir=@var{directory}
|
|
Set the operating directory. This makes @command{nano} set up something
|
|
similar to a chroot.
|
|
|
|
@item -p
|
|
@itemx --preserve
|
|
Preserve the @kbd{^Q} (XON) and @kbd{^S} (XOFF) sequences so data being
|
|
sent to the editor can be stopped and started.
|
|
|
|
@item -r @var{number}
|
|
@itemx --fill=@var{number}
|
|
Set the target width for justifying and automatic hard-wrapping at this
|
|
@var{number} of columns. If the value is 0 or less, wrapping will occur
|
|
at the width of the screen minus @var{number} columns, allowing the wrap
|
|
point to vary along with the width of the screen if the screen is resized.
|
|
The default value is @t{-8}.
|
|
|
|
@anchor{@option{--speller}}
|
|
@item -s "@var{program} [@var{arg} @dots{}]"
|
|
@itemx --speller="@var{program} [@var{arg} @dots{}]"
|
|
Use the given program to do spell checking and correcting. By default,
|
|
@command{nano} uses the command specified in the @env{SPELL} environment
|
|
variable. If @env{SPELL} is not set, and @option{--speller} is
|
|
not specified either, then @command{nano} uses its own interactive spell
|
|
corrector, which requires either @command{hunspell} or GNU @command{spell}
|
|
to be installed.
|
|
|
|
@item -t
|
|
@itemx --tempfile
|
|
Don't ask whether to save a modified buffer when exiting with @kbd{^X}, but
|
|
assume yes. This option is useful when @command{nano} is used as the
|
|
composer of a mailer program.
|
|
|
|
@item -u
|
|
@item --unix
|
|
Save a file by default in Unix format. This overrides nano's
|
|
default behavior of saving a file in the format that it had.
|
|
(This option has no effect when you also use @option{--noconvert}.)
|
|
|
|
@item -v
|
|
@itemx --view
|
|
Don't allow the contents of the file to be altered: read-only mode.
|
|
This mode allows the user to open also other files for viewing,
|
|
unless @option{--restricted} is given too.
|
|
(Note that this option should NOT be used in place of correct
|
|
file permissions to implement a read-only file.)
|
|
|
|
@item -w
|
|
@itemx --nowrap
|
|
Do not automatically hard-wrap the current line when it becomes overlong.
|
|
This is the default. (This option is the opposite of @option{-b}
|
|
(@option{--breaklonglines}) --- the last one given takes effect.)
|
|
|
|
|
|
@anchor{Expert Mode}
|
|
@item -x
|
|
@itemx --nohelp
|
|
Expert Mode: don't show the Shortcut List at the bottom of the screen.
|
|
This affects the location of the status bar as well, as in Expert Mode it
|
|
is located at the very bottom of the editor.
|
|
|
|
Note: When accessing the help system, Expert Mode is temporarily
|
|
disabled to display the help-system navigation keys.
|
|
|
|
@item -y
|
|
@itemx --afterends
|
|
Make Ctrl+Right stop at word ends instead of beginnings.
|
|
|
|
@item -z
|
|
@itemx --suspend
|
|
Enable the ability to suspend @command{nano} using the system's suspend
|
|
keystroke (usually @kbd{^Z}).
|
|
|
|
@item -$
|
|
@itemx --softwrap
|
|
Enable 'soft wrapping'. This will make @command{nano} attempt to display the
|
|
entire contents of any line, even if it is longer than the screen width, by
|
|
continuing it over multiple screen lines. Since
|
|
@code{$} normally refers to a variable in the Unix shell, you should specify
|
|
this option last when using other options (e.g.@: @code{nano -wS$}) or pass it
|
|
separately (e.g.@: @code{nano -wS -$}).
|
|
|
|
@end table
|
|
|
|
|
|
@node Editor Basics
|
|
@chapter Editor Basics
|
|
|
|
@menu
|
|
* Entering Text::
|
|
* Commands::
|
|
* The Cutbuffer::
|
|
* The Mark::
|
|
* Screen Layout::
|
|
* Search and Replace::
|
|
* Using the Mouse::
|
|
* Limitations::
|
|
@end menu
|
|
|
|
@node Entering Text
|
|
@section Entering Text
|
|
|
|
@command{nano} is a "modeless" editor. This means that all keystrokes,
|
|
with the exception of Control and Meta sequences, enter text into the
|
|
file being edited.
|
|
|
|
Characters not present on the keyboard can be entered in two ways:
|
|
|
|
@itemize @bullet
|
|
@item
|
|
For characters with a single-byte code,
|
|
pressing the Esc key twice and then typing a three-digit decimal number
|
|
(from @kbd{000} to @kbd{255}) will make @command{nano} behave as if you
|
|
typed the key with that value.
|
|
|
|
@item
|
|
For any possible character, pressing @kbd{M-V} (Alt+V) and then typing a
|
|
six-digit hexadecimal number (starting with @kbd{0} or @kbd{1}) will enter the
|
|
corresponding Unicode character into the buffer.
|
|
@end itemize
|
|
|
|
For example, typing @kbd{Esc Esc 2 3 4} will enter the character "ê" ---
|
|
useful when writing about a French party. Typing @kbd{M-V 0 0 2 2 c 4}
|
|
will enter the symbol "⋄", a little diamond.
|
|
|
|
@node Commands
|
|
@section Commands
|
|
|
|
Commands are given by using the Control key (Ctrl, shown as @kbd{^})
|
|
or the Meta key (Alt or Cmd, shown as @kbd{M-}).
|
|
|
|
@itemize @bullet
|
|
@item
|
|
A control-key sequence is entered by holding down the Ctrl key and
|
|
pressing the desired key.
|
|
|
|
@item
|
|
A meta-key sequence is entered by holding down the Meta key (normally
|
|
the Alt key) and pressing the desired key.
|
|
@end itemize
|
|
|
|
If for some reason on your system the combinations with Ctrl or Alt do
|
|
not work, you can generate them by using the Esc key. A control-key
|
|
sequence is generated by pressing the Esc key twice and then pressing
|
|
the desired key, and a meta-key sequence by pressing the Esc key once
|
|
and then pressing the desired key.
|
|
|
|
@node The Cutbuffer
|
|
@section The Cutbuffer
|
|
|
|
Text can be cut from a file, a whole line at a time, by using the 'Cut Text'
|
|
command (default key binding: @kbd{^K}). The cut line is stored in
|
|
the cutbuffer. Consecutive strokes of @kbd{^K} will add each cut line
|
|
to this buffer, but a @kbd{^K}
|
|
after any other keystroke will overwrite the entire cutbuffer.
|
|
|
|
The contents of the cutbuffer can be pasted back into the file with the
|
|
'Uncut Text' command (default key binding: @kbd{^U}).
|
|
|
|
A line of text can be copied into the cutbuffer (without cutting it) with
|
|
the 'Copy Text' command (default key binding: @kbd{M-6}).
|
|
|
|
@node The Mark
|
|
@section The Mark
|
|
|
|
Text can be selected by first 'setting the Mark' (default key bindings:
|
|
@kbd{^6} and @kbd{M-A}) and then moving the cursor to the other end of the portion
|
|
to be selected. The selected portion of text will be highlighted.
|
|
This selection can now be cut or copied in its entirety with a single
|
|
@kbd{^K} or @kbd{M-6}. Or the selection can be used to limit the scope of
|
|
a search-and-replace (@kbd{^\}) or spell-checking session (@kbd{^T}).
|
|
|
|
On some terminals, text can be selected also by holding down @kbd{Shift}
|
|
while using the cursor keys. Holding down the @kbd{Ctrl} or @kbd{Alt}
|
|
key too will increase the stride. Such a selection is cancelled
|
|
upon any cursor movement where @kbd{Shift} isn't held.
|
|
|
|
Cutting or copying selected text will toggle the mark off automatically.
|
|
If necessary, it can be toggled off manually with another @kbd{^6} or @kbd{M-A}.
|
|
|
|
@node Screen Layout
|
|
@section Screen Layout
|
|
|
|
The default screen of nano consists of five areas. From top to bottom
|
|
these are: the title bar, a blank line, the edit window, the status bar,
|
|
and two help lines.
|
|
|
|
The title bar consists of
|
|
three sections: left, center and right. The section on the left
|
|
displays the version of @command{nano} being used. The center section
|
|
displays the current filename, or "New Buffer" if the file has not yet
|
|
been named. The section on the right displays "Modified" if the
|
|
file has been modified since it was last saved or opened.
|
|
|
|
The status bar is the third line from the bottom of the screen. It
|
|
shows important and informational messages. Any error messages that
|
|
occur from using the editor will appear on the status bar. Any questions
|
|
that are asked of the user will be asked on the status bar, and any user
|
|
input (search strings, filenames, etc.) will be input on the status bar.
|
|
|
|
The two help lines at the bottom of the screen show some of the most
|
|
essential functions of the editor. These two lines are called the
|
|
Shortcut List.
|
|
|
|
@node Search and Replace
|
|
@section Search and Replace
|
|
|
|
One can search the current buffer for the occurrence of any string
|
|
with the Search command (default key binding: @kbd{^W}). The default search
|
|
mode is forward, case-insensitive, and for literal strings. But one
|
|
can search backwards by pressing @kbd{M-B}, search case sensitively with @kbd{M-C},
|
|
and interpret regular expressions in the search string with @kbd{M-R}.
|
|
|
|
A regular expression in a search string always covers just one line;
|
|
it cannot span multiple lines. And when replacing (with @kbd{^\} or @kbd{M-R})
|
|
the replacement string cannot contain a newline (LF).
|
|
|
|
@node Using the Mouse
|
|
@section Using the Mouse
|
|
|
|
When mouse support has been configured and enabled, a single mouse click
|
|
places the cursor at the indicated position. Clicking a second time in
|
|
the same position toggles the mark. Clicking in the shortcut list
|
|
executes the selected shortcut. To be able to select text with the
|
|
left button, or paste text with the middle button, hold down the
|
|
Shift key during those actions.
|
|
|
|
The mouse will work in the X Window System, and on the console when gpm
|
|
is running.
|
|
|
|
@node Limitations
|
|
@section Limitations
|
|
|
|
The recording and playback of keyboard macros works correctly only on a
|
|
terminal emulator, not on a Linux console (VT), because the latter does
|
|
not by default distinguish modified from unmodified arrow keys.
|
|
|
|
|
|
@node Built-in Help
|
|
@chapter Built-in Help
|
|
|
|
The built-in help system in @command{nano} is available by pressing @kbd{^G}.
|
|
It is fairly self-explanatory. It documents the various parts of the
|
|
editor and the available keystrokes. Navigation is via the @kbd{^Y} (Page Up)
|
|
and @kbd{^V} (Page Down) keys. @kbd{^X} exits from the help system.
|
|
|
|
|
|
@node Feature Toggles
|
|
@chapter Feature Toggles
|
|
|
|
Toggles allow you to change on-the-fly certain aspects of the editor
|
|
which would normally be specified via command-line options. They are
|
|
invoked via Meta-key sequences (@pxref{Commands} for more info).
|
|
The following global toggles are available:
|
|
|
|
@table @code
|
|
|
|
@item Constant Cursor Position Display
|
|
@kbd{Meta-C} toggles the @option{-c} (@option{--constantshow}) command-line option.
|
|
|
|
@item Smart Home Key
|
|
@kbd{Meta-H} toggles the @option{-A} (@option{--smarthome}) command-line option.
|
|
|
|
@item Auto Indent
|
|
@kbd{Meta-I} toggles the @option{-i} (@option{--autoindent}) command-line option.
|
|
|
|
@item Cut From Cursor To End-of-Line
|
|
@kbd{Meta-K} toggles the @option{-k} (@option{--cutfromcursor}) command-line option.
|
|
|
|
@item Long-Line Wrapping
|
|
@kbd{Meta-L} toggles the @option{-b} (@option{--breaklonglines}) command-line option.
|
|
|
|
@item Mouse Support
|
|
@kbd{Meta-M} toggles the @option{-m} (@option{--mouse}) command-line option.
|
|
|
|
@item Line Numbers
|
|
@kbd{Meta-N} toggles the @option{-l} (@option{--linenumbers}) command-line option.
|
|
|
|
@item Tabs To Spaces
|
|
@kbd{Meta-O} toggles the @option{-E} (@option{--tabstospaces}) command-line option.
|
|
|
|
@item Whitespace Display
|
|
@kbd{Meta-P} toggles the displaying of whitespace (@pxref{Whitespace}).
|
|
|
|
@item Soft Wrapping
|
|
@kbd{Meta-S} toggles the @option{-$} (@option{--softwrap}) command-line option.
|
|
|
|
@item Expert/No Help
|
|
@kbd{Meta-X} toggles the @option{-x} (@option{--nohelp}) command-line option.
|
|
|
|
@item Color Syntax Highlighting
|
|
@kbd{Meta-Y} toggles color syntax highlighting (if your nanorc defines syntaxes
|
|
--- @pxref{Syntax Highlighting}).
|
|
|
|
@item Suspension
|
|
@kbd{Meta-Z} toggles the @option{-z} (@option{--suspend}) command-line option.
|
|
|
|
@end table
|
|
|
|
|
|
@node Nanorc Files
|
|
@chapter Nanorc Files
|
|
|
|
The nanorc files contain the default settings for @command{nano}. They
|
|
should be in Unix format, not in DOS or Mac format. During startup,
|
|
@command{nano} will first read the system-wide settings, from /etc/nanorc
|
|
(the exact path might be different), and then the user-specific settings,
|
|
either from @file{~/.nanorc} or from @file{$XDG_CONFIG_HOME/nano/nanorc}
|
|
or from @file{.config/nano/nanorc}, whichever exists first.
|
|
|
|
A nanorc file accepts a series of "set" and "unset" commands, which can
|
|
be used to configure @command{nano} on startup without using command-line
|
|
options. Additionally, there are some commands to define syntax highlighting
|
|
and to rebind keys --- @pxref{Syntax Highlighting} and @ref{Rebinding Keys}.
|
|
@command{nano} will read one command per line.
|
|
All commands and keywords should be written in lowercase.
|
|
|
|
Options in nanorc files take precedence over @command{nano}'s defaults, and
|
|
command-line options override nanorc settings. Also, options that do not
|
|
take an argument are unset by default. So using the @code{unset} command
|
|
is only needed when wanting to override a setting of the system's nanorc
|
|
file in your own nanorc. Options that take an argument cannot be unset.
|
|
|
|
Quotes inside the @var{characters} parameters below should not be escaped.
|
|
The last double quote on the line will be seen as the closing quote.
|
|
|
|
@menu
|
|
* Settings::
|
|
* Syntax Highlighting::
|
|
* Rebinding Keys::
|
|
@end menu
|
|
|
|
@node Settings
|
|
@section Settings
|
|
|
|
The supported settings in a nanorc file are:
|
|
|
|
@table @code
|
|
|
|
@item set afterends
|
|
Make Ctrl+Right stop at word ends instead of beginnings.
|
|
|
|
@item set allow_insecure_backup
|
|
When backing up files, allow the backup to succeed even if its
|
|
permissions can't be (re)set due to special OS considerations.
|
|
You should NOT enable this option unless you are sure you need it.
|
|
|
|
@item set atblanks
|
|
When soft line wrapping is enabled, make it wrap lines at blank characters
|
|
(tabs and spaces) instead of always at the edge of the screen.
|
|
|
|
@item set autoindent
|
|
Automatically indent a newly created line to the same number of tabs
|
|
and/or spaces as the previous line (or as the next line if the previous
|
|
line is the beginning of a paragraph).
|
|
|
|
@item set backup
|
|
When saving a file, back up the previous version of it, using the current
|
|
filename suffixed with a tilde (@code{~}).
|
|
|
|
@item set backupdir "@var{directory}"
|
|
Make and keep not just one backup file, but make and keep a uniquely
|
|
numbered one every time a file is saved --- when backups are enabled
|
|
with @code{set backup} or @option{--backup} or @option{-B}.
|
|
The uniquely numbered files are stored in the specified directory.
|
|
|
|
@item set boldtext
|
|
Use bold instead of reverse video for the title bar, status bar, key combos,
|
|
function tags, line numbers, and selected text. This can be overridden by
|
|
setting the options @code{titlecolor}, @code{statuscolor}, @code{keycolor},
|
|
@code{functioncolor}, @code{numbercolor}, and @code{selectedcolor}.
|
|
|
|
@item set brackets "@var{characters}"
|
|
Set the characters treated as closing brackets when justifying
|
|
paragraphs. This may not include blank characters. Only closing
|
|
punctuation (see @code{set punct}), optionally followed by the specified
|
|
closing brackets, can end sentences. The default value is
|
|
@t{""')>]@}"}.
|
|
|
|
@item set breaklonglines
|
|
Automatically hard-wrap the current line when it becomes overlong.
|
|
|
|
@item set casesensitive
|
|
Do case-sensitive searches by default.
|
|
|
|
@item set constantshow
|
|
Constantly display the cursor position on the status bar.
|
|
Note that this overrides @option{quickblank}.
|
|
|
|
@item set cutfromcursor
|
|
Use cut-from-cursor-to-end-of-line by default, instead of cutting the whole line.
|
|
|
|
@item set emptyline
|
|
Do not use the line below the title bar, leaving it entirely blank.
|
|
|
|
@item set errorcolor @var{fgcolor},@var{bgcolor}
|
|
Use this color combination for the status bar when an error message is displayed.
|
|
The default value is @t{brightwhite,red}.
|
|
@xref{@code{set functioncolor}} for valid color names.
|
|
|
|
@item set fill @var{number}
|
|
Set the target width for justifying and automatic hard-wrapping at this
|
|
@var{number} of columns. If the value is 0 or less, wrapping will occur
|
|
at the width of the screen minus @var{number} columns, allowing the wrap
|
|
point to vary along with the width of the screen if the screen is resized.
|
|
The default value is @t{-8}.
|
|
|
|
@anchor{@code{set functioncolor}}
|
|
@item set functioncolor @var{fgcolor},@var{bgcolor}
|
|
Use this color combination for the concise function descriptions
|
|
in the two help lines at the bottom of the screen.
|
|
Valid names for foreground and background color are:
|
|
@code{white}, @code{black}, @code{blue}, @code{green},
|
|
@code{red}, @code{cyan}, @code{yellow}, @code{magenta}, and @code{normal}
|
|
--- where @code{normal} means the default foreground or background color.
|
|
The name of the foreground color may be prefixed with @code{bright}.
|
|
And either @var{fgcolor} or ,@var{bgcolor} may be left out.
|
|
|
|
@item set guidestripe @var{number}
|
|
Draw a vertical stripe at the given column, to help judge the width of the
|
|
text. (The color of the stripe can be changed with @code{set stripecolor}.)
|
|
|
|
@item set historylog
|
|
Save the last hundred search strings and replacement strings and
|
|
executed commands, so they can be easily reused in later sessions.
|
|
|
|
@item set jumpyscrolling
|
|
Scroll the buffer contents per half-screen instead of per line.
|
|
|
|
@item set keycolor @var{fgcolor},@var{bgcolor}
|
|
Use this color combination for the shortcut key combos
|
|
in the two help lines at the bottom of the screen.
|
|
@xref{@code{set functioncolor}} for valid color names.
|
|
|
|
@item set linenumbers
|
|
Display line numbers to the left of the text area.
|
|
|
|
@item set locking
|
|
Enable vim-style lock-files for when editing files.
|
|
|
|
@item set matchbrackets "@var{characters}"
|
|
Set the opening and closing brackets that can be found by bracket
|
|
searches. This may not include blank characters. The opening set must
|
|
come before the closing set, and the two sets must be in the same order.
|
|
The default value is @t{"(<[@{)>]@}"}.
|
|
|
|
@item set morespace
|
|
Deprecated option since it has become the default setting.
|
|
When needed, use @code{unset emptyline} instead.
|
|
|
|
@item set mouse
|
|
Enable mouse support, so that mouse clicks can be used to place the
|
|
cursor, set the mark (with a double click), or execute shortcuts.
|
|
|
|
@item set multibuffer
|
|
When reading in a file with @kbd{^R}, insert it into a new buffer by default.
|
|
|
|
@item set noconvert
|
|
Don't convert files from DOS/Mac format.
|
|
|
|
@item set nohelp
|
|
Don't display the help lists at the bottom of the screen.
|
|
|
|
@item set nonewlines
|
|
Don't automatically add a newline when a text does not end with one.
|
|
(This can cause you to save non-POSIX text files.)
|
|
|
|
@item set nopauses
|
|
Obsolete option. Ignored.
|
|
|
|
@item set nowrap
|
|
Deprecated option since it has become the default setting.
|
|
When needed, use @code{unset breaklonglines} instead.
|
|
|
|
@item set numbercolor @var{fgcolor},@var{bgcolor}
|
|
Use this color combination for line numbers.
|
|
@xref{@code{set functioncolor}} for valid color names.
|
|
|
|
@item set operatingdir "@var{directory}"
|
|
@command{nano} will only read and write files inside "directory" and its
|
|
subdirectories. Also, the current directory is changed to here, so
|
|
files are inserted from this directory. By default, the operating
|
|
directory feature is turned off.
|
|
|
|
@item set positionlog
|
|
Save the cursor position of files between editing sessions.
|
|
The cursor position is remembered for the 200 most-recently edited files.
|
|
|
|
@item set preserve
|
|
Preserve the XON and XOFF keys (@kbd{^Q} and @kbd{^S}).
|
|
|
|
@item set punct "@var{characters}"
|
|
Set the characters treated as closing punctuation when justifying
|
|
paragraphs. This may not include blank characters. Only the
|
|
specified closing punctuation, optionally followed by closing brackets
|
|
(see @code{set brackets}), can end sentences.
|
|
The default value is @t{"!.?"}.
|
|
|
|
@item set quickblank
|
|
Do quick status-bar blanking: status-bar messages will disappear after 1
|
|
keystroke instead of 25. Note that @option{constantshow} overrides this.
|
|
|
|
@item set quotestr "@var{regex}"
|
|
Set the regular expression for matching the quoting part of a line.
|
|
The default value is @t{"^([@w{ }\t]*([!#%:;>|@}]|//))+"}.
|
|
(Note that @code{\t} stands for a literal Tab character.)
|
|
This makes it possible to rejustify blocks of quoted text when composing
|
|
email, and to rewrap blocks of line comments when writing source code.
|
|
|
|
@item set rawsequences
|
|
Interpret escape sequences directly (instead of asking @code{ncurses} to
|
|
translate them). If you need this option to get your keyboard to work
|
|
properly, please report a bug. Using this option disables @command{nano}'s
|
|
mouse support.
|
|
|
|
@item set rebinddelete
|
|
Interpret the Delete and Backspace keys differently so that both Backspace
|
|
and Delete work properly. You should only use this option when on your
|
|
system either Backspace acts like Delete or Delete acts like Backspace.
|
|
|
|
@item set regexp
|
|
Do regular-expression searches by default.
|
|
Regular expressions in @command{nano} are of the extended type (ERE).
|
|
|
|
@item set selectedcolor @var{fgcolor},@var{bgcolor}
|
|
Use this color combination for selected text.
|
|
@xref{@code{set functioncolor}} for valid color names.
|
|
|
|
@item set showcursor
|
|
Put the cursor on the highlighted item in the file browser, and show
|
|
the cursor in the help viewer, to aid braille users and people with
|
|
poor vision.
|
|
|
|
@item set smarthome
|
|
Make the Home key smarter. When Home is pressed anywhere but at the
|
|
very beginning of non-whitespace characters on a line, the cursor will
|
|
jump to that beginning (either forwards or backwards). If the cursor is
|
|
already at that position, it will jump to the true beginning of the
|
|
line.
|
|
|
|
@item set smooth
|
|
Deprecated option since it has become the default setting.
|
|
When needed, use @code{unset jumpyscrolling} instead.
|
|
|
|
@item set softwrap
|
|
Enable soft line wrapping for easier viewing of very long lines.
|
|
|
|
@item set speller "@var{program} [@var{arg} @dots{}]"
|
|
Use the given program to do spell checking and correcting.
|
|
@xref{@option{--speller}} for details.
|
|
|
|
@item set statuscolor @var{fgcolor},@var{bgcolor}
|
|
Use this color combination for the status bar.
|
|
@xref{@code{set functioncolor}} for valid color names.
|
|
|
|
@item set stripecolor @var{fgcolor},@var{bgcolor}
|
|
Use this color combination for the vertical guiding stripe.
|
|
@xref{@code{set functioncolor}} for valid color names.
|
|
|
|
@item set suspend
|
|
Allow @command{nano} to be suspended.
|
|
|
|
@item set tabsize @var{number}
|
|
Use a tab size of @var{number} columns. The value of @var{number} must be
|
|
greater than 0. The default value is @t{8}.
|
|
|
|
@item set tabstospaces
|
|
Convert typed tabs to spaces.
|
|
|
|
@item set tempfile
|
|
Save automatically on exit, don't prompt.
|
|
|
|
@item set titlecolor @var{fgcolor},@var{bgcolor}
|
|
Use this color combination for the title bar.
|
|
@xref{@code{set functioncolor}} for valid color names.
|
|
|
|
@item set trimblanks
|
|
Remove trailing whitespace from wrapped lines when automatic
|
|
hard-wrapping occurs or when text is justified.
|
|
|
|
@item set unix
|
|
Save a file by default in Unix format. This overrides nano's
|
|
default behavior of saving a file in the format that it had.
|
|
(This option has no effect when you also use @code{set noconvert}.)
|
|
|
|
@item set view
|
|
Disallow file modification: read-only mode.
|
|
This mode allows the user to open also other files for viewing,
|
|
unless @option{--restricted} is given on the command line.
|
|
|
|
@anchor{Whitespace}
|
|
@item set whitespace "@var{characters}"
|
|
Set the two characters used to indicate the presence of tabs and
|
|
spaces. They must be single-column characters. The default pair
|
|
for a UTF-8 locale is @t{"»·"}, and for other locales @t{">."}.
|
|
|
|
@item set wordbounds
|
|
Detect word boundaries differently by treating punctuation
|
|
characters as part of a word.
|
|
|
|
@item set wordchars "@var{characters}"
|
|
Specify which other characters (besides the normal alphanumeric ones)
|
|
should be considered as parts of words. This overrides the option
|
|
@code{wordbounds}.
|
|
|
|
@item set zap
|
|
Let an unmodified @key{Backspace} or @key{Delete} erase the marked region
|
|
(instead of a single character, and without affecting the cutbuffer).
|
|
|
|
@end table
|
|
|
|
@node Syntax Highlighting
|
|
@section Syntax Highlighting
|
|
|
|
Coloring the different syntactic elements of a file
|
|
is done via regular expressions (see the @code{color} command below).
|
|
This is inherently imperfect, because regular expressions are not
|
|
powerful enough to fully parse a file. Nevertheless, regular
|
|
expressions can do a lot and are easy to make, so they are a
|
|
good fit for a small editor like @command{nano}.
|
|
|
|
All regular expressions in @command{nano} are POSIX extended regular expressions
|
|
(ERE). This means that @code{.}, @code{?}, @code{*}, @code{+}, @code{^},
|
|
@code{$}, and several other characters are special.
|
|
The period @code{.} matches any single character,
|
|
@code{?} means the preceding item is optional,
|
|
@code{*} means the preceding item may be matched zero or more times,
|
|
@code{+} means the preceding item must be matched one or more times,
|
|
@code{^} matches the beginning of a line, and @code{$} the end,
|
|
@code{\<} matches the start of a word, and @code{\>} the end,
|
|
and @code{\s} matches a blank.
|
|
It also means that lookahead and lookbehind are not possible.
|
|
A complete explanation can be found in the manual of GNU grep:
|
|
@code{info grep regular}.
|
|
|
|
A separate syntax can be defined for each kind of file
|
|
via the following commands in a nanorc file:
|
|
|
|
@table @code
|
|
|
|
@item syntax @var{name} ["@var{fileregex}" @dots{}]
|
|
Start the definition of a syntax with this @var{name}.
|
|
All subsequent @code{color} and other such commands
|
|
will be added to this syntax, until a new @code{syntax}
|
|
command is encountered.
|
|
|
|
When @command{nano} is run, this syntax will be automatically
|
|
activated if the current filename matches the extended regular
|
|
expression @var{fileregex}. Or the syntax can be explicitly
|
|
activated by using the @option{-Y} or @option{--syntax}
|
|
command-line option followed by the @var{name}.
|
|
|
|
The @code{default} syntax is special: it takes no @var{fileregex},
|
|
and applies to files that don't match any syntax's regexes.
|
|
The @code{none} syntax is reserved; specifying it on the
|
|
command line is the same as not having a syntax at all.
|
|
|
|
@item header "@var{regex}" @dots{}
|
|
If from all defined syntaxes no @var{fileregex} matched, then compare
|
|
this @var{regex} (or regexes) against the first line of the current file,
|
|
to determine whether this syntax should be used for it.
|
|
|
|
@item magic "@var{regex}" @dots{}
|
|
If no @var{fileregex} matched and no @code{header} regex matched
|
|
either, then compare this @var{regex} (or regexes) against the
|
|
result of querying the @code{magic} database about the current
|
|
file, to determine whether this syntax should be used for it.
|
|
(This functionality only works when @code{libmagic} is installed
|
|
on the system and will be silently ignored otherwise.)
|
|
|
|
@item formatter @var{program} [@var{arg} @dots{}]
|
|
Run the given @var{program} on the full contents of the current buffer.
|
|
(The current buffer is written out to a temporary file, the program is
|
|
run on it, and then the temporary file is read back in, replacing the
|
|
contents of the buffer.)
|
|
|
|
@item linter @var{program} [@var{arg} @dots{}]
|
|
Use the given @var{program} to do a syntax check on the current buffer.
|
|
|
|
@item comment "@var{string}"
|
|
Use the given string for commenting and uncommenting lines.
|
|
If the string contains a vertical bar or pipe character (@t{|}),
|
|
this designates bracket-style comments; for example, @t{"/*|*/"} for
|
|
CSS files. The characters before the pipe are prepended to the line and the
|
|
characters after the pipe are appended at the end of the line. If no pipe
|
|
character is present, the full string is prepended; for example, @t{"#"} for
|
|
Python files. If empty double quotes are specified, the comment/uncomment
|
|
functions are disabled; for example, @t{""} for JSON.
|
|
The default value is @t{"#"}.
|
|
|
|
@item tabgives "@var{string}"
|
|
Make the <Tab> key produce the given @var{string}. Useful for languages like
|
|
Python that want to see only spaces for indentation.
|
|
This overrides the setting of the @code{tabstospaces} option.
|
|
|
|
@item color @var{fgcolor},@var{bgcolor} "@var{regex}" @dots{}
|
|
Paint all pieces of text that match the extended regular expression "regex"
|
|
with the given foreground and background colors, at least one of which must
|
|
be specified. Valid color names are:
|
|
@code{white}, @code{black}, @code{blue}, @code{green},
|
|
@code{red}, @code{cyan}, @code{yellow}, @code{magenta}, and @code{normal}
|
|
--- where @code{normal} means the default foreground or background color.
|
|
You may use the prefix @code{bright} for the foreground color to get a
|
|
stronger highlight.
|
|
If your terminal supports transparency, not specifying a "bgcolor"
|
|
tells @command{nano} to attempt to use a transparent background.
|
|
|
|
All coloring commands are applied in the order in which they are specified,
|
|
which means that later commands can recolor stuff that was colored earlier.
|
|
|
|
@item icolor @var{fgcolor},@var{bgcolor} "@var{regex}" @dots{}
|
|
Same as above, except that the matching is case insensitive.
|
|
|
|
@item color @var{fgcolor},@var{bgcolor} start="@var{fromrx}" end="@var{torx}"
|
|
Paint all pieces of text whose start matches extended regular expression
|
|
"fromrx" and whose end matches extended regular expression "torx" with
|
|
the given foreground and background colors, at least one of
|
|
which must be specified. This means that, after an initial instance of
|
|
"fromrx", all text until the first instance of "torx" will be colored.
|
|
This allows syntax highlighting to span multiple lines.
|
|
|
|
@item icolor @var{fgcolor},@var{bgcolor} start="@var{fromrx}" end="@var{torx}"
|
|
Same as above, except that the matching is case insensitive.
|
|
|
|
@item include "@var{syntaxfile}"
|
|
Read in self-contained color syntaxes from "syntaxfile". Note that
|
|
"syntaxfile" may contain only the above commands, from @code{syntax}
|
|
to @code{icolor}.
|
|
|
|
@item extendsyntax @var{name} @var{command} [@var{arg} @dots{}]
|
|
Extend the syntax previously defined as "@var{name}" with another @var{command}.
|
|
This allows you to add a new @code{color}, @code{icolor}, @code{header},
|
|
@code{magic}, @code{comment}, @code{linter}, or @code{formatter} command to an already
|
|
defined syntax --- useful when you want to slightly improve a syntax defined
|
|
in one of the system-installed files (which normally are not writable).
|
|
|
|
@end table
|
|
|
|
@node Rebinding Keys
|
|
@section Rebinding Keys
|
|
|
|
Key bindings can be changed via the following three commands in a
|
|
nanorc file:
|
|
|
|
@table @code
|
|
|
|
@item bind key function menu
|
|
Rebinds @code{key} to @code{function} in the context of @code{menu}
|
|
(or in all menus where the function exists when @code{all} is used).
|
|
|
|
@item bind key "string" menu
|
|
Makes @code{key} produce @code{string} in the context of @code{menu}
|
|
(or in all menus where the key exists when @code{all} is used).
|
|
The @code{string} can consist of text or commands or a mix of them.
|
|
(To enter a command into the @code{string}, precede its keystroke
|
|
with @kbd{M-V}.)
|
|
|
|
@item unbind key menu
|
|
Unbinds @code{key} from @code{menu}
|
|
(or from all menus where the key exists when @code{all} is used).
|
|
|
|
@end table
|
|
|
|
@sp 1
|
|
The format of @code{key} should be one of:
|
|
|
|
@itemize @w{}
|
|
@item
|
|
@code{^@var{X}} ------ where @var{X} is a Latin letter, or one of several
|
|
ASCII characters (@@, ], \, ^, _), or the word "Space".
|
|
Example: @code{^C}.
|
|
|
|
@item
|
|
@code{M-@var{X}} ------ where @var{X} is any ASCII character except [,
|
|
or the word "Space".
|
|
Example: @code{M-C}.
|
|
|
|
@item
|
|
@code{F@var{n}} ------ where @var{n} is a numeric value from 1 to 24.
|
|
Example: @code{F10}.
|
|
(Often, @code{F13} to @code{F24} can be typed as @code{F1} to @code{F12}
|
|
with Shift.)
|
|
|
|
@item
|
|
@code{Ins} or @code{Del}.
|
|
@end itemize
|
|
|
|
Rebinding @code{^M} (Enter) or @code{^I} (Tab) is probably not a good idea.
|
|
On some terminals it's not possible to rebind @code{^H} (unless @code{--raw}
|
|
is used) because its keycode is identical to that of the Backspace key.
|
|
|
|
@sp 1
|
|
Valid names for the @code{function} to be bound are:
|
|
|
|
@table @code
|
|
|
|
@item help
|
|
Invokes the help viewer.
|
|
|
|
@item cancel
|
|
Cancels the current command.
|
|
|
|
@item exit
|
|
Exits from the program (or from the help viewer or the file browser).
|
|
|
|
@item writeout
|
|
Writes the current buffer to disk, asking for a name.
|
|
|
|
@item savefile
|
|
Writes the current file to disk without prompting.
|
|
|
|
@item insert
|
|
Inserts a file into the current buffer (at the current cursor position),
|
|
or into a new buffer when option @code{multibuffer} is set.
|
|
|
|
@item whereis
|
|
Starts a forward search for text in the current buffer --- or for filenames
|
|
matching a string in the current list in the file browser.
|
|
|
|
@item wherewas
|
|
Starts a backward search for text in the current buffer --- or for filenames
|
|
matching a string in the current list in the file browser.
|
|
|
|
@item findprevious
|
|
Searches the next occurrence in the backward direction.
|
|
|
|
@item findnext
|
|
Searches the next occurrence in the forward direction.
|
|
|
|
@item replace
|
|
Interactively replaces text within the current buffer.
|
|
|
|
@item cut
|
|
Cuts and stores the current line (or the marked region).
|
|
|
|
@item copy
|
|
Copies the current line (or the marked region) without deleting it.
|
|
|
|
@item paste
|
|
Pastes the currently stored text into the current buffer at the
|
|
current cursor position.
|
|
|
|
@item zap
|
|
Throws away the current line (or the marked region).
|
|
(This function is bound by default to <Meta+Delete>.)
|
|
|
|
@item chopwordleft
|
|
Deletes from the cursor position to the beginning of the preceding word.
|
|
(This function is bound by default to <Shift+Ctrl+Delete>. If your terminal
|
|
produces @code{^H} for <Ctrl+Backspace>, you can make <Ctrl+Backspace> delete
|
|
the word to the left of the cursor by rebinding ^H to this function.)
|
|
|
|
@item chopwordright
|
|
Deletes from the cursor position to the beginning of the next word.
|
|
(This function is bound by default to <Ctrl+Delete>.)
|
|
|
|
@item cutrestoffile
|
|
Cuts all text from the cursor position till the end of the buffer.
|
|
|
|
@item mark
|
|
Sets the mark at the current position, to start selecting text.
|
|
Or, when it is set, unsets the mark.
|
|
|
|
@item curpos
|
|
Shows the current cursor position: the line, column, and character positions.
|
|
|
|
@item wordcount
|
|
Counts the number of words, lines and characters in the current buffer.
|
|
|
|
@item speller
|
|
Invokes a spell-checking program, either the default @command{hunspell}
|
|
or GNU @command{spell}, or the one defined by @option{--speller} or
|
|
@code{set speller}.
|
|
|
|
@item formatter
|
|
Invokes a full-buffer-processing program (if the active syntax defines one).
|
|
|
|
@item linter
|
|
Invokes a syntax-checking program (if the active syntax defines one).
|
|
|
|
@item justify
|
|
Justifies the current paragraph. A paragraph is a group of contiguous lines
|
|
that, apart from possibly the first line, all have the same indentation. The
|
|
beginning of a paragraph is detected by either this lone line with a differing
|
|
indentation or by a preceding blank line.
|
|
|
|
@item fulljustify
|
|
Justifies the entire current buffer.
|
|
|
|
@item indent
|
|
Indents (shifts to the right) the currently marked text.
|
|
|
|
@item unindent
|
|
Unindents (shifts to the left) the currently marked text.
|
|
|
|
@item comment
|
|
Comments or uncomments the current line or marked lines, using the comment
|
|
style specified in the active syntax.
|
|
|
|
@item complete
|
|
Completes the fragment before the cursor to a full word found elsewhere
|
|
in the current buffer.
|
|
|
|
@item left
|
|
Goes left one position (in the editor or browser).
|
|
|
|
@item right
|
|
Goes right one position (in the editor or browser).
|
|
|
|
@item up
|
|
Goes one line up (in the editor or browser).
|
|
|
|
@item down
|
|
Goes one line down (in the editor or browser).
|
|
|
|
@item scrollup
|
|
Scrolls the viewport up one row (meaning that the text slides down)
|
|
while keeping the cursor in the same text position, if possible.
|
|
|
|
@item scrolldown
|
|
Scrolls the viewport down one row (meaning that the text slides up)
|
|
while keeping the cursor in the same text position, if possible.
|
|
|
|
@item prevword
|
|
Moves the cursor to the beginning of the previous word.
|
|
|
|
@item nextword
|
|
Moves the cursor to the beginning of the next word.
|
|
|
|
@item home
|
|
Moves the cursor to the beginning of the current line.
|
|
|
|
@item end
|
|
Moves the cursor to the end of the current line.
|
|
|
|
@item beginpara
|
|
Moves the cursor to the beginning of the current paragraph.
|
|
|
|
@item endpara
|
|
Moves the cursor to the end of the current paragraph.
|
|
|
|
@item prevblock
|
|
Moves the cursor to the beginning of the current or preceding block of text.
|
|
(Blocks are separated by one or more blank lines.)
|
|
|
|
@item nextblock
|
|
Moves the cursor to the beginning of the next block of text.
|
|
|
|
@item pageup
|
|
Goes up one screenful.
|
|
|
|
@item pagedown
|
|
Goes down one screenful.
|
|
|
|
@item firstline
|
|
Goes to the first line of the file.
|
|
|
|
@item lastline
|
|
Goes to the last line of the file.
|
|
|
|
@item gotoline
|
|
Goes to a specific line (and column if specified). Negative numbers count
|
|
from the end of the file (and end of the line).
|
|
|
|
@item findbracket
|
|
Moves the cursor to the bracket (brace, parenthesis, etc.) that matches
|
|
(pairs) with the one under the cursor.
|
|
|
|
@item prevbuf
|
|
Switches to editing/viewing the previous buffer when multiple buffers are open.
|
|
|
|
@item nextbuf
|
|
Switches to editing/viewing the next buffer when multiple buffers are open.
|
|
|
|
@item verbatim
|
|
Inserts the next keystroke verbatim into the file.
|
|
|
|
@item tab
|
|
Inserts a tab at the current cursor location.
|
|
|
|
@item enter
|
|
Inserts a new line below the current one.
|
|
|
|
@item delete
|
|
Deletes the character under the cursor.
|
|
|
|
@item backspace
|
|
Deletes the character before the cursor.
|
|
|
|
@item recordmacro
|
|
Starts the recording of keystrokes --- the keystrokes are stored
|
|
as a macro. When already recording, the recording is stopped.
|
|
|
|
@item runmacro
|
|
Replays the keystrokes of the last recorded macro.
|
|
|
|
@item undo
|
|
Undoes the last performed text action (add text, delete text, etc).
|
|
|
|
@item redo
|
|
Redoes the last undone action (i.e., it undoes an undo).
|
|
|
|
@item refresh
|
|
Refreshes the screen.
|
|
|
|
@item suspend
|
|
Suspends the editor (if the suspending function is enabled, see the
|
|
"suspendenable" entry below).
|
|
|
|
@item casesens
|
|
Toggles whether searching/replacing ignores or respects the case of
|
|
the given characters.
|
|
|
|
@item regexp
|
|
Toggles whether searching/replacing uses literal strings or regular expressions.
|
|
|
|
@item backwards
|
|
Toggles whether searching/replacing goes forward or backward.
|
|
|
|
@item older
|
|
Retrieves the previous (earlier) entry at a prompt.
|
|
|
|
@item newer
|
|
Retrieves the next (later) entry at a prompt.
|
|
|
|
@item flipreplace
|
|
Toggles between searching for something and replacing something.
|
|
|
|
@item flipgoto
|
|
Toggles between searching for text and targeting a line number.
|
|
|
|
@item flipexecute
|
|
Toggles between inserting a file and executing a command.
|
|
|
|
@item flippipe
|
|
When executing a command, toggles whether the current buffer (or marked
|
|
region) is piped to the command.
|
|
|
|
@item flipnewbuffer
|
|
Toggles between inserting into the current buffer and into a new
|
|
empty buffer.
|
|
|
|
@item flipconvert
|
|
When reading in a file, toggles between converting and not converting
|
|
it from DOS/Mac format. Converting is the default.
|
|
|
|
@item dosformat
|
|
When writing a file, switches to writing a DOS format (CR/LF).
|
|
|
|
@item macformat
|
|
When writing a file, switches to writing a Mac format.
|
|
|
|
@item append
|
|
When writing a file, appends to the end instead of overwriting.
|
|
|
|
@item prepend
|
|
When writing a file, 'prepends' (writes at the beginning) instead of overwriting.
|
|
|
|
@item backup
|
|
When writing a file, creates a backup of the current file.
|
|
|
|
@item discardbuffer
|
|
When about to write a file, discard the current buffer without saving.
|
|
(This function is bound by default only when option @option{--tempfile}
|
|
is in effect.)
|
|
|
|
@item browser
|
|
Starts the file browser, allowing to select a file from a list.
|
|
|
|
@item gotodir
|
|
Goes to a directory to be specified, allowing to browse anywhere
|
|
in the filesystem.
|
|
|
|
@item firstfile
|
|
Goes to the first file when using the file browser (reading or writing files).
|
|
|
|
@item lastfile
|
|
Goes to the last file when using the file browser (reading or writing files).
|
|
|
|
@item nohelp
|
|
Toggles the presence of the two-line list of key bindings at the bottom of the screen.
|
|
|
|
@item constantshow
|
|
Toggles the constant display of the current line, column, and character positions.
|
|
|
|
@item softwrap
|
|
Toggles the displaying of overlong lines on multiple screen lines.
|
|
|
|
@item linenumbers
|
|
Toggles the display of line numbers in front of the text.
|
|
|
|
@item whitespacedisplay
|
|
Toggles the showing of whitespace.
|
|
|
|
@item nosyntax
|
|
Toggles syntax highlighting.
|
|
|
|
@item smarthome
|
|
Toggles the smartness of the Home key.
|
|
|
|
@item autoindent
|
|
Toggles whether a newly created line will contain the same amount of leading
|
|
whitespace as the preceding line --- or as the next line if the preceding line
|
|
is the beginning of a paragraph.
|
|
|
|
@item cutfromcursor
|
|
Toggles whether cutting text will cut the whole line or just from the current cursor
|
|
position to the end of the line.
|
|
|
|
@item nowrap
|
|
Toggles whether long lines will be hard-wrapped to the next line.
|
|
|
|
@item tabstospaces
|
|
Toggles whether typed tabs will be converted to spaces.
|
|
|
|
@item mouse
|
|
Toggles mouse support.
|
|
|
|
@item suspendenable
|
|
Toggles whether the suspend shortcut (normally @kbd{^Z}) will suspend the editor.
|
|
|
|
@end table
|
|
|
|
@sp 1
|
|
Valid names for @code{menu} are:
|
|
|
|
@table @code
|
|
|
|
@item main
|
|
The main editor window where text is entered and edited.
|
|
|
|
@item search
|
|
The search menu (AKA whereis).
|
|
|
|
@item replace
|
|
The 'search to replace' menu.
|
|
|
|
@item replacewith
|
|
The 'replace with' menu, which comes up after 'search to replace'.
|
|
|
|
@item yesno
|
|
The 'yesno' menu, where the Yes/No/All/Cancel question is asked.
|
|
|
|
@item gotoline
|
|
The 'goto line (and column)' menu.
|
|
|
|
@item writeout
|
|
The 'write file' menu.
|
|
|
|
@item insert
|
|
The 'insert file' menu.
|
|
|
|
@item extcmd
|
|
The menu for inserting output from an external command, reached from the insert menu.
|
|
|
|
@item help
|
|
The help-viewer menu.
|
|
|
|
@item spell
|
|
The menu of the integrated spell checker where the user can edit a misspelled word.
|
|
|
|
@item linter
|
|
The linter menu.
|
|
|
|
@item browser
|
|
The file browser, for choosing a file to read from or write to.
|
|
|
|
@item whereisfile
|
|
The 'search for a file' menu in the file browser.
|
|
|
|
@item gotodir
|
|
The 'go to directory' menu in the file browser.
|
|
|
|
@item all
|
|
A special name that encompasses all menus. For @code{bind} it means
|
|
all menus where the specified @code{function} exists; for @code{unbind}
|
|
it means all menus where the specified @code{key} exists.
|
|
|
|
@end table
|
|
|
|
|
|
@node The File Browser
|
|
@chapter The File Browser
|
|
|
|
When in the Read-File (@kbd{^R}) or Write-Out menu (@kbd{^O}),
|
|
pressing @kbd{^T} will invoke the file browser.
|
|
Here, one can navigate directories in a graphical manner in order to
|
|
find the desired file.
|
|
|
|
Basic movement in the file browser is accomplished with the arrow and
|
|
other cursor-movement keys. More targeted movement is accomplished by
|
|
searching, via @kbd{^W} or @kbd{w}, or by changing directory, via
|
|
@kbd{^_} or @kbd{g}. The behavior of the @kbd{Enter} key (or @kbd{s})
|
|
varies by what is currently selected.
|
|
If the currently selected object is a directory, the file browser will
|
|
enter and display the contents of the directory. If the object is a
|
|
file, this filename and path are copied to the status bar, and the file
|
|
browser exits.
|
|
|
|
|
|
@node Pico Compatibility
|
|
@chapter Pico Compatibility
|
|
|
|
@command{nano} emulates Pico quite closely, but there
|
|
are some differences between the two editors:
|
|
|
|
@table @code
|
|
|
|
@item Hard-Wrapping
|
|
Unlike Pico, @command{nano} does not automatically hard-wrap the current
|
|
line when it becomes overlong during typing. This hard-wrapping can be
|
|
switched on with the @option{--breaklonglines} option. With that option,
|
|
@command{nano} by default breaks lines at screen width minus eight columns,
|
|
whereas Pico does it at screen width minus six columns. You can make
|
|
@command{nano} do as Pico by using @option{--fill=-6}.
|
|
|
|
@item Scrolling
|
|
By default, @command{nano} will scroll just one line (instead of half
|
|
a screen) when the cursor is moved to a line that is just out of view.
|
|
And when paging up or down, @command{nano} keeps the cursor in the same
|
|
screen position as much as possible, instead always placing it on the
|
|
first line of the viewport. The Pico-like behavior can be obtained
|
|
with the @option{--jumpyscrolling} option.
|
|
|
|
@item Edit Area
|
|
Pico never uses the line directly below the title bar, leaving it always
|
|
blank. @command{nano} includes this line in the editing area, in order
|
|
to not waste space, and because in this way it is slightly clearer where
|
|
the text starts. If you are accustomed to this line being empty, you can
|
|
get it back with the @option{--emptyline} option.
|
|
|
|
@item Interactive Replace
|
|
Instead of allowing you to replace either just one occurrence of a search
|
|
string or all of them, @command{nano}'s replace function is interactive: it
|
|
will pause at each found search string and query whether to replace this
|
|
instance. You can then choose Yes, or No (skip this one), or All (don't
|
|
ask any more), or Cancel (stop with replacing).
|
|
|
|
@item Search and Replace History
|
|
When the option @option{-H} or @option{--historylog} is given (or set in
|
|
the a nanorc file), text entered as search or replace strings is stored.
|
|
These strings can be accessed with the up/down arrow keys, or you can
|
|
type the first few characters and then use @kbd{Tab} to cycle through the
|
|
matching strings. A retrieved string can subsequently be edited.
|
|
|
|
@item Position History
|
|
When the option @option{-P} or @option{--positionlog} is given (or set in
|
|
a nanorc file), @command{nano} will store the position of the cursor
|
|
when you close a file, and will place the cursor in that position
|
|
again when you later reopen the file.
|
|
|
|
@item Current Cursor Position
|
|
The output of the "Display Cursor Position" command (@kbd{^C}) displays
|
|
not only the current line and character position of the cursor,
|
|
but also (between the two) the current column position.
|
|
|
|
@item Spell Checking
|
|
In the internal spell checker misspelled words are sorted alphabetically
|
|
and trimmed for uniqueness, such that the words 'apple' and 'Apple' will
|
|
be prompted for correction separately.
|
|
|
|
@item Writing Selected Text to Files
|
|
When using the Write-Out key (@kbd{^O}), text that has been selected using the
|
|
marking key (@kbd{^^}) can not just be written out to a new (or existing) file,
|
|
it can also be appended or prepended to an existing file.
|
|
|
|
@item Reading Text from a Command
|
|
When using the Read-File key (@kbd{^R}), @command{nano} can not just read a file,
|
|
it can also read the output of a command to be run (@kbd{^X}).
|
|
|
|
@item Reading from Working Directory
|
|
By default, Pico will read files from the user's home directory (when
|
|
using @kbd{^R}), but it will write files to the current working directory
|
|
(when using @kbd{^O}). @command{nano} makes this symmetrical: always reading
|
|
from and writing to the current working directory --- the directory
|
|
that @command{nano} was started in.
|
|
|
|
@item File Browser
|
|
In the file browser, @command{nano} does not implement the Add, Copy,
|
|
Rename, and Delete commands that Pico provides. In @command{nano} the
|
|
browser is just a file browser, not a file manager.
|
|
|
|
@item Toggles
|
|
Many options which alter the functionality of the program can be
|
|
"toggled" on or off using Meta key sequences, meaning the program does
|
|
not have to be restarted to turn a particular feature on or off.
|
|
@xref{Feature Toggles} for a list of options that can be toggled.
|
|
Or see the list at the end of the main internal help text (@kbd{^G}) instead.
|
|
|
|
@end table
|
|
|
|
|
|
@node Building and Configure Options
|
|
@chapter Building and Configure Options
|
|
|
|
Building @command{nano} from source is fairly straightforward if you are
|
|
familiar with compiling programs with autoconf support:
|
|
|
|
@iftex
|
|
@sp 1
|
|
@end iftex
|
|
@example
|
|
tar xvzf nano-x.y.z.tar.gz
|
|
cd nano-x.y.z
|
|
./configure
|
|
make
|
|
make install
|
|
@end example
|
|
@iftex
|
|
@sp 1
|
|
@end iftex
|
|
|
|
The possible options to @code{./configure} are:
|
|
|
|
@table @code
|
|
|
|
@item --disable-browser
|
|
Exclude the mini file browser that can be called with @kbd{^T} when
|
|
wanting to read or write a file.
|
|
|
|
@item --disable-color
|
|
Exclude support for syntax coloring. This also eliminates the @option{-Y}
|
|
command-line option, which allows choosing a specific syntax.
|
|
|
|
@item --disable-comment
|
|
Exclude the single-keystroke comment/uncomment function (@kbd{M-3}).
|
|
|
|
@item --disable-extra
|
|
Exclude the Easter egg: a crawl of major contributors.
|
|
|
|
@item --disable-help
|
|
Exclude the help texts (@kbd{^G}). This makes the binary much smaller,
|
|
but also makes it difficult for new users to learn more than very basic
|
|
things about using the editor.
|
|
|
|
@item --disable-histories
|
|
Exclude the code for handling the history files: the search and
|
|
replace strings that were used, and the cursor position at which each
|
|
file was closed. This also eliminates the @option{-H} and @option{-P}
|
|
command-line options, which switch on the logging of search/replace
|
|
strings and cursor positions.
|
|
|
|
@item --disable-justify
|
|
Exclude the justify functions (@kbd{^J} and @kbd{M-J}).
|
|
|
|
@item --disable-libmagic
|
|
Exclude the code for using the library of magic-number tests (for determining
|
|
the file type and thus which syntax to use for coloring --- often the regexes
|
|
for filename and header line will be enough).
|
|
|
|
@item --disable-linenumbers
|
|
Exclude the line-numbering function (@kbd{M-N}). This also eliminates the
|
|
@option{-l} command-line option, which turns line numbering on.
|
|
|
|
@item --disable-mouse
|
|
Exclude all mouse functionality. This also eliminates the @option{-m}
|
|
command-line option, which enables the mouse functionality.
|
|
|
|
@item --disable-multibuffer
|
|
Exclude support for opening multiple files at a time and switching
|
|
between them on the fly. This also eliminates the @option{-F} command-line
|
|
option, which causes a file to be read into a separate buffer by default.
|
|
|
|
@item --disable-nanorc
|
|
Exclude support for reading the nanorc files at startup. With such
|
|
support, you can store custom settings in a system-wide and a per-user
|
|
nanorc file rather than having to pass command-line options to get
|
|
the desired behavior. @xref{Nanorc Files} for more info.
|
|
Disabling this also eliminates the @option{-I} command-line option,
|
|
which inhibits the reading of nanorc files.
|
|
|
|
@item --disable-operatingdir
|
|
Exclude the code for setting the operating directory. This also eliminates
|
|
the @option{-o} command-line option, which sets the operating directory.
|
|
|
|
@item --disable-speller
|
|
Exclude the code for spell checking. This also eliminates the @option{-s}
|
|
command-line option, which allows specifying an alternate spell checker.
|
|
|
|
@item --disable-tabcomp
|
|
Exclude tab completion (when nano asks for a filename or a search string).
|
|
|
|
@item --disable-wordcomp
|
|
Exclude word completion (@kbd{^]}).
|
|
|
|
@item --disable-wrapping
|
|
Exclude all hard-wrapping of overlong lines. This also eliminates the
|
|
@option{-b} and @option{-w} command-line options, which switch automatic
|
|
long-line wrapping on and off, respectively.
|
|
|
|
@item --enable-tiny
|
|
This option implies all of the above. It also disables some other
|
|
internals of the editor, like the marking code, the cut-to-end-of-line
|
|
code, and the function toggles. By using the enabling
|
|
counterpart of the above options together with @option{--enable-tiny},
|
|
specific features can be switched back on --- but a few cannot.
|
|
|
|
@item --enable-debug
|
|
Include some code for runtime debugging output. This can get pretty messy, so
|
|
chances are you only want this feature when you're working on the nano source.
|
|
|
|
@item --disable-nls
|
|
Exclude Native Language support. This will disable the use of any
|
|
available GNU @command{nano} translations.
|
|
|
|
@item --enable-utf8
|
|
Include support for reading and writing Unicode files. This will require
|
|
either a wide version of curses, or a UTF-8-enabled version of Slang.
|
|
|
|
@item --disable-utf8
|
|
Exclude support for reading and writing Unicode files. Normally the
|
|
configure script auto-detects whether to enable UTF-8 support or not.
|
|
You can use this or the previous option to override that detection.
|
|
|
|
@item --enable-altrcname=@var{name}
|
|
Use the file with the given @var{name} (in the user's home directory)
|
|
as nano's settings file, instead of the default @code{.nanorc}.
|
|
|
|
@item --with-slang
|
|
Compile @command{nano} against Slang instead of against ncurses or other
|
|
curses libraries.
|
|
|
|
@end table
|
|
|
|
@html
|
|
<hr>
|
|
@end html
|
|
|
|
@contents
|
|
|
|
@bye
|