blog.hekt.org

GNU nanoを使い始めた

Emacs派の僕ですが、Terminal(Bash)中心に作業していてちょっとだけテキストを編集する必要が生じたときなんかだと、起動の遅いEmacsはあまり向きません(最初からEmacsのなかで作業しているときはいいんだけど)。これまではvimを起動して編集していたのですが、モードの切り替えがいまいちしっくり来ないので、新たにGNU nanoを使い始めました。

nanoの利点は、とにかく軽いこと(vim以上)、PNFBでカーソル移動ができること(個人的に重要)、など。Emacsからすんなり入っていけました。

インストール

OSXにもnano 2.0.6が入っているのですが、せっかくなので最新安定版をインストールします。(2.0.xだとundoが使えないっぽい……)

$ cd /usr/local/src
$ wget http://www.nano-editor.org/dist/v2.2/nano-2.2.6.tar.gz
$ tar -xzvf nano-2.2.6.tar.gz
$ cd ./nano-2.2.6
$ ./configure --enable-all --enable-utf8

...

onfigure: error:
*** UTF-8 support was requested, but insufficient UTF-8 support was
*** detected in your curses and/or C libraries.  Please verify that your
*** slang was built with UTF-8 support or your curses was built with
*** wide character support, and that your C library was built with wide
*** character support.

--enable-allは、--enable-nanorc, --enable-color, --enable-multibuffer, --enable-extraを有効にします。それぞれ、nanorc(設定ファイル)、色つけ、複数ファイルの切り替え、隠し機能(easter egg)を意味します。

--enable-utf8は、UTF-8をサポートします。そのまんまですが、これを有効にしないと日本語が化けます。……が、その--enable-utf8が上手くいかないみたいです。OSX Lionに最初から入っているnanoでは有効になってたけどなあ。

エラーの内容をみてみると、S-LangかCursesかCがUTF-8やwide-characterをサポートしていないかも、ってことらしいので、とりあえずncurses 5.9を--enable-widecでインストールしてみます。

$ cd /usr/local/src
$ wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.9.tar.gz
$ tar -xzvf ncurses-5.9.tar.gz
$ cd ./ncurses-5.9
$ ./configure --with-shared --enable-widec
$ make
$ make install

--with-sharedはなんか共有ライブラリをビルドするとかなんとか。よくわからなかったのですが、みんなつけてるみたいなので僕もつけました。

で、あらためてnano。

$ cd /usr/local/src/nano-2.2.6
$ ./configure --enable-all --enable-utf8
$ make
$ make install
$ nano --version
 GNU nano version 2.2.6 (compiled 12:30:30, Jan  8 2012)
 (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
 2008, 2009 Free Software Foundation, Inc.
 Email: nano@nano-editor.org	Web: http://www.nano-editor.org/
 Compiled options: --disable-nls --enable-color --enable-extra --enable-multibuffer --enable-nanorc --enable-utf8

おっけー。

カスタマイズ

nanoのカスタマイズはホームディレクトリの.nanorcというファイルで行います。公式ドキュメントを見つつ設定。下のが僕の.nanorc。

set autoindent #オートインデントを有効
set tabsize 4 #タブサイズを4に
set tabstospaces #タブをスペースに
set nowrap #自動改行を禁止(表示上だけでなく改行が入力されるため)
set softwrap #折り返しを有効に(表示上だけで改行は入力されない)
set smooth #一行ずつスクロール
set morespace #通常空白行になっている上から二行目も使う
set undo #アンドゥを有効に
set cut #C-kでカーソル位置から行末までカット(設定しない場合は行頭から行末、改行をカット)
set suspend #C-zで中断してシェルに戻る(→fgコマンドで復帰)

## キーバインドの設定(ちょっとEmacs風)
bind ^S research main #直近の検索(C-w)をやり直す
bind ^_ undo main #アンドゥ
bind M-_ redo main #リドゥ
bind ^@ mark main #範囲選択開始

## /usr/local/share/nano にSyntaxHighlighting用のファイルがあるので
## 必要なものをincludeしておく(これらを参考にして自分で作ってもいい)
include "/usr/local/share/nano/c.nanorc"
include "/usr/local/share/nano/css.nanorc"
include "/usr/local/share/nano/html.nanorc"
include "/usr/local/share/nano/java.nanorc"
include "/usr/local/share/nano/man.nanorc"
include "/usr/local/share/nano/nanorc.nanorc"
include "/usr/local/share/nano/objc.nanorc"
include "/usr/local/share/nano/perl.nanorc"
include "/usr/local/share/nano/php.nanorc"
include "/usr/local/share/nano/python.nanorc"
include "/usr/local/share/nano/ruby.nanorc"
include "/usr/local/share/nano/sh.nanorc"
include "/usr/local/share/nano/xml.nanorc"

SyntaxファイルはNano Syntaxというプロジェクトでいろいろ用意されているみたいです。

設定できるものはそんなに多くないのですが、僕としてはガッツリ使うつもりはないので、これくらいがちょうどいい感じ。

ついでなのでまた痛くして”リリカルnanoは”みたいなことをやろうと思ったのですが、いまいちよさげな画像が見つからず断念。そもそも僕はリリカルなのはのことをよく知らないのでした。