nano — small で friendly なテキストエディタ

Install

もともと入っているものを使うか、brewapt でインストールする。

which -a nano

brew install nano  ## mac
sudo apt install nano  ## ubuntu

macOS 12.3 Monterey 以降、 Mac の nano の正体は pico なので、 いろいろ設定して使いたい場合は brew でインストールする。

Usage

## 新規作成
nano

## 既存のファイルを編集
nano hoge.txt

Keyboard shortcuts

デフォルトで編集画面の下部に書いてある。 表は編集画面でのショートカット。 nano のバージョンによって異なるものもあるっぽい。

Key コマンド 操作
controlG Help ヘルプ画面へ
controlX Exit 編集画面を抜ける
controlO Write Out ファイル名を指定して書き込み
controlR Read File ファイル名を指定して読み込み
controlW Where Is ファイル内検索
control  Replace ファイル内置換
controlK Cut 選択範囲を切り取り
controlU Paste カーソル位置に文字列を貼り付け
controlT Execute コマンドラインの操作を実行して出力を貼り付け
controlJ Justify 均等割付
controlC Location カーソル位置の表示
control/ Go To Line 行数を指定してジャンプ
control] Complete ファイル中にあるほかの単語を探して補完
MetaU Undo ひとつ前の状態に戻す
MetaE Redo 同じ操作をおこなう
MetaA Set Marl 選択範囲の開始点をセット
Meta6 Copy 選択範囲をコピー

Meta キーは Windows なら alt、Macなら esc

Configuration

基本的な設定はコマンドラインオプションで指定することもできるが、 一時的な設定でなければ config ファイルに書いてしまった方が楽。

読み込まれる順番は、まず /etc/nanorc 、次に ~/.nanorc または ~/.config/nano/nanorc

Linux では /etc/nanorc/usr/share/doc/nano/examples/samples.nanorc に、 Mac に brew で入れた場合は /usr/local/Cellar/nano/%v/share/doc/nano/sample.nanorc にドキュメントとコマンドがコメントアウトされて書いてあるので、 これを ~/.nanorc または ~/.config/nano/nanorc にコピーして編集する。(%vnano のバージョン)

自分で書いてしまってもいい。たとえば:

nanorc
set autoindent    # 改行時にインデントを揃える
set nowrap        # 横に長い行を勝手に改行しない
set smooth        # スクロールがスムーズに(あんまり実感したことはない)
set tabsize 4       # タブサイズ(スペースの数)の設定
set mouse           # マウスを使えるようにする
set mouse の挙動について
設定しなくても一応使える。 普通に文章を選択して CtrlC したり CtrlV したり。 ただカーソルは動かせないっぽい。

set mouse すると完全に nano の中の挙動になる。 カーソルも動く。 ダブルクリックで範囲選択開始 (Set Mark)、次のクリックで範囲決定。 もう一度クリックすると解除 (Unset Mark)。

Syntax highlight

デフォルトの見た目は非常に寂しい。

Linuxでは /usr/share/nano/ 、Mac (brew) では /usr/local/share/nano//usr/local/Cellar/nano/%v/share/nano/ にハイライト定義ファイルが置いてあるので、 これらの設定を ~/.nanorc に加える。

または野生の定義ファイルを使う手もある。(c.f. https://github.com/scopatz/nanorc)

nanorc
include "/usr/share/nano/*.nanorc"

Key Bind

キーボードショートカットは変更可能。 例えば CtrlZUndo に割り当てたい場合、以下のように書く。

nanorc
bind ^Z undo    main