We're going to explain a few things about nano keystroke configuration here. A post about a simple text editor might seem unnecessary, but I still meet junior admins who only think about vim or emacs. But nano has its place - it's installed on just about every system I come across, it's easy to use and it's quite capable. And with a little effort it can be reconfigured to use Windows-style keystrokes.
nano is a terminal-based text editor. It was originally a pico clone; pico was the editor in the e-mail client pine, which was a follow-on of elm. nano was once named tip which is a recursive acronym for tip isn't pico.
nano's command line syntax is straightforward:
nano [<option> ...] <file> ...
Note that nano presents an empty file buffer if no file is specified on the command line. Multiple files may be specified and edited if the multibuffer option is used.
nano options may be configured via the command line, or via an rc file using the
set/unset commands. Key bindings may only be configured via an rc file using the
bind/unbind commands (more later).
nano reads the rc file
/etc/nanorc followed by
~/.nanorc. A comprehensive
/etc/nanorc file is installed with nano.
Note that options are unset by default; the -I option disables rc file processing and is useful for testing.
For simple option setting the command line is sufficient e.g. one could enable some useful options by running:
-F (--multibuffer) Enable multiple file buffers, if available. -S (--smooth) Enable smooth scrolling. Text will scroll line-by-line, instead of the usual chunk-by-chunk behavior. -E (--tabstospaces) Convert typed tabs to spaces. -T cols (--tabsize=cols) Set the size (width) of a tab to cols columns. The value of cols must be greater than 0. The default value is 8.
if nano encounters an error in an rc file it will display e.g.
Error in /etc/nanorc on line 341: Could not map name "wheris" to a function Press Enter to continue starting nano.
nano relies on normal keys as well as ctl and meta key combinations; the meta key is typically the alt key; if alt is not available for some reason then the meta key is the esc key; some of the default nano key bindings are quite traditional whereas others are rather idiosyncratic but are generally mnemonically based
Note that in gnome terminal, alt is the menu key but the keystroke is passed through to an application if it is not being used for a gnome terminal menu.
Below are the default key bindings in the main editing screen. In various menus and other contexts ctl-x is typically used to exit and ctl-c to cancel.
ctl-r read i.e. open file into current buffer, or into new buffer in multibuffer mode; press enter for new empty buffer ctl-o writeout i.e. save file ctl-x exit i.e. quit; also exits from buffer in multibuffer mode; prompts for writeout/save ctl-g get help/aid/assistance enter, ctl-m newline bksp, ctl-h delete previous character del, ctl-d delete current character left, ctl-b backward character right, ctl-f forward character home, ctl-a beginning of line end, ctl-e end of line up, ctl-p previous line down, ctl-n next line pgup, ctl-y previous page pgdn, ctl-v next page m-space previous word ctl-space next word alt-\ beginning of file alt-/ end of file ctl-c display cursor position ctl-/ go i.e. jump to line and column ctl-^ set/unset mark; or alt-a alt-^ copy marked, or copy line if nothing marked; actually alt-6 i.e. do not need shift key ctl-k cut marked, or cut line if nothing marked, or cut to end of line if cut-to-end is enabled using alt-k ctl-u paste cut or copied alt-t cut to end of file ctl-w search alt-w search again alt-r search and replace alt-< previous file buffer; actually alt-, i.e. do not need shift key alt-> next file buffer; actually alt-. i.e. do not need shift key alt-x toggle bottom help display alt-y toggle color syntax highlighting; colors configured via /usr/share/nano/*.nanorc files alt-c toggle cursor position display alt-d toggle dos/unix format option at writeout/save prompt alt-k toggle cut to end of line ctl-t show file list at read/open prompt ctl-x prompt for external command to execute at read/open prompt and insert output ctl-z suspend to shell; use fg to return
nano can be given a more mainstream user interface by appending a handful of lines to
~/.nanorc. The strategy used is to leave the traditional cursor keys alone and rebind their ctl equivalents in more mainstream ways.
keith@dev$ cat ~/.nanorc set morespace set multibuffer set nohelp # perhaps comment out until comfortable set quickblank set regexp set smooth set suspend set tabsize 4 set tabstospaces set undo # undo/redo is an experimental feature; buggy? unbind ^K main unbind ^U main unbind ^W main bind ^O insert main bind ^S writeout main bind ^Q exit main bind ^A help main bind ^P prevword main bind ^N nextword main bind ^B firstline main bind ^E lastline main bind ^L curpos main bind ^J gotoline main bind ^Space mark main bind ^X cut main bind ^C copytext main bind ^V uncut main bind ^F whereis main bind ^G searchagain main bind ^H replace main bind ^Z undo main bind ^Y redo main bind M-A nohelp main bind M-L constupdate main bind M-Z suspend main
The above configuration yields:
ctl-o read i.e. open file into current buffer, or into new buffer if multiple buffers are enabled ctl-s writeout i.e. save file ctl-q exit i.e. quit; also exits from a file buffer if multiple file buffers are enabled; prompts for writeout/save ctl-a get help/aid/assistance enter, ctl-m newline bksp delete previous character del delete current character left backward character right forward character home beginning of line end end of line up previous line down next line pgup previous page pgdn next page ctl-p previous word ctl-n next word ctl-b, alt-\ beginning of file ctl-e, alt-/ end of file ctl-l display cursor position ctl-j go i.e. jump to line and column ctl-space set/unset mark ctl-c copy marked, or copy line if nothing marked; actually alt-6 i.e. do not need shift key ctl-x cut marked, or cut line if nothing marked, or cut to end of line if cut-to-end is enabled using alt-k ctl-v paste cut or copied ctl-d cut to end of file ctl-f search ctl-g search again ctl-h search and replace ctl-z undo ctl-y redo alt-< previous file buffer; actually alt-, i.e. do not need shift key alt-> next file buffer; actually alt-. i.e. do not need shift key alt-a toggle bottom help display alt-y toggle color syntax highlighting; colors configured via /usr/share/nano/*.nanorc files alt-l toggle cursor position display alt-d toggle dos/unix format option at writeout/save prompt alt-k toggle cut to end of line ctl-t show file list at read/open prompt ctl-x prompt for external command to execute at read/open prompt and insert output alt-z suspend to shell; use fg to return
And there we are. A few things about nano keystroke configuration.Share on Twitter Share on Facebook