TODO – add my notes, and scripts
![]() |
Software > Text editors >
(on Wikipedia)
https://git.savannah.gnu.org/cgit/nano.git/
https://nano-editor.org/
The license-unencumbered version of Pico.
Small, easy. Needs some basic functionality but is still quite useful.
- acronym: Nano’s ANOther editor
-
formerly: TIP (TIP Isn’t Pico)
-
2022-07-11 – nano-git-0d9a7347243 on Windows 11
- This Windows version is just hanging around in my kit.
- From https://www.nano-editor.org/dist/win32-support/
- 2019-02-25 – 2.9.8 on Lubuntu-18.10-desktop-i386
- 2016-03-28 – 2.3.2 on Slackware 14.1
- 2016-03-26 – 2.2.6 on Lubuntu 14.04.4 LTS
- 2016-01-30 – 2.5.3 32bit/Windows inside of Git on Windows 2.7.0 64-bit, on Windows 10 64bit
- 2016-01-29 or earlier – 2.5.3 32bit/Windows 2.5.3 32bit inside of Git on Windows Git-1.9.5-preview20141217, on Windows 10 64bit
-
2009-04-18 – 2.0.7 on (distribution not recorded)
2019-02-25 – 2.9.8 ∞
Holy shit, 1980s technology has finally been implemented.
control-up/control-downcorrectly jump paragraphs.-
control-left/control-rightcorrectly jump words.
2016-03-28 – 2.3.2 ∞
Comes with Slackware 14.1
2016-03-26 – 2.2.6 ∞
Compiled options: –disable-wrapping-as-root –enable-color –enable-extra –enable-multibuffer –enable-nanorc –enable-utf8
This came with Lubuntu (version not recorded)
2016-01-30 – 2.5.3 32bit/Windows ∞
Does not work, probably because I’m running 32 bit software within 64 bit Git on Windows.
I’m giving up on getting it to work and using Geany or just notepad.exe. I have no real need to use a commandline editor.
2016-01-29 or earlier – 2.5.3 32bit/Windows ∞
The nano project provides a build for Windows.
- I used this with Git on Windows, Git-1.9.5-preview20141217, and it worked fine.
- One guy had some old notes: nano – Nano with mingw32 for msysgit
2009-04-18 – 2.0.7 ∞
control-homeshould go to the first character of the document.control-endshould go to the last character of the document.-
and
control-left/control-rightshould hop a word.alt-shift-backspaceto hop to the leftcontrol-spaceto hop to the right
-
shift-cursorshould highlight.alt-ato set/unset the highlight mark
-
control-backspaceshould kill the word to the leftalt-backspace/control-backspacekills the word to the left.
- Configuration
—
Usage and configuration ∞
Configuration ∞
From 2009-04-18 – 2.0.7
-
meta keys aren’t working in xterm? control-leftclick anywhere, and choose “meta sends escape”.
https://www.nano-editor.org/dist/v1.2/nanorc.5.html
My preferences also include nano syntax highlighting. Note that nano’s highlighting is based on file extension and not the content of the file.
nanorc
/etc/nanorc or ~/.nanorc
## Sample initialization file for GNU nano.
##
## Please note that you must have configured nano with --enable-nanorc
## for this file to be read! Also note that this file should not be in
## DOS or Mac format, and that characters specially interpreted by the
## shell should not be escaped here.
##
## To make sure a value is disabled, use "unset <option>".
##
## For the options that take parameters, the default value is given.
## Other options are unset by default.
##
## Quotes inside string parameters don't have to be escaped with
## backslashes. The last double quote in the string will be treated as
## its end. For example, for the "brackets" option, ""')>]}" will match
## ", ', ), >, ], and }.
## Use auto-indentation.
set autoindent
## Backup files to filename~.
set backup
## The directory to put unique backup files in.
# set backupdir ""
## Do backwards searches by default.
# set backwards
## Use bold text instead of reverse video text.
# NOTE: If you allow this, it'll make everything ugly and blue.
# set boldtext
## The characters treated as closing brackets when justifying
## paragraphs. They cannot contain blank characters. Only closing
## punctuation, optionally followed by closing brackets, can end
## sentences.
##
set brackets ""')>]}"
## Do case sensitive searches by default.
# set casesensitive
## Constantly display the cursor position in the statusbar. Note that
## this overrides "quickblank".
# set const
## Use cut to end of line by default.
# set cut
## Set the line length for wrapping text and justifying paragraphs.
## If fill is 0 or less, the line length will be the screen width less
## this number.
##
# set fill -8
## Enable ~/.nano_history for saving and reading search/replace strings.
set historylog
## The opening and closing brackets that can be found by bracket
## searches. They cannot contain blank characters. The former set must
## come before the latter set, and both must be in the same order.
##
set matchbrackets "(<[{)>]}"
## Use the blank line below the titlebar as extra editing space.
set morespace
## Enable mouse support, if available for your system. When enabled,
## mouse clicks can be used to place the cursor, set the mark (with a
## double click), and execute shortcuts. The mouse will work in the X
## Window System, and on the console when gpm is running.
##
# This disables middle-click pasting and left-click-drag copying. Use
# shift-middle-click to paste. Or if you're copying from a normal
# program, use control-c to copy and in nano do shift-insert. Use
# shift-left-drag to copy and middle-click in your normal app to paste.
# Then either briefly highlight something random in your app, or go back
# to nano and shift-click to unhighlight. Strange that you can't
# control-v in your normal program.
set mouse
## Allow multiple file buffers (inserting a file will put it into a
## separate buffer). You must have configured with --enable-multibuffer
## for this to work.
##
# set multibuffer
## Don't convert files from DOS/Mac format.
# set noconvert
## Don't follow symlinks when writing files.
# set nofollow
## Don't display the helpful shortcut lists at the bottom of the screen.
# set nohelp
## Don't add newlines to the ends of files.
# set nonewlines
## Don't wrap text at all.
set nowrap
## Set operating directory. nano will not read or write files outside
## this directory and its subdirectories. Also, the current directory
## is changed to here, so any files are inserted from this dir. A blank
## string means the operating directory feature is turned off.
##
# set operatingdir ""
## Preserve the XON and XOFF keys (^Q and ^S).
# set preserve
## The characters treated as closing punctuation when justifying
## paragraphs. They cannot contain blank characters. Only closing
## punctuation, optionally followed by closing brackets, can end
## sentences.
##
# set punct "!.?"
## Do quick statusbar blanking. Statusbar messages will disappear after
## 1 keystroke instead of 26. Note that "const" overrides this.
##
set quickblank
## The email-quote string, used to justify email-quoted paragraphs.
## This is an extended regular expression if your system supports them,
## otherwise a literal string. Default:
# set quotestr "^([ ]*[#:>\|}])+"
## if you have extended regular expression support, otherwise:
# set quotestr "> "
## Fix Backspace/Delete confusion problem.
# set rebinddelete
## Fix numeric keypad key confusion problem.
# set rebindkeypad
## Do extended regular expression searches by default.
set regexp
## Make the Home key smarter. When Home is pressed anywhere but at the
## very beginning of non-whitespace characters on a line, the cursor
## will jump to that beginning (either forwards or backwards). If the
## cursor is already at that position, it will jump to the true
## beginning of the line.
# set smarthome
## Use smooth scrolling as the default.
set smooth
## Use this spelling checker instead of the internal one. This option
## does not properly have a default value.
##
set speller "aspell -x -c"
## Allow nano to be suspended.
set suspend
## Use this tab size instead of the default; it must be greater than 0.
set tabsize 2
## Convert typed tabs to spaces.
set tabstospaces
## Save automatically on exit, don't prompt.
# set tempfile
## Disallow file modification; why would you want this in an rcfile? ;)
# set view
## The two single-column characters used to display the first characters
## of tabs and spaces. 187 in ISO 8859-1 (0000BB in Unicode) and 183 in
## ISO-8859-1 (0000B7 in Unicode) seem to be good values for these.
set whitespace ". "
## Detect word boundaries more accurately by treating punctuation
## characters as part of a word.
set wordbounds
## Color setup
##
## Format:
##
## syntax "short description" ["filename regex" ...]
##
## The "none" syntax is reserved; specifying it on the command line is
## the same as not having a syntax at all. The "default" syntax is
## special: it takes no filename regexes, and applies to files that
## don't match any other syntax's filename regexes.
##
## color foreground,background "regex" ["regex"...]
## or
## icolor foreground,background "regex" ["regex"...]
##
## "color" will do case sensitive matches, while "icolor" will do case
## insensitive matches.
##
## Valid colors: white, black, red, blue, green, yellow, magenta, cyan.
## For foreground colors, you may use the prefix "bright" to get a
## stronger highlight.
##
## To use multi-line regexes, use the start="regex" end="regex"
## [start="regex" end="regex"...] format.
##
## If your system supports transparency, not specifying a background
## color will use a transparent color. If you don't want this, be sure
## to set the background color to black or white.
##
## If you wish, you may put your syntaxes in separate files. You can
## make use of such files (which can only include "syntax", "color", and
## "icolor" commands) as follows:
##
## include "/path/to/syntax_file.nanorc"
##
## Unless otherwise noted, the name of the syntax file (without the
## ".nanorc" extension) should be the same as the "short description"
## name inside that file. These names are kept fairly short to make
## them easier to remember and faster to type using nano's -Y option.
##
## All regexes should be extended regular expressions.
## Nanorc files
include "/usr/share/nano/nanorc.nanorc"
## C/C++
include "/usr/share/nano/c.nanorc"
## HTML
include "/usr/share/nano/html.nanorc"
## TeX
include "/usr/share/nano/tex.nanorc"
## Quoted emails (under e.g. mutt)
include "/usr/share/nano/mutt.nanorc"
## Patch files
include "/usr/share/nano/patch.nanorc"
## Manpages
include "/usr/share/nano/man.nanorc"
## Groff
include "/usr/share/nano/groff.nanorc"
## Perl
include "/usr/share/nano/perl.nanorc"
## Python
include "/usr/share/nano/python.nanorc"
## Ruby
include "/usr/share/nano/ruby.nanorc"
## Java
include "/usr/share/nano/java.nanorc"
## Assembler
include "/usr/share/nano/asm.nanorc"
## Bourne shell scripts
include "/usr/share/nano/sh.nanorc"
## syntax highlighting in xorg.conf
##
syntax "xorg" "xorg\.conf$"
color brightwhite "(Section|EndSection|Sub[sS]ection|EndSub[sS]ection)"
# keywords
color yellow "[^A-Za-z0-9](Identifier|Screen|InputDevice|Option|RightOf|LeftOf|Driver|RgbPath|FontPath|ModulePath|Load|VendorName|ModelName|BoardName|BusID|Device|Monitor|DefaultDepth|View[pP]ort|Depth|Virtual|Modes|Mode|DefaultColorDepth|Modeline|\+vsync|\+hsync|HorizSync|VertRefresh)[^A-Za-z0-9]"
# numbers
color magenta "[0-9]"
# strings
color green ""(\\.|[^\"])*""
# comments
color blue "#.*"
##############################################################################
#
# Syntax highlighting for XML files
#
# Author: Josef 'Jupp' Schugt, jupp(a)rubyforge.org
# License: GPL 2 or later
#
# Version: 2004-02-25
#
##############################################################################
syntax "ml" ".*\.([jrs]?html?|xml|sgml?)$"
color white "^.+$"
color green start="<" end=">"
color cyan "<[^> ]+"
color cyan ">"
color yellow start="<!DOCTYPE" end="[/]?>"
color yellow start="<!--" end="-->"
color red "&[^;]*;"
##############################################################################
#
# Syntax highlighting for HTTP codes
#
# Author: Josef 'Jupp' Schugt, jupp(a)rubyforge.org
# License: GPL 2 or later
#
# Version: 2004-02-25
#
##############################################################################
syntax "urls"
color brightmagenta "^.*$"
color cyan "^(1[0-9][0-9]|20[256]|30[45]).*$"
color green "^20[03].*$"
color brightyellow "^(201|30[0-37]).*$"
color brightred "^(204|[45][0-9][0-9]|666).*$"
##############################################################################
#
# Syntax highlighting for CSS files
#
# Author: Simon Rupf, simon.rupf(a)int-ag.ch
# License: GPL 2 or later
#
# Version: 2005-02-14
#
##############################################################################
syntax "css" "\.css$"
color brightred "."
color brightyellow start="\{" end="\}"
color brightwhite start=":" end="[;^\{]"
color brightblue ":active|:focus|:hover|:link|:visited|:link|:after|:before|$"
color brightblue start="\/\*" end="\\*/"
color green ";|:|\{|\}"
Ruby code highlighting ∞
(Ruby)
From 2009-04-18 – 2.0.7
Implemented by a user, but by the time I learned about it the links it referenced were broken. Although I emailed the author I never got a response.
-
- https://web.archive.org/web/20191127030243/http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/172458
- The links weren’t working, and I couldn’t find a reference on his home page [ 1 ] so I emailed him.
GNU Nano syntax highlighting on Windows ∞
2016-01-29 or earlier – 2.5.3 32bit/Windows
https://web.archive.org/web/20170518000210/https://github.com/nanorc/nanorc
Summary: I can’t do this. There are ways, but they are complicated.
1. Download GNU Nano for Windows
https://nano-editor.org/download.php
This example assumes it is placed in C:\nano
2. Download the syntax highlighting files
\git clone github.com/nanorc/nanorc
You can also download github.com/nanorc/nanorc/archive/master.zip
This example assumes it is placed in C:\nanorc
3. Edit C:\nano\nano.rc
Append:
Spoiler
include "/c/nanorc/awk.nanorc" include "/c/nanorc/c.nanorc" include "/c/nanorc/cmake.nanorc" include "/c/nanorc/coffeescript.nanorc" include "/c/nanorc/colortest.nanorc" include "/c/nanorc/csharp.nanorc" include "/c/nanorc/css.nanorc" include "/c/nanorc/cython.nanorc" include "/c/nanorc/default.nanorc" include "/c/nanorc/dot.nanorc" include "/c/nanorc/email.nanorc" include "/c/nanorc/git.nanorc" include "/c/nanorc/glsl.nanorc" include "/c/nanorc/go.nanorc" include "/c/nanorc/html.nanorc" include "/c/nanorc/ini.nanorc" include "/c/nanorc/inputrc.nanorc" include "/c/nanorc/java.nanorc" include "/c/nanorc/javascript.nanorc" include "/c/nanorc/json.nanorc" include "/c/nanorc/keymap.nanorc" include "/c/nanorc/kickstart.nanorc" include "/c/nanorc/ledger.nanorc" include "/c/nanorc/lisp.nanorc" include "/c/nanorc/lua.nanorc" include "/c/nanorc/makefile.nanorc" include "/c/nanorc/man.nanorc" include "/c/nanorc/markdown.nanorc" include "/c/nanorc/mpdconf.nanorc" include "/c/nanorc/nanorc.nanorc" include "/c/nanorc/nginx.nanorc" include "/c/nanorc/patch.nanorc" include "/c/nanorc/peg.nanorc" include "/c/nanorc/php.nanorc" include "/c/nanorc/pkg-config.nanorc" include "/c/nanorc/pkgbuild.nanorc" include "/c/nanorc/po.nanorc" include "/c/nanorc/privoxy.nanorc" include "/c/nanorc/properties.nanorc" include "/c/nanorc/python.nanorc" include "/c/nanorc/rpmspec.nanorc" include "/c/nanorc/ruby.nanorc" include "/c/nanorc/sed.nanorc" include "/c/nanorc/shell.nanorc" include "/c/nanorc/sql.nanorc" include "/c/nanorc/systemd.nanorc" include "/c/nanorc/tex.nanorc" include "/c/nanorc/vala.nanorc" include "/c/nanorc/vi.nanorc" include "/c/nanorc/xml.nanorc" include "/c/nanorc/xresources.nanorc" include "/c/nanorc/yaml.nanorc" include "/c/nanorc/yum.nanorc"
None of this works. It looks like the solution would be to use Cygwin.
Resources:
- http://markdblackwell.blogspot.com/2015/07/gnu-nano-on-windows-with-utf-8-howto.html
-
https://web.archive.org/web/20170518000210/https://github.com/nanorc/nanorc
manual syntax highlighting ∞
2024-12-28 from Lubuntu 24.04 LTE
~/.nanorc
## Syntax highlighting for Bourne shell scripts.
syntax "sh" "\.sh$"
syntax sh "(\.sh|(\.|/)(a|ba|c|da|k|mk|pdk|tc|z)sh(rc|_profile)?|/(etc/|\.)profile)$"
header "^#!.*/((env\s+)?((a|ba|c|da|k|mk|pdk|tc|z)?sh)|busybox\s+sh|openrc-run|runscript)\>"
header "-\*-.*shell-script.*-\*-"
magic "(POSIX|Bourne-Again) shell script.*text"
comment "#"
linter dash -n
# Function declarations.
color brightgreen "^[A-Za-z0-9_-]+\(\)"
# Keywords, symbols, and comparisons.
color green "\<(break|case|continue|do|done|elif|else|esac|exit|fi|for|function|if|in|read|return|select|shift|then|time|until|while)\>"
color green "\<(declare|eval|exec|export|let|local)\>"
color green "[{}():;|`$<>!=&\\]" "(\]|\[)"
color green "-(eq|ne|gt|lt|ge|le|ef|ot|nt)\>"
# Short and long options.
color brightmagenta "[[:blank:]]-[A-Za-z]\>" "[[:blank:]]--[A-Za-z-]+\>"
# Common commands.
color brightblue "\<(awk|cat|cd|ch(grp|mod|own)|cp|cut|echo|env|grep|head|install|ln|make|mkdir|mv|popd|printf|pushd|rm|rmdir|sed|set|sort|tail|tar|touch|umask|unset)\>"
color normal "[.-]tar\>"
# Basic variable names (no braces).
color brightred "\$[-0-9@*#?$!]" "\$[[:alpha:]_][[:alnum:]_]*"
# More complicated variable names; handles braces and replacements and arrays.
color brightred "\$\{[#!]?([-@*#?$!]|[0-9]+|[[:alpha:]_][[:alnum:]_]*)(\[([[:space:]]*[[:alnum:]_]+[[:space:]]*|@)\])?(([#%/]|:?[-=?+])[^}]*\}|\[|\})"
# Comments.
color cyan "(^|[[:space:]])#.*"
# Strings.
color brightyellow ""(\\.|[^"])*"" "'(\\.|[^'])*'"
# Trailing whitespace.
Footnotes
- was www.jungsource.com [ ↩ ]


Ported
Added notes from 2009-04-18 .. and a configuration file for no good reason.
Putting git-0d9a7347243 in the kit.
Poked.
I have no idea what I meant about notes and scripts.
– A little cleanup
– Added manual .sh highlighting in `/.nanorc