# nano (日本語)

GNU nano (もしくは nano) はシンプルなインターフェイスと直感的なコマンドオプションをコンソールベースのテキスト編集に導入します。Ubuntu などのディストリビューションで nano はデフォルトのコンソールエディタであり、カラーのシンタックスハイライト・DOS/Mac ファイルタイプ変換・スペルチェック・UTF-8 エンコードなどの機能をサポートしています。空のバッファで開かれた nano は一般的に 1.5 MB 以下の常駐メモリを使います。nano のスクリーンショット。

## パッケージのインストール

公式リポジトリから nano パッケージをインストールすることができます。base グループに含まれているため、基本的には全てのシステムでインストールされています。

## 設定

### ~/.nanorc の作成

nano のルックアンドフィールや機能は基本的にコマンドライン引数か `~/.nanorc` ファイルの設定コマンドのどちらかで設定します。

プログラムのインストール時にサンプル設定ファイルが `/etc/nanorc` にインストールされます。nano の設定をカスタマイズするには、まず `~/.nanorc` にローカルコピーを作成して下さい:

    $ cp /etc/nanorc ~/.nanorc

`~/.nanorc` ファイルの中でコマンドを設定して nano のコンソール環境を確立してください。

Tip: NANORC に nano で利用可能な設定コマンドの完全なリストが載っています。
Note: コマンドラインの引数は `.nanorc` 内の設定コマンドよりも優先されます。

### シンタックスハイライト

#### PKGBUILD ファイル

これは Arch Linux "svntogit-server" のような新しいシンタックスハイライトです。

    # Arch PKGBUILD files
    #
    syntax "pkgbuild" "^.*PKGBUILD*"
    # commands
    color red "\<(cd|echo|enable|exec|export|kill|popd|pushd|read|source|touch|type)\>"
    color brightblack "\<(case|cat|chmod|chown|cp|diff|do|done|elif|else|esac|exit|fi|find|for|ftp|function|grep|gzip|if|in)\>"
    color brightblack "\<(install|ln|local|make|mv|patch|return|rm|sed|select|shift|sleep|tar|then|time|until|while|yes)\>"
    # ${*}
    icolor blue "\$\{?[0-9A-Z_!@#$*?-]+\}?"
    # numerics
    color blue "\ [0-9]*"
    color blue "\.[0-9]*"
    color blue "\-[0-9]*"
    color blue "=[0-9]"
    # spaces
    color ,green "[[:space:]]+$"
    # strings; multilines are not supported
    color brightred ""(\\.|[^"])*"" "'(\\.|[^'])*'"
    # comments
    color brightblack "#.*$"

これはフォーラムに投稿された他のバージョンです。

    ## Arch PKGBUILD files
    ##
    syntax "pkgbuild" "^.*PKGBUILD$"
    color green start="^." end="$"
    color cyan "^.*(pkgbase|pkgname|pkgver|pkgrel|pkgdesc|arch|url|license).*=.*$"
    color brightcyan "\<(pkgbase|pkgname|pkgver|pkgrel|pkgdesc|arch|url|license)\>"
    color brightcyan "(\$|\$\{|\$\()(pkgbase|pkgname|pkgver|pkgrel|pkgdesc|arch|url|license)(|\}|\))"
    color cyan "^.*(depends|makedepends|optdepends|conflicts|provides|replaces).*=.*$"
    color brightcyan "\<(depends|makedepends|optdepends|conflicts|provides|replaces)\>"
    color brightcyan "(\$|\$\{|\$\()(depends|makedepends|optdepends|conflicts|provides|replaces)(|\}|\))"
    color cyan "^.*(groups|backup|noextract|options).*=.*$"
    color brightcyan "\<(groups|backup|noextract|options)\>"
    color brightcyan "(\$|\$\{|\$\()(groups|backup|noextract|options)(|\}|\))"
    color cyan "^.*(install|source|md5sums|sha1sums|sha256sums|sha384sums|sha512sums).*=.*$"
    color brightcyan "\<(install|source|md5sums|sha1sums|sha256sums|sha384sums|sha512sums)\>"
    color brightcyan "(\$|\$\{|\$\()(install|source|md5sums|sha1sums|sha256sums|sha384sums|sha512sums)(|\}|\))"
    color brightcyan "\<(startdir|srcdir|pkgdir)\>"
    color cyan "\.install"
    color brightwhite "=" "'" "\(" "\)" "\"" "#.*$" "\," "\{" "\}"
    color brightred "build\(\)"
    color brightred "package_.*.*$"
    color brightred "\<(configure|make|cmake|scons)\>"
    color red "\<(DESTDIR|PREFIX|prefix|sysconfdir|datadir|libdir|includedir|mandir|infodir)\>"

このファイルを (`/usr/share/nano/pkgbuild.nanorc` などの名前で) 保存してから `~/.nanorc` か `/etc/nanorc` に次のような行を追加してください:

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

#### 他の定義

デフォルトを置き換え拡張するシンタックスハイライトの拡張が AUR にあります、nano-syntax-highlighting-git。

### その他の設定

#### サスペンド

多くの対話式プログラムと異なり、デフォルトではサスペンドは無効にされています。これを変更するには、`/etc/nanorc` 内の 'set suspend' の行をアンコメントしてください。これで `Ctrl+z` を使って nano をバックグラウンドに送ることができます。

#### 文章を折り返さない

他のディストリビューションから来た時、nano の挙動がおかしく感じるかもしれません。その場合 `/etc/nanorc` を以下のように編集してください:

    ## Do not wrap text at all.
    set nowrap

## nano の使用方法

### 特別な関数

