Login
Immutable PageDiscussionInfoAttachments

Please use a more selective search term instead of ""

Clear message
hayakawa/nano

MMA

GNU nano

世の中ではemacs派やviまたはvim派などのエディタ論争が絶えないが、ここで新勢力を立ち上げようと思う。 それはnanoである。

特徴

とにかく軽い。emacs > vim > nano という関係。

よく使うキーバインド

注意:後述する設定でキーバインドが大きく変わっています。ここにはデフォルトの設定を示します。

^G help
^K cut      #1行カットする。デフォルトでは改行コードを含む
M-^ copy     #行のコピー
^U uncut     #つまりペースト
^^ mark set
^R read file #ファイルを読み込む
^O writeout  #保存
^X Exit      #終了

.nanorc

/usr/share/doc/nano/examples/nanorc.sample.gzにサンプルがある。何故か圧縮されている。 手元のubuntuではここにサンプルがあったが、FreeBSDでは/usr/local/share/examples/nano/nanorc.sampleにあります。
.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 "~/.nano.backup"

## Do backwards searches by default.
unset backwards

## Use bold text instead of reverse video text.
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.
unset 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.
##
# 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

## Enable soft line wrapping (AKA full line display).
# set softwrap

## 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 4

## Convert typed tabs to spaces.
# set tabstospaces

## Save automatically on exit, don't prompt.
# set tempfile

## Enable the new (EXPERIMENTAL) generic undo code, not just for line
## cuts.
set undo

## 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 parts of words.
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.

## Key bindings
## Please see nanorc(5) for more details on this
##
## Here are some samples to get you going
##
# bind M-W nowrap main
# bind M-A casesens search
# bind ^S research main

bind ^space mark main
bind ^S research main
bind ^Q copytext main
bind ^Y uncut main
bind ^G prevpage main
bind ^H help all
bind ^J whereis main
bind ^L copytext main
bind ^W nextbuf main
bind ^Q prevbuf main

## Set this if your backspace key sends delete most of the time (2.1.3+) 
# bind kdel backspace all

## Nanorc files #include "/usr/share/nano/nanorc.nanorc" include 
include "~/.nano.d/nanorc.nanorc"

## C/C++
#include "/usr/share/nano/c.nanorc"
include "~/.nano.d/c.nanorc"

## Makefiles
# include "/usr/share/nano/makefile.nanorc"
include "~/.nano.d/makefile.nanorc"

## Cascading Style Sheets
# include "/usr/share/nano/css.nanorc"

## Debian files
#include "/usr/share/nano/debian.nanorc"
include "~/.nano.d/debian.nanorc"

## Gentoo files
# include "/usr/share/nano/gentoo.nanorc"

## HTML
# include "/usr/share/nano/html.nanorc"

## PHP
# include "/usr/share/nano/php.nanorc"

## TCL
# include "/usr/share/nano/tcl.nanorc"

## TeX
# include "/usr/share/nano/tex.nanorc"
include "~/.nano.d/tex.nanorc"

## Quoted emails (under e.g. mutt)
# include "/usr/share/nano/mutt.nanorc"

## Patch files
# include "/usr/share/nano/patch.nanorc"
include "~/.nano.d/patch.nanorc"

## Manpages
# include "/usr/share/nano/man.nanorc"
include "~/.nano.d/man.nanorc"

## Groff
# include "/usr/share/nano/groff.nanorc"

## Perl
# include "/usr/share/nano/perl.nanorc"
include "~/.nano.d/perl.nanorc"

## Python
#include "/usr/share/nano/python.nanorc"
include "~/.nano.d/python.nanorc"

## Ruby
# include "/usr/share/nano/ruby.nanorc"
include "~/.nano.d/ruby.nanorc"

## Java
# include "/usr/share/nano/java.nanorc"

## Fortran
# include "/usr/share/nano/fortran.nanorc"

## Objective-C
# include "/usr/share/nano/objc.nanorc"

## OCaml
# include "/usr/share/nano/ocaml.nanorc"

## AWK
# include "/usr/share/nano/awk.nanorc"

## Assembler
# include "/usr/share/nano/asm.nanorc"

## Bourne shell scripts
# include "/usr/share/nano/sh.nanorc"

## POV-Ray
# include "/usr/share/nano/pov.nanorc"

## XML-type files
# include "/usr/share/nano/xml.nanorc"

## R
#include "~/Dropbox/workspace/r.nanorc"
include "~/.nano.d/r.nanorc"

キーバインドを大分変更してます。また、ハイライティングの設定ファイルを~/.nano.d/に置いています。他には、~/.nano.backup/を作成して、編集したテキストファイルのバックアップを保存するようにしています。

R言語用のハイライティング設定

## Here is an example for R.
##
syntax "r" "R" "\.(R|r)$"

color green "\<(length|rep|seq|numeric|sqrt|sum|mean|var|median|cor|max|min|prod|cussum|sd|sord|rev|pmax|pmin|range|range|match|diff|rank|order)\>"
color green "\<(union|intersect|setdiff|setequal|is.element)\>"
color green "\<((s?size)|((u_?)?int(8|16|32|64|ptr)))_t\>"
color green "\<(class|namespace|template|public|protected|private|typename|this|friend|virtual|using|mutable|volatile|register|explicit)\>"
color green "\<(sqrt|abs|exp|expm1|log(10|2)?|sin|cos|tan|asin|acos|atan|sinh|cosh|tanh|asinh|acosh|atanh|logb|log1px|gamma|lgamma|ceiling|floor|trunc|round|singif)\>"
color brightyellow "\<(for|if|while|do|else|case|default|switch)\>"
color brightyellow "\<(try|throw|catch|operator|new|delete)\>"
color magenta "\<(goto|continue|break|return)\>"
color brightcyan "^[[:space:]]*#[[:space:]]*(define|include|(un|ifn?)def|endif|el(if|se)|if|warning|error)"
color brightmagenta "'([^'\]|(\\["'abfnrtv\\]))'" "'\\(([0-3]?[0-7]{1,2}))'" "'\\x[0-9A-Fa-f]{1,2}'"
color red "\<(function|library|data)\>"
icolor white "\<(\.?[a-z]+\.[a-z]+)+\>"
##
## GCC builtins
color cyan "__attribute__[[:space:]]*\(\([^)]*\)\)" "__(aligned|asm|builtin|hidden|inline|packed|restrict|section|typeof|weak)__"
##
## String highlighting.  You will in general want your comments and
## strings to come last, because syntax highlighting rules will be
## applied in the order they are read in.
color brightyellow "<[^=        ]*>" ""(\\.|[^"])*""
##
## This string is VERY resource intensive!
color brightyellow start=""(\\.|[^"])*\\[[:space:]]*$" end="^(\\.|[^"])*""

## Comment highlighting
color brightblue "#.*"
##color brightblue start="/\*" end="\*/"

## Trailing whitespace
color ,green "[[:space:]]+$"

C言語用のハイライティングをベースに手を加えています。ほとんどC言語用のままです。少しずつ改良していきたい。