nano-win icon indicating copy to clipboard operation
nano-win copied to clipboard

GNU nano text editor for Windows [WARNING: The master branch is constantly rebased and force-pushed so don't expect it to be steady!! -end WARNING]

            -=* GNU nano for Windows *=-

Overview

Here is the source code for a ported, standalone version of GNU nano,
a famous, easy-to-use and handy text editor on Linux.

The script "build_nano-win.sh" can be run in MSYS2 with the mingw-w64
toolchains installed.  That script statically links the executable,
nano.exe, so that it does not require any third-party .DLL files to run,
including any Microsoft Visual C++ Redistributable packages.

Enhancements

+ .nanorc is loaded from "%USERPROFILE%\.nanorc" with normal privilege
  and from "%ALLUSERSPROFILE%\.nanorc" with elevated privilege.
+ Systemwide nanorc is loaded from "%ALLUSERSPROFILE%\nanorc".
+ Added C++11 keywords and identifiers with special meaning
  (that is, override and final) in "doc/syntax/c.nanorc".
+ Vim-style locking files have been enabled.

Features Removed

+ Spell checker (This requires the infamous `fork()` syscall. )
+ Stop and continue (This requires the `SIGSTOP` signal. )
+ UTF-8 support (This requires narrow multibyte strings to use
  the UTF-8 encoding.  Despite the viability of linking against
  ncursesw, the CRT part has never worked. )
+ Native language support (This requires hard-coding the path to
  the directory containing locale files in the executable. )

Workarounds

+ Left `Alt` key can be used as a `Meta` key.
+ UNIX style end-of-line handling by default.
+ Standard-conforming `sprintf()` function from mingw-w64.

===============================================================================

      GNU nano -- a simple editor, inspired by Pico

Purpose

Nano is a small and simple text editor for use on the terminal.
It copied the interface and key bindings of the Pico editor but
added several missing features: undo/redo, syntax highlighting,
line numbers, softwrapping, multiple buffers, selecting text by
holding Shift, search-and-replace with regular expressions, and
several other conveniences.

Appearance

In rough ASCII graphics, this is what nano's screen looks like:

| GNU nano 6.4 filename Modified |

| This is the text window, displaying the contents of a 'buffer', | | the contents of the file you are editing. | | | | The top row of the screen is the 'title bar'; it shows nano's | | version, the name of the file, and whether you modified it. | | The two bottom rows display the most important shortcuts; in | | those lines ^ means Ctrl. The third row from the bottom shows | | some feedback message, or gets replaced with a prompt bar when | | you tell nano to do something that requires extra input. | | |

| [ Some status message ] | |^G Help ^O Write Out ^W Where Is ^K Cut ^T Execute | |^X Exit ^R Read File ^\ Replace ^U Paste ^J Justify |

Origin

The nano project was started in 1999 because of a few "problems"
with the wonderfully easy-to-use and friendly Pico text editor.

First and foremost was its license: the Pine suite does not use
the GPL, and (before using the Apache License) it had unclear
restrictions on redistribution.  Because of this, Pine and Pico
were not included in many GNU/Linux distributions.  Furthermore,
some features (like go-to-line-number or search-and-replace) were
unavailable for a long time or require a command-line flag.  Yuck.

Nano aimed to solve these problems by: 1) being truly free software
by using the GPL, 2) emulating the functionality of Pico as closely
as is reasonable, and 3) including extra functionality by default.

Nowadays, nano wants to be a generally useful editor with sensible
defaults (linewise scrolling, no automatic line breaking).

The nano editor is an official GNU package.  For more information on
GNU and the Free Software Foundation, please see https://www.gnu.org/.

License

Nano's code and documentation are covered by the GPL version 3 or
(at your option) any later version, except for two functions that
were copied from busybox which are under a BSD license.  Nano's
documentation is additionally covered by the GNU Free Documentation
License version 1.2 or (at your option) any later version.  See the
files COPYING and COPYING.DOC for the full text of these licenses.

When in any file of this package a copyright notice mentions a
year range (such as 1999-2011), it is a shorthand for a list of
all the years in that interval.

How to compile and install nano

Download the latest nano source tarball, and then:

    tar -xvf nano-x.y.tar.gz
    cd nano-x.y
    ./configure
    make
    make install

You will need the header files of ncurses installed for ./configure
to succeed -- get them from libncurses-dev (Debian) or ncurses-devel
(Fedora) or a similarly named package.  Use --prefix with ./configure
to override the default installation directory of /usr/local.

After installation you may want to copy the doc/sample.nanorc file
to your home directory, rename it to ".nanorc", and then edit it
according to your taste.

Web Page

https://nano-editor.org/

Mailing Lists

There are three nano-related mailing-lists.

* <[email protected]> is a very low traffic list used to announce
  new nano versions or other important info about the project.

* <[email protected]> is for those seeking to get help without
  wanting to hear about the technical details of its development.

* <[email protected]> is the list used by the people that make nano
  and a general development discussion list, with moderate traffic.

To subscribe, send email to <name>[email protected] with a subject
of "subscribe", where <name> is the list you want to subscribe to.

The archives of the development and help mailing lists are here:

    https://lists.gnu.org/archive/html/nano-devel/
    https://lists.gnu.org/archive/html/help-nano/

Bug Reports

If you find a bug, please file a detailed description of the problem
on nano's issue tracker: https://savannah.gnu.org/bugs/?group=nano
(you will need an account to be able to do so), or send an email
to the nano-devel list (no need to subscribe, but mention it if
you want to be CC'ed on an answer).