mirror of git://git.sv.gnu.org/nano.git
2167 lines
78 KiB
Plaintext
2167 lines
78 KiB
Plaintext
\input texinfo
|
|
|
|
@c %**start of header
|
|
@setfilename nano.info
|
|
@settitle The GNU nano text editor
|
|
@c %**end of header
|
|
|
|
@documentencoding UTF-8
|
|
|
|
@documentdescription
|
|
The complete manual for the GNU nano text editor.
|
|
@end documentdescription
|
|
|
|
@smallbook
|
|
@set EDITION 0.8
|
|
@set VERSION 8.1
|
|
@set UPDATED July 2024
|
|
|
|
@dircategory Editors
|
|
@direntry
|
|
* nano: (nano). Small and friendly text editor.
|
|
@end direntry
|
|
|
|
@comment Prevent the black square at the end of an overlong line.
|
|
@finalout
|
|
|
|
|
|
@titlepage
|
|
|
|
@title GNU @command{nano}
|
|
@subtitle a small and friendly text editor
|
|
@subtitle version 8.1
|
|
|
|
@author Chris Allegretta
|
|
|
|
@page
|
|
|
|
This manual documents the GNU @command{nano} text editor.
|
|
@sp 1
|
|
The contents of this manual are part of the GNU @command{nano} distribution.
|
|
|
|
@sp 5
|
|
Copyright @copyright{} 1999-2009, 2014-2024 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 5
|
|
You may contact the original author by e-mail: @email{chrisa@@asty.org}
|
|
|
|
Or contact the current maintainer: @email{bensberg@@coevern.nl}
|
|
|
|
@sp 1
|
|
For suggesting improvements: @email{nano-devel@@gnu.org}
|
|
|
|
@end titlepage
|
|
|
|
|
|
@macro blankline
|
|
@iftex
|
|
@sp 1
|
|
@end iftex
|
|
@end macro
|
|
|
|
|
|
@ifnottex
|
|
|
|
@node Top
|
|
@top
|
|
|
|
This manual documents GNU @command{nano}, version 8.1.
|
|
|
|
@menu
|
|
* Introduction::
|
|
* Invoking::
|
|
* Editor Basics::
|
|
* The Help Viewer::
|
|
* The File Browser::
|
|
* Command-line Options::
|
|
* Feature Toggles::
|
|
* Nanorc Files::
|
|
* Pico Compatibility::
|
|
* Building and its 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.
|
|
|
|
@blankline
|
|
Since version 4.0, @command{nano} no longer hard-wraps overlong
|
|
lines by default. It also by default uses linewise scrolling, and by
|
|
default includes the line below the title bar in the editing area.
|
|
In case you want the old, Pico behavior back, you can use the
|
|
following options: @option{--breaklonglines},
|
|
@option{--jumpyscrolling}, and @option{--emptyline}
|
|
(or @option{-bje}).
|
|
|
|
@blankline
|
|
Since version 8.0, @kbd{^F} starts a forward search, @kbd{^B} starts
|
|
a backward search, @kbd{M-F} searches the next occurrence forward,
|
|
and @kbd{M-B} searches the next occurrence backward. If you want
|
|
those keystrokes to do what they did before version 8.0, see the
|
|
rebindings in the sample nanorc file.
|
|
|
|
@blankline
|
|
Please report bugs via @url{https://savannah.gnu.org/bugs/?group=nano}.
|
|
|
|
@blankline
|
|
Questions about using nano you can ask at @email{help-nano@@gnu.org}.
|
|
|
|
@blankline
|
|
For background information see @url{https://nano-editor.org/}.
|
|
|
|
|
|
@node Invoking
|
|
@chapter Invoking
|
|
|
|
The usual way to invoke @command{nano} is:
|
|
|
|
@blankline
|
|
@example
|
|
@code{nano [FILE]}
|
|
@end example
|
|
@blankline
|
|
|
|
But it is also possible to specify one or more options (@pxref{Command-line Options}),
|
|
and to edit several files in a row.
|
|
|
|
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 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:
|
|
|
|
@blankline
|
|
@example
|
|
@code{nano [OPTION]@dots{} [[+LINE[,COLUMN]|+[crCR]@{/|?@}STRING] FILE]@dots{}}
|
|
@end example
|
|
@blankline
|
|
|
|
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 Editor Basics
|
|
@chapter Editor Basics
|
|
|
|
@menu
|
|
* Screen Layout::
|
|
* Entering Text::
|
|
* Commands::
|
|
* The Cutbuffer::
|
|
* The Mark::
|
|
* Search and Replace::
|
|
* Using the Mouse::
|
|
* Anchors::
|
|
* Limitations::
|
|
@end menu
|
|
|
|
@node Screen Layout
|
|
@section Screen Layout
|
|
|
|
The default screen of @command{nano} consists of four areas.
|
|
From top to bottom these are: the title bar, 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 appear on the status bar. Any questions
|
|
that are asked of the user are asked on the status bar, and any user
|
|
input (search strings, filenames, etc.) is 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.
|
|
|
|
@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}) makes @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
|
|
series of hexadecimal digits (at most six, or concluded with @kbd{Enter} or
|
|
@kbd{Space}) enters the corresponding Unicode character into the buffer.
|
|
@end itemize
|
|
|
|
For example, typing @kbd{Esc Esc 2 3 4} enters the character "ê" ---
|
|
useful when writing about a French party. Typing @kbd{M-V 0 0 2 2 c 4}
|
|
enters the symbol "⋄", a little diamond.
|
|
|
|
Typing @kbd{M-V} followed by anything other than a hexadecimal digit
|
|
enters this keystroke verbatim into the buffer, allowing the user
|
|
to insert literal control codes (except @code{^J}) or escape sequences.
|
|
|
|
@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 with @kbd{^K}.
|
|
The cut line is stored in the cutbuffer. Consecutive strokes of @kbd{^K}
|
|
add each cut line to this buffer, but a @kbd{^K}
|
|
after any other keystroke overwrites the entire cutbuffer.
|
|
|
|
The contents of the cutbuffer can be pasted at the current cursor position
|
|
with @kbd{^U}.
|
|
|
|
A line of text can be copied into the cutbuffer (without cutting it)
|
|
with @kbd{M-6}.
|
|
|
|
@node The Mark
|
|
@section The Mark
|
|
|
|
Text can be selected by first 'setting the Mark' with @kbd{^6}
|
|
or @kbd{M-A} and then moving the cursor to the other end of the portion
|
|
to be selected. The selected portion of text is 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^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 increases the stride. Such a selection is cancelled
|
|
upon any cursor movement where @kbd{Shift} isn't held.
|
|
|
|
Cutting or copying selected text toggles off the mark automatically.
|
|
If needed, it can be toggled off manually with another @kbd{^6} or @kbd{M-A}.
|
|
|
|
@node Search and Replace
|
|
@section Search and Replace
|
|
|
|
With the Search command (@kbd{^F} or @kbd{^W}) one can search the
|
|
current buffer for the occurrence of any string. The default search
|
|
mode is forward, case-insensitive, and for literal strings. But one
|
|
can search backwards by toggling @kbd{M-B}, search case sensitively
|
|
with @kbd{M-C}, and interpret regular expressions in the search string
|
|
with @kbd{M-R}.
|
|
|
|
With the Replacement command (@kbd{M-R} or @kbd{^\}) one can replace
|
|
a given string (or regular expression) with another string.
|
|
When a regular expression contains fragments between parentheses,
|
|
the replacement string can refer back to these fragments via
|
|
@code{\1} to @code{\9}.
|
|
|
|
For each occurrence of the search string you are asked whether to
|
|
replace it. You can choose Yes (replace it), or No (skip this one),
|
|
or All (replace all remaining occurrences without asking any more),
|
|
or Cancel (stop with replacing, but replacements that have already
|
|
been made will not be undone).
|
|
|
|
If before a replacing session starts a region is marked, then
|
|
only occurrences of the search string within the marked region
|
|
will be replaced.
|
|
|
|
A regular expression always covers just one line --- it cannot span
|
|
multiple lines. And neither a search string nor a replacement string
|
|
can 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 two help lines
|
|
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 works in the X Window System, and on the console when gpm
|
|
is running.
|
|
|
|
@node Anchors
|
|
@section Anchors
|
|
|
|
With @kbd{M-Ins} you can place an anchor (a kind of temporary bookmark)
|
|
at the current line. With @kbd{M-PgUp} and @kbd{M-PgDn} you can jump
|
|
to an anchor in the backward/forward direction. This jumping wraps
|
|
around at the top and bottom.
|
|
|
|
When a line with an anchor is removed, the line where the cursor ends up
|
|
inherits the anchor. After performing an operation on the entire buffer
|
|
(like formatting it, piping it through a command, or doing an external
|
|
spell check on it), any anchors that were present are gone. And when
|
|
you close the buffer, all its anchors simply disappear; they are not saved.
|
|
|
|
Anchors are visualized in the margin when line numbers are activated.
|
|
|
|
@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 The Help Viewer
|
|
@chapter The Help Viewer
|
|
|
|
The built-in help 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 viewer.
|
|
|
|
|
|
@node The File Browser
|
|
@chapter The File Browser
|
|
|
|
When in the Read-File (@kbd{^R}) or Write-Out menu (@kbd{^O}),
|
|
pressing @kbd{^T} invokes 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
|
|
enters and displays 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 Command-line Options
|
|
@chapter Command-line Options
|
|
|
|
@command{nano} accepts 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 jumps
|
|
to that beginning (either forwards or backwards). If the cursor is
|
|
already at that position, it jumps 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
|
|
For the interface, use bold instead of reverse video.
|
|
This can be overridden for specific elements
|
|
by setting the options @code{titlecolor}, @code{statuscolor},
|
|
@code{promptcolor}, @code{minicolor}, @code{keycolor},
|
|
@code{numbercolor}, and/or @code{selectedcolor} in your
|
|
nanorc file. @xref{@code{set keycolor}} for details.
|
|
|
|
@item -E
|
|
@itemx --tabstospaces
|
|
Convert each typed tab to spaces --- to the number of spaces
|
|
that a tab at that position would take up.
|
|
(Note: pasted tabs are not converted.)
|
|
|
|
@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 some keys to work
|
|
properly, it means that the terminfo terminal description that is used
|
|
does not fully match the actual behavior of your terminal. This can
|
|
happen when you ssh into a BSD machine, for example.)
|
|
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 --bookstyle
|
|
When justifying, treat any line that starts with whitespace as the
|
|
beginning of a paragraph (unless auto-indenting is on).
|
|
|
|
@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 --softwrap
|
|
Display over multiple screen rows lines that exceed the screen's width.
|
|
(You can make this soft-wrapping occur at whitespace instead of rudely at
|
|
the screen's edge, by using also @code{--atblanks}.)
|
|
|
|
@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
|
|
Make status-bar messages disappear after 1 keystroke instead of after 20.
|
|
Note that option @option{-c} (@option{--constantshow}) overrides this.
|
|
When option @option{--minibar} or @option{--zero} is in effect,
|
|
@option{--quickblank} makes a message disappear after
|
|
0.8 seconds instead of after the default 1.5 seconds.
|
|
|
|
@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. When using this option, you
|
|
probably want to omit @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 @kbd{Backspace} or @kbd{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 @kbd{Delete} and @kbd{Backspace} keys differently so that
|
|
both work properly. You should only use this option when on your system
|
|
either @kbd{Backspace} acts like Delete or @kbd{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.
|
|
(Any line with an anchor additionally gets a mark in the margin.)
|
|
|
|
@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 two clicks),
|
|
and execute shortcuts. The mouse works 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 starts with a blank buffer,
|
|
and writes 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{^S} (XOFF) and @kbd{^Q} (XON) sequences so that
|
|
data being sent to the terminal can be stopped and resumed.
|
|
Note that option @option{-/} (@option{--modernbindings}) overrides this.
|
|
|
|
@item -q
|
|
@itemx --indicator
|
|
Display a "scrollbar" on the righthand side of the edit window.
|
|
It shows the position of the viewport in the buffer
|
|
and how much of the buffer is covered by the viewport.
|
|
|
|
@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 occurs
|
|
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{argument} @dots{}]"
|
|
@itemx --speller="@var{program} [@var{argument} @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 --saveonexit
|
|
Save a changed buffer without prompting (when exiting with @kbd{^X}).
|
|
This can be handy when @command{nano} is used as the composer of an
|
|
email 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.)
|
|
|
|
|
|
@item -x
|
|
@itemx --nohelp
|
|
Expert mode: don't show the two help lines 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 @kbd{Ctrl+Right} and @kbd{Ctrl+Delete} stop at word ends
|
|
instead of beginnings.
|
|
|
|
@item -z
|
|
@itemx --listsyntaxes
|
|
List the names of the available syntaxes and exit.
|
|
|
|
@item -!
|
|
@itemx --magic
|
|
When neither the file's name nor its first line give a clue,
|
|
try using libmagic to determine the applicable syntax.
|
|
|
|
@item -@@
|
|
@itemx --colonparsing
|
|
When a filename given on the command line ends in a colon plus digits
|
|
and this filename does not exist, then snip the colon plus digits and
|
|
understand the digits as a line number. If the trimmed filename does
|
|
not exist either, then repeat the process and understand the obtained
|
|
two numbers as line and column number. But if the doubly trimmed
|
|
filename does not exist either, then forget the trimming and accept
|
|
the original filename as is. To disable this colon parsing for some
|
|
file, use @code{+1} or similar before the relevant filename.
|
|
|
|
@item -%
|
|
@itemx --stateflags
|
|
Use the top-right corner of the screen for showing some state flags:
|
|
@code{I} when auto-indenting, @code{M} when the mark is on, @code{L} when
|
|
hard-wrapping (breaking long lines), @code{R} when recording a macro,
|
|
and @code{S} when soft-wrapping.
|
|
When the buffer is modified, a star (@code{*}) is shown after the
|
|
filename in the center of the title bar.
|
|
|
|
@item -_
|
|
@itemx --minibar
|
|
Suppress the title bar and instead show information about
|
|
the current buffer at the bottom of the screen, in the space
|
|
for the status bar. In this "mini bar" the filename is shown
|
|
on the left, followed by an asterisk if the buffer has been modified.
|
|
On the right are displayed the current line and column number, the
|
|
code of the character under the cursor (in Unicode format: U+xxxx),
|
|
the same flags as are shown by @code{--stateflags}, and a percentage
|
|
that expresses how far the cursor is into the file (linewise).
|
|
When a file is loaded or saved, and also when switching between buffers,
|
|
the number of lines in the buffer is displayed after the filename.
|
|
This number is cleared upon the next keystroke, or replaced with an
|
|
[i/n] counter when multiple buffers are open.
|
|
The line plus column numbers and the character code are displayed only when
|
|
@code{--constantshow} is used, and can be toggled on and off with @kbd{M-C}.
|
|
The state flags are displayed only when @code{--stateflags} is used.
|
|
|
|
@item -0
|
|
@itemx --zero
|
|
Hide all elements of the interface (title bar, status bar, and help lines)
|
|
and use all rows of the terminal for showing the contents of the buffer.
|
|
The status bar appears only when there is a significant message,
|
|
and disappears after 1.5 seconds or upon the next keystroke.
|
|
With @kbd{M-Z} the title bar plus status bar can be toggled.
|
|
With @kbd{M-X} the help lines.
|
|
|
|
@item -/
|
|
@itemx --modernbindings
|
|
Use key bindings similar to the ones that most modern programs use:
|
|
@kbd{^X} cuts, @kbd{^C} copies, @kbd{^V} pastes,
|
|
@kbd{^Z} undoes, @kbd{^Y} redoes,
|
|
@kbd{^F} searches forward, @kbd{^G} searches next,
|
|
@kbd{^S} saves, @kbd{^O} opens a file, @kbd{^Q} quits,
|
|
and (when the terminal permits) @kbd{^H} shows help.
|
|
Furthermore, @kbd{^A} sets the mark,
|
|
@kbd{^R} makes replacements, @kbd{^D} searches previous,
|
|
@kbd{^P} shows the position, @kbd{^T} goes to a line,
|
|
@kbd{^W} writes out a file, and @kbd{^E} executes a command.
|
|
Note that this overrides option @option{-p} (@option{--preserve}).
|
|
|
|
@end table
|
|
|
|
@sp 1
|
|
Suspension is enabled by default, reachable via @kbd{^T^Z}.
|
|
(If you want a plain @kbd{^Z} to suspend nano, add
|
|
@code{bind ^Z suspend main} to your nanorc.)
|
|
|
|
|
|
@node Feature Toggles
|
|
@chapter Feature Toggles
|
|
|
|
Toggles allow you to change certain aspects of the editor while you are
|
|
editing, aspects that you would normally specify via command-line options
|
|
or nanorc options. Each toggle can be flicked via a Meta-key combination
|
|
--- the @kbd{Meta} key is normally the @kbd{Alt} key (@pxref{Commands}
|
|
for more details). The following global toggles are available:
|
|
|
|
@sp 1
|
|
@table @code
|
|
|
|
@item Constant Cursor Position Display
|
|
@kbd{M-C} toggles the @option{-c} (@option{--constantshow}) command-line option.
|
|
|
|
@item Smart Home Key
|
|
@kbd{M-H} toggles the @option{-A} (@option{--smarthome}) command-line option.
|
|
|
|
@item Auto Indent
|
|
@kbd{M-I} toggles the @option{-i} (@option{--autoindent}) command-line option.
|
|
|
|
@item Cut From Cursor To End-of-Line
|
|
@kbd{M-K} toggles the @option{-k} (@option{--cutfromcursor}) command-line option.
|
|
|
|
@item Long-Line Wrapping
|
|
@kbd{M-L} toggles the @option{-b} (@option{--breaklonglines}) command-line option.
|
|
|
|
@item Mouse Support
|
|
@kbd{M-M} toggles the @option{-m} (@option{--mouse}) command-line option.
|
|
|
|
@item Line Numbers
|
|
@kbd{M-N} toggles the @option{-l} (@option{--linenumbers}) command-line option.
|
|
|
|
@item Tabs To Spaces
|
|
@kbd{M-O} toggles the @option{-E} (@option{--tabstospaces}) command-line option.
|
|
|
|
@item Whitespace Display
|
|
@kbd{M-P} toggles the displaying of whitespace (@pxref{Whitespace}).
|
|
|
|
@item Soft Wrapping
|
|
@kbd{M-S} toggles the @option{-S} (@option{--softwrap}) command-line option.
|
|
|
|
@item Expert
|
|
@kbd{M-X} toggles the @option{-x} (@option{--nohelp}) command-line option.
|
|
|
|
@item Syntax Coloring
|
|
@kbd{M-Y} toggles syntax coloring, when your nanorc defines syntaxes
|
|
(@pxref{Syntax Highlighting}).
|
|
|
|
@item Hidden Interface
|
|
@kbd{M-Z} toggles the @option{-0} (@option{--zero}) command-line option,
|
|
but without the @option{-x} (@option{--nohelp}) part. That is: it toggles
|
|
just the title bar plus status bar (or the combined mini bar plus status bar),
|
|
not the help lines. The latter are toggled with @kbd{M-X}.
|
|
|
|
@end table
|
|
|
|
|
|
@node Nanorc Files
|
|
@chapter Nanorc Files
|
|
|
|
Nanorc files can be used to configure @command{nano} to your liking
|
|
without using command-line options. During startup @command{nano}
|
|
normally reads two files: first the system-wide file, @file{/etc/nanorc}
|
|
(the exact path may be different on your system), and then the user-specific
|
|
file, either @file{~/.nanorc} or @file{$XDG_CONFIG_HOME/nano/nanorc} or
|
|
@file{.config/nano/nanorc}, whichever exists first.
|
|
However, if @option{--rcfile} is given, @command{nano} skips the
|
|
above files and reads just the specified settings file.
|
|
|
|
A nanorc file can contain @command{set} and @command{unset} commands for
|
|
various options (@pxref{Settings}). It can also contain commands that
|
|
define syntax highlighting (@pxref{Syntax Highlighting}) and commands
|
|
that rebind keys (@ref{Rebinding Keys}). Each command should be on a
|
|
separate line, and all commands should be written in lowercase.
|
|
|
|
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 from the system's nanorc file in your own nanorc. Options that
|
|
take an argument cannot be unset, but can be assigned the empty string.
|
|
|
|
Any command-line option overrides its nanorc setting, of course.
|
|
|
|
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 @kbd{Ctrl+Right} and @kbd{Ctrl+Delete} 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,
|
|
prompt bar, mini bar, key combos, line numbers, and selected text.
|
|
This can be overridden by setting the options @code{titlecolor},
|
|
@code{statuscolor}, @code{promptcolor}, @code{minicolor},
|
|
@code{keycolor}, @code{numbercolor}, and/or @code{selectedcolor}.
|
|
|
|
@item set bookstyle
|
|
When justifying, treat any line that starts with whitespace as the
|
|
beginning of a paragraph (unless auto-indenting is on).
|
|
|
|
@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 colonparsing
|
|
When a filename given on the command line ends in a colon plus digits
|
|
and this filename does not exist, then snip the colon plus digits and
|
|
understand the digits as a line number. If the trimmed filename does
|
|
not exist either, then repeat the process and understand the obtained
|
|
two numbers as line and column number. But if the doubly trimmed
|
|
filename does not exist either, then forget the trimming and accept
|
|
the original filename as is. To disable this colon parsing for some
|
|
file, use @code{+1} or similar before the relevant filename.
|
|
|
|
@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 [bold,][italic,]@var{fgcolor},@var{bgcolor}
|
|
Use this color combination for the status bar when an error message is displayed.
|
|
The default value is @t{bold,white,red}.
|
|
@xref{@code{set keycolor}} 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 occurs
|
|
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}.
|
|
|
|
@item set functioncolor [bold,][italic,]@var{fgcolor},@var{bgcolor}
|
|
Use this color combination for the concise function descriptions
|
|
in the two help lines at the bottom of the screen.
|
|
@xref{@code{set keycolor}} for valid color names.
|
|
|
|
@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 indicator
|
|
Display a "scrollbar" on the righthand side of the edit window.
|
|
It shows the position of the viewport in the buffer
|
|
and how much of the buffer is covered by the viewport.
|
|
|
|
@item set jumpyscrolling
|
|
Scroll the buffer contents per half-screen instead of per line.
|
|
|
|
@anchor{@code{set keycolor}}
|
|
@item set keycolor [bold,][italic,]@var{fgcolor},@var{bgcolor}
|
|
Use this color combination for the shortcut key combos
|
|
in the two help lines at the bottom of the screen.
|
|
Valid names for the foreground and background colors are:
|
|
@code{red}, @code{green}, @code{blue},
|
|
@code{magenta}, @code{yellow}, @code{cyan},
|
|
@code{white}, and @code{black}.
|
|
Each of these eight names may be prefixed with the word
|
|
@code{light} to get a brighter version of that color.
|
|
The word @code{grey} or @code{gray} may be used
|
|
as a synonym for @code{lightblack}.
|
|
On a Linux console, @code{light} does not have
|
|
any effect for a background color.
|
|
|
|
On terminal emulators that can do at least 256 colors,
|
|
other valid (but unprefixable) color names are:
|
|
@code{pink}, @code{purple}, @code{mauve},
|
|
@code{lagoon}, @code{mint}, @code{lime},
|
|
@code{peach}, @code{orange}, @code{latte},
|
|
@code{rosy}, @code{beet}, @code{plum}, @code{sea},
|
|
@code{sky}, @code{slate}, @code{teal}, @code{sage},
|
|
@code{brown}, @code{ocher}, @code{sand}, @code{tawny},
|
|
@code{brick}, @code{crimson}, and @code{normal}
|
|
--- where @code{normal} means the default foreground or background color.
|
|
On such emulators, the color may also be specified as a three-digit hexadecimal
|
|
number prefixed with @code{#}, with the digits representing the amounts of red,
|
|
green, and blue, respectively. This tells @command{nano} to select from the
|
|
available palette the color that approximates the given values.
|
|
|
|
Either @var{fgcolor} or ,@var{bgcolor} may be left out,
|
|
and the pair may be preceded by @code{bold} and/or @code{italic}
|
|
(separated by commas) to get a bold and/or slanting typeface,
|
|
if your terminal can do those.
|
|
|
|
@item set linenumbers
|
|
Display line numbers to the left of the text area.
|
|
(Any line with an anchor additionally gets a mark in the margin.)
|
|
|
|
@item set locking
|
|
Enable vim-style lock-files for when editing files.
|
|
|
|
@item set magic
|
|
When neither the file's name nor its first line give a clue,
|
|
try using libmagic to determine the applicable syntax.
|
|
(Calling libmagic can be relatively time consuming.
|
|
It is therefore not done by default.)
|
|
|
|
@anchor{@code{set matchbrackets}}
|
|
@item set matchbrackets "@var{characters}"
|
|
Specify 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 minibar
|
|
Suppress the title bar and instead show information about
|
|
the current buffer at the bottom of the screen, in the space
|
|
for the status bar. In this "mini bar" the filename is shown
|
|
on the left, followed by an asterisk if the buffer has been modified.
|
|
On the right are displayed the current line and column number, the
|
|
code of the character under the cursor (in Unicode format: U+xxxx),
|
|
the same flags as are shown by @code{set stateflags}, and a percentage
|
|
that expresses how far the cursor is into the file (linewise).
|
|
When a file is loaded or saved, and also when switching between buffers,
|
|
the number of lines in the buffer is displayed after the filename.
|
|
This number is cleared upon the next keystroke, or replaced with an
|
|
[i/n] counter when multiple buffers are open.
|
|
The line plus column numbers and the character code are displayed only when
|
|
@code{set constantshow} is used, and can be toggled on and off with @kbd{M-C}.
|
|
The state flags are displayed only when @code{set stateflags} is used.
|
|
|
|
@item set minicolor [bold,][italic,]@var{fgcolor},@var{bgcolor}
|
|
Use this color combination for the mini bar.
|
|
(When this option is not specified, the colors of the title bar are used.)
|
|
@xref{@code{set keycolor}} for valid color names.
|
|
|
|
@item set mouse
|
|
Enable mouse support, so that mouse clicks can be used to place the
|
|
cursor, set the mark (with two clicks), 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 nowrap
|
|
Deprecated option since it has become the default setting.
|
|
When needed, use @code{unset breaklonglines} instead.
|
|
|
|
@item set numbercolor [bold,][italic,]@var{fgcolor},@var{bgcolor}
|
|
Use this color combination for line numbers.
|
|
@xref{@code{set keycolor}} for valid color names.
|
|
|
|
@item set operatingdir "@var{directory}"
|
|
@command{nano} only reads and writes 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 XOFF and XON sequences (@kbd{^S} and @kbd{^Q}) so that
|
|
they are caught by the terminal (stopping and resuming the output).
|
|
|
|
@item set promptcolor [bold,][italic,]@var{fgcolor},@var{bgcolor}
|
|
Use this color combination for the prompt bar.
|
|
(When this option is not specified, the colors of the title bar are used.)
|
|
@xref{@code{set keycolor}} for valid color names.
|
|
|
|
@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
|
|
Make status-bar messages disappear after 1 keystroke instead of after 20.
|
|
Note that option @option{constantshow} overrides this.
|
|
When option @option{minibar} or @option{zero} is in effect,
|
|
@option{quickblank} makes a message disappear after
|
|
0.8 seconds instead of after the default 1.5 seconds.
|
|
|
|
@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 some keys to work
|
|
properly, it means that the terminfo terminal description that is used
|
|
does not fully match the actual behavior of your terminal. This can
|
|
happen when you ssh into a BSD machine, for example.)
|
|
Using this option disables @command{nano}'s mouse support.
|
|
|
|
@item set rebinddelete
|
|
Interpret the @kbd{Delete} and @kbd{Backspace} keys differently so that
|
|
both work properly. You should only use this option when on your system
|
|
either @kbd{Backspace} acts like Delete or @kbd{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 saveonexit
|
|
Save a changed buffer automatically on exit (@kbd{^X}); don't prompt.
|
|
|
|
@item set scrollercolor @var{fgcolor},@var{bgcolor}
|
|
Use this color combination for the indicator alias "scrollbar".
|
|
@xref{@code{set keycolor}} for valid color names.
|
|
|
|
@item set selectedcolor [bold,][italic,]@var{fgcolor},@var{bgcolor}
|
|
Use this color combination for selected text.
|
|
@xref{@code{set keycolor}} 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 jumps
|
|
to that beginning (either forwards or backwards). If the cursor is
|
|
already at that position, it jumps to the true beginning of the line.
|
|
|
|
@item set softwrap
|
|
Display lines that exceed the screen's width over multiple screen lines.
|
|
(You can make this soft-wrapping occur at whitespace instead of rudely at
|
|
the screen's edge, by using also @code{set atblanks}.)
|
|
|
|
@item set speller "@var{program} [@var{argument} @dots{}]"
|
|
Use the given program to do spell checking and correcting.
|
|
@xref{@option{--speller}} for details.
|
|
|
|
@item set spotlightcolor [bold,][italic,]@var{fgcolor},@var{bgcolor}
|
|
Use this color combination for highlighting a search match.
|
|
The default value is @t{black,lightyellow}.
|
|
@xref{@code{set keycolor}} for valid color names.
|
|
|
|
@item set stateflags
|
|
Use the top-right corner of the screen for showing some state flags:
|
|
@code{I} when auto-indenting, @code{M} when the mark is on, @code{L} when
|
|
hard-wrapping (breaking long lines), @code{R} when recording a macro,
|
|
and @code{S} when soft-wrapping.
|
|
When the buffer is modified, a star (@code{*}) is shown after the
|
|
filename in the center of the title bar.
|
|
|
|
@item set statuscolor [bold,][italic,]@var{fgcolor},@var{bgcolor}
|
|
Use this color combination for the status bar.
|
|
@xref{@code{set keycolor}} for valid color names.
|
|
|
|
@item set stripecolor [bold,][italic,]@var{fgcolor},@var{bgcolor}
|
|
Use this color combination for the vertical guiding stripe.
|
|
@xref{@code{set keycolor}} for valid color names.
|
|
|
|
@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 each typed tab to spaces --- to the number of spaces
|
|
that a tab at that position would take up.
|
|
(Note: pasted tabs are not converted.)
|
|
|
|
@item set titlecolor [bold,][italic,]@var{fgcolor},@var{bgcolor}
|
|
Use this color combination for the title bar.
|
|
@xref{@code{set keycolor}} 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}.)
|
|
|
|
@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. When using this option, you
|
|
probably want to unset @code{wordbounds}.
|
|
|
|
@item set zap
|
|
Let an unmodified @kbd{Backspace} or @kbd{Delete} erase the marked region
|
|
(instead of a single character, and without affecting the cutbuffer).
|
|
|
|
@item set zero
|
|
Hide all elements of the interface (title bar, status bar, and help lines)
|
|
and use all rows of the terminal for showing the contents of the buffer.
|
|
The status bar appears only when there is a significant message,
|
|
and disappears after 1.5 seconds or upon the next keystroke.
|
|
With @kbd{M-Z} the title bar plus status bar can be toggled.
|
|
With @kbd{M-X} the help lines.
|
|
|
|
@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}.
|
|
|
|
See @file{/usr/share/nano/} and @file{/usr/share/nano/extra/}
|
|
for the syntax-coloring definitions that are available out of the box.
|
|
|
|
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}.
|
|
|
|
Each regular expression in a @file{nanorc} file should be wrapped in
|
|
double quotes (@code{""}). Multiple regular expressions can follow
|
|
each other on a line by separating them with blanks. This means that
|
|
a regular expression cannot contain a double quote followed by a blank.
|
|
When you need this combination inside a regular expression,
|
|
then either the double quote or the blank should be put
|
|
between square brackets (@code{[]}).
|
|
|
|
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
|
|
are added to this syntax, until a new @code{syntax}
|
|
command is encountered.
|
|
|
|
When @command{nano} is run, this syntax is automatically
|
|
activated (for the relevant buffer) if the absolute filename
|
|
matches the extended regular expression @var{fileregex}.
|
|
Or the syntax can be explicitly activated (for all buffers)
|
|
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 querying is done only when @code{libmagic} is actually installed
|
|
on the system and @option{--magic} or @code{set magic} was given.)
|
|
|
|
@item formatter @var{program} [@var{argument} @dots{}]
|
|
Run the given @var{program} on the full contents of the current buffer.
|
|
|
|
@item linter @var{program} [@var{argument} @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 [bold,][italic,]@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{red}, @code{green}, @code{blue},
|
|
@code{magenta}, @code{yellow}, @code{cyan},
|
|
@code{white}, and @code{black}.
|
|
Each of these eight names may be prefixed with the word
|
|
@code{light} to get a brighter version of that color.
|
|
The word @code{grey} or @code{gray} may be used
|
|
as a synonym for @code{lightblack}.
|
|
On a Linux console, @code{light} does not have
|
|
any effect for a background color.
|
|
|
|
On terminal emulators that can do at least 256 colors,
|
|
other valid (but unprefixable) color names are:
|
|
@code{pink}, @code{purple}, @code{mauve},
|
|
@code{lagoon}, @code{mint}, @code{lime},
|
|
@code{peach}, @code{orange}, @code{latte},
|
|
@code{rosy}, @code{beet}, @code{plum}, @code{sea},
|
|
@code{sky}, @code{slate}, @code{teal}, @code{sage},
|
|
@code{brown}, @code{ocher}, @code{sand}, @code{tawny},
|
|
@code{brick}, @code{crimson}, and @code{normal}
|
|
--- where @code{normal} means the default foreground or background color.
|
|
On such emulators, the color may also be specified as a three-digit hexadecimal
|
|
number prefixed with @code{#}, with the digits representing the amounts of red,
|
|
green, and blue, respectively. This tells @command{nano} to select from the
|
|
available palette the color that approximates the given values.
|
|
|
|
The color pair may be preceded by @code{bold} and/or @code{italic}
|
|
(separated by commas) to get a bold and/or slanting typeface,
|
|
if your terminal can do those.
|
|
|
|
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 [bold,][italic,]@var{fgcolor},@var{bgcolor} "@var{regex}" @dots{}
|
|
Same as above, except that the matching is case insensitive.
|
|
|
|
@item color [bold,][italic,]@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" is colored.
|
|
This allows syntax highlighting to span multiple lines.
|
|
|
|
@item icolor [bold,][italic,]@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{argument} @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{formatter}, @code{linter}, @code{comment},
|
|
or @code{tabgives} 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).
|
|
Besides literal text and/or control codes, the @code{string} may contain
|
|
function names between braces. These functions are invoked when the
|
|
key is typed. To include a literal opening brace, use @code{@{@{@}}.
|
|
|
|
@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
|
|
|
|
Note that @code{bind key "@{function@}" menu} is equivalent to
|
|
@code{bind key function menu}, except that for the latter form
|
|
@command{nano} checks the availability of the @code{function}
|
|
in the given @code{menu} at startup time (and report an error if
|
|
it does not exist there), whereas for the first form @command{nano}
|
|
checks at execution time that the @code{function} exists but not
|
|
whether it makes any sense in the current menu. The user has to take
|
|
care that a function name between braces (or any sequence of them)
|
|
is appropriate. Strange behavior can result when it is not.
|
|
|
|
@sp 1
|
|
The format of @code{key} should be one of:
|
|
|
|
@indentedblock
|
|
@table @asis
|
|
|
|
@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-8}.
|
|
|
|
@item @code{Sh-M-@var{X}}
|
|
where @var{X} is a Latin letter.
|
|
Example: @code{Sh-M-U}.
|
|
By default, each Meta+letter keystroke does the same as the corresponding
|
|
Shift+Meta+letter. But when any Shift+Meta bind is made, that will
|
|
no longer be the case, for all letters.
|
|
|
|
@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 table
|
|
@end indentedblock
|
|
|
|
@sp 1
|
|
Rebinding @code{^M} (Enter) or @code{^I} (Tab) is probably not a good idea.
|
|
Rebinding @code{^[} (Esc) is not possible, because its keycode
|
|
is the starter byte of Meta keystrokes and escape sequences.
|
|
Rebinding any of the dedicated cursor-moving keys (the arrows, Home, End,
|
|
PageUp and PageDown) is not possible.
|
|
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 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 @kbd{Alt+Delete}.)
|
|
|
|
@item chopwordleft
|
|
Deletes from the cursor position to the beginning of the preceding word.
|
|
(This function is bound by default to @kbd{Shift+Ctrl+Delete}. If your terminal
|
|
produces @code{^H} for @kbd{Ctrl+Backspace}, you can make @kbd{Ctrl+Backspace} delete
|
|
the word to the left of the cursor by rebinding @kbd{^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 @kbd{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 location
|
|
Reports the current position of the cursor in the buffer:
|
|
the line, column, and character positions.
|
|
|
|
@item wordcount
|
|
Counts and reports on the status bar the number of lines, words,
|
|
and characters in the current buffer (or in the marked region).
|
|
|
|
@item execute
|
|
Prompts for a program to execute. The program's output will be inserted
|
|
into the current buffer (or into a new buffer when @kbd{M-F} is toggled).
|
|
|
|
@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).
|
|
(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
|
|
Invokes a syntax-checking program (if the active syntax defines one).
|
|
If this program produces lines of the form "filename:linenum:charnum:
|
|
some message", then the cursor is put at the indicated position
|
|
in the mentioned file while showing "some message" on the status bar.
|
|
You can move from message to message with @kbd{PgUp} and @kbd{PgDn},
|
|
and leave linting mode with @kbd{^C} or @kbd{Enter}.
|
|
|
|
@item justify
|
|
Justifies the current paragraph (or the marked region).
|
|
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 (or the marked region).
|
|
|
|
@item indent
|
|
Indents (shifts to the right) the current line or the marked lines.
|
|
|
|
@item unindent
|
|
Unindents (shifts to the left) the current line or the marked lines.
|
|
|
|
@item comment
|
|
Comments or uncomments the current line or the marked lines,
|
|
using the comment style specified in the active syntax.
|
|
|
|
@item complete
|
|
Completes (when possible) 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.
|
|
(This function is bound by default to @kbd{Alt+Up}.
|
|
If @kbd{Alt+Up} does nothing on your Linux console, see the FAQ:
|
|
@url{https://nano-editor.org/dist/latest/faq.html#4.1}.)
|
|
|
|
@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.
|
|
(This function is bound by default to @kbd{Alt+Down}.)
|
|
|
|
@item center
|
|
Scrolls the line with the cursor to the middle of the viewport.
|
|
|
|
@item cycle
|
|
Scrolls the line with the cursor first to the middle of the viewport,
|
|
then to the top, then to the bottom.
|
|
|
|
@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 toprow
|
|
Moves the cursor to the first row in the viewport.
|
|
|
|
@item bottomrow
|
|
Moves the cursor to the last row in the viewport.
|
|
|
|
@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 (or brace or parenthesis, etc.) that matches
|
|
(pairs) with the one under the cursor. @xref{@code{set matchbrackets}}.
|
|
|
|
@item anchor
|
|
Places an anchor at the current line, or removes it when already present.
|
|
(An anchor is visible when line numbers are activated.)
|
|
|
|
@item prevanchor
|
|
Goes to the first anchor before the current line.
|
|
|
|
@item nextanchor
|
|
Goes to the first anchor after the current line.
|
|
|
|
@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, or begins Unicode input
|
|
when a hexadecimal digit is typed (@pxref{Entering Text} for details).
|
|
|
|
@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 and returns control to the shell
|
|
(until you tell the process to resume execution with @kbd{fg}).
|
|
|
|
@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
|
|
Switches from inserting a file to 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{--saveonexit}
|
|
is in effect.)
|
|
|
|
@item browser
|
|
Starts the file browser (in the Read File and Write Out menus),
|
|
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 in the list when using the file browser.
|
|
|
|
@item lastfile
|
|
Goes to the last file in the list when using the file browser.
|
|
|
|
@item nohelp
|
|
Toggles the presence of the two-line list of key bindings at the bottom of the screen.
|
|
(This toggle is special: it is available in all menus except the help viewer
|
|
and the linter. All further toggles are available in the main menu only.)
|
|
|
|
@item zero
|
|
Toggles the presence of title bar and status bar.
|
|
|
|
@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 cuts the whole line or just from the current cursor
|
|
position to the end of the line.
|
|
|
|
@item breaklonglines
|
|
Toggles whether the overlong part of a line is hard-wrapped to the next line.
|
|
|
|
@item tabstospaces
|
|
Toggles whether typed tabs are converted to spaces.
|
|
|
|
@item mouse
|
|
Toggles mouse support.
|
|
|
|
@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 help
|
|
The help-viewer menu.
|
|
|
|
@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 browser
|
|
The 'file browser' menu, for selecting a file to be opened or
|
|
inserted or written 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 execute
|
|
The menu for inserting the output from an external command,
|
|
or for filtering the buffer (or the marked region) through
|
|
an external command, or for executing one of several tools.
|
|
|
|
@item spell
|
|
The menu of the integrated spell checker where the user can edit a misspelled word.
|
|
|
|
@item linter
|
|
The linter menu, which allows jumping through the linting messages.
|
|
|
|
@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 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} scrolls 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 of 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 pauses at each found search string and asks 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
|
|
a nanorc file), text entered as search or replace strings is stored.
|
|
These strings can be accessed with the up/down arrow keys at their
|
|
respective prompts, 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 strings 'Aplpe' and 'aplpe'
|
|
will be offered 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 reads files from the user's home directory (when
|
|
using @kbd{^R}), but it writes 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 its Options
|
|
@chapter Building and its Options
|
|
|
|
Building @command{nano} from source is straightforward if you are
|
|
familiar with compiling programs with autoconf support:
|
|
|
|
@blankline
|
|
@example
|
|
tar -xf nano-x.y.tar.gz
|
|
cd nano-x.y
|
|
./configure
|
|
make
|
|
make install
|
|
@end example
|
|
@blankline
|
|
|
|
The possible options to @code{./configure} are:
|
|
|
|
@table @code
|
|
|
|
@item --disable-browser
|
|
Exclude the 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 (@w{@kbd{M-3}}).
|
|
|
|
@item --disable-extra
|
|
Exclude the Easter egg: a crawl of major contributors.
|
|
|
|
@item --disable-formatter
|
|
Exclude the code for calling a formatting tool.
|
|
|
|
@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, the commands that were executed,
|
|
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 storing of search/replace strings,
|
|
executed commands, and cursor positions.
|
|
|
|
@item --disable-justify
|
|
Exclude the text-justification 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 ---
|
|
in most cases the regexes for filename and header line will be enough).
|
|
|
|
@item --disable-linenumbers
|
|
Exclude the ability to show line numbers. This also eliminates
|
|
the @option{-l} command-line option, which turns line numbering on.
|
|
|
|
@item --disable-linter
|
|
Exclude the code for calling a linting tool.
|
|
|
|
@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. 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 an 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 search string
|
|
or replace string or command to execute).
|
|
|
|
@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 function toggles, the marking of text,
|
|
the undo/redo code, line anchors, the recording and playback of a macro,
|
|
softwrapping, and the cut-to-end-of-line code. These things stay disabled
|
|
also when using the enabling counterpart of the above options together with
|
|
@option{--enable-tiny} to switch specific features back on.
|
|
|
|
@item --enable-debug
|
|
Include some code for runtime debugging output. This can get 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 disables the use of any
|
|
available GNU @command{nano} translations.
|
|
|
|
@item --enable-utf8
|
|
Include support for handling and displaying Unicode files.
|
|
This requires a "wide" version of the curses library.
|
|
|
|
@item --disable-utf8
|
|
Exclude support for handling and displaying 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}.
|
|
|
|
@end table
|
|
|
|
@html
|
|
<hr>
|
|
@end html
|
|
|
|
@iftex
|
|
@contents
|
|
@end iftex
|
|
|
|
@bye
|