- nano の画面で下の2行に表示されるよく使われる関数の中で `^`は `Ctrl` キーの修飾を表しています。
- `Meta` (通常は `Alt`) や `Esc` キーで修飾することで追加機能を対話式に切り替えることができます。

#### ショートカットリスト

- `^G Get Help` (`F1`)

  セッションウィンドウの中にオンラインのヘルプファイルを表示します。nano ユーザーは全て読むことが提案されています

- `^O WriteOut` (`F3`)

  現在のファイルバッファの内容をディスク上のファイルに保存する

- `^R Read File` (`F5`)

  カーソル位置に他のファイルを挿入する

- `^Y Prev Page` (`F7`)

  前のバッファ画面を表示する

- `^K Cut Text` (`F9`)

  現在の行の初めから最後までカットして保存する

- `^C Cur Pos` (`F11`)

  現在のカーソルの行・桁そして文字の位置情報を表示する

- `^X Exit` (`F2`)

  nano を終了する

- `^J Justify` (`F4`)

  コンソールウィンドウのジオメトリに文章を整列させる

- `^W Where` (`F6`)

  大文字小文字を区別する文字・正規表現検索を実行する

- `^V Next Page` (`F8`)

  次のバッファ画面を表示する

- `^U UnCut Text` (`F10`)

  カットバッファの中身を現在のカーソル位置にペーストする

- `^T To Spell` (`F12`)

  内蔵の `spell` でバッファの中身をスペルチェック

Tip: nano のオンラインヘルプファイルは nano の中で `Ctrl+g` を使うことで見られます。また、nano Command Manual に完全な説明と追加のサポートが記載されています。

#### 機能の切り替え

- `Meta+c` (or `Esc+c`)

  行・桁そして文字の位置情報の表示を切り替える

- `Meta+i` (or `Esc+i`)

  自動インデントを切り替える

- `Meta+k` (or `Esc+k`)

  現在のカーソル位置から行の最後まで文章をカットするのを切り替える

- `Meta+m` (or `Esc+m`)

  マウスを使ってカーソルの移動やマーク、ショートカットするのを切り替える

- `Meta+x` (or `Esc+x`)

  nano の画面の一番下にショートカットリストを表示するのを切り替える

Tip: Feature Toggles に nano で利用できる全ての切り替えが記載されています。

## Tips & tricks

### vi を nano で置き換える

ライトユーザーにとっては使いやすくてシンプルな `nano` の方が `vi` よりも好ましいかもしれません。'visudo などのコマンドで利用するデフォルトのテキストエディタを vi から nano に置き換えることが可能です。

#### 方法1

Warning: `man 8 visudo` より: ユーザーが VISUAL や EDITOR を設定して簡単にどのプログラムを実行できるようにするのでこれがセキュリティホールになる可能性があります、注意してください。

core リポジトリに入っている sudo はデフォルトで `--with-env-editor` を使ってコンパイルされているので `VISUAL` や `EDITOR` 変数を使います。現在のシェルセッションの間 visudo のエディタとして使うには、visudo を呼び出す前に `EDITOR` 変数を設定して下さい。

    export EDITOR=nano

##### 設定例

     export EDITOR=nano && sudo visudo

#### 方法2

Warning: `man 8 visudo` より: ユーザーが VISUAL や EDITOR を設定して簡単にどのプログラムを実行できるようにするのでこれがセキュリティホールになる可能性があります、注意してください。

EDITOR 変数は以下のファイルで設定することで永続的に使うことができます:

- ~/.profile (`.bash_profile` の代替)
- ~/.bashrc (対話式、ログインシェルではない)
- /etc/profile (`root` を除く全てのシステムユーザー共通の設定)

##### .bash_profile の例

    . $HOME/.bashrc

#### 方法3

Note: この方法は厳しすぎると思われるかもしれず、全てのユーザーには適さないかもしれません。それでも以下の方法は実行可能です。

##### シンボリックリンク

復元用に `vi` の実行ファイルを `vi.old` に名前を変えて下さい:

    # mv /usr/bin/vi /usr/bin/vi.old

`/usr/bin/nano` から `/usr/bin/vi` にシンボリックリンクを作成して下さい:

    # ln -s /usr/bin/nano /usr/bin/vi

永続的にするには `pacman.conf`の `IgnorePkg` に `vi` を追加してください。そうしないと更新した時に `vi` に戻ってしまいます。

##### vi の復元

`/usr/bin/vi` シンボリックリンクを削除して下さい:

    unlink /usr/bin/vi

`vi.old` 実行ファイルを `vi` に名前を戻して下さい:

    mv /usr/bin/vi.old /usr/bin/vi

#### 方法4

Note: この方法は厳しすぎると思われるかもしれず、全てのユーザーには適さないかもしれません。それでも以下の方法は実行可能です。

##### 削除 & シンボリックリンク

pacman を使って `vi` パッケージ、設定、全ての必要な依存パッケージを削除して下さい:

    pacman -Rns vi

`/usr/bin/nano` から `/usr/bin/vi` にシンボリックリンクを作成して下さい:

    ln -s /usr/bin/nano /usr/bin/vi

##### vi の復元

`/usr/bin/vi` シンボリックリンクを削除して下さい:

    unlink /usr/bin/vi

pacman を使ってさっき削除した `vi` パッケージをインストールして下さい:

    pacman -S vi

Note: Do not clean `-c` or refresh `-y` the package database if you wish to retain the previously installed version of the `vi` package.
If this case, subsequent updates will also require the judicious use of the `--ignore vi` switch (and optionally `--ignore glibc ncurses coreutils`).

## 追加資料

- nano (テキストエディタ) - Wikipedia
- GNU nano Homepage - 公式サイト
- GNU nano Bugs バグレポート
- Better syntax highlighting definitions

Category:

- Text editors (日本語)