誰も興味が無いnanoの基礎の基礎 - nanoはpicoの千倍なの! -

タイトルを見てドン引きした人とはむしろお友達になれそうな気がします。

初めまして、新人の瀬戸と言います。 ネタが無いうえに先輩社員からの前振りがあったので、自分が使用しているエディタについて語りたいと思います。

この記事を見ている人は「エディタ」と聞いて何を思い浮かべるでしょうか。 vimやemacs、サクラエディタ、TeraPad、EmEditorなどを思い浮かべるのでしょうか。

 「メモ帳で十分だろ常識的に考えて…」

   と言う人や、

 「純正viしか認めない!」

   と言う人や、

 「Eclipse使ってないの?プークスクス(笑) …え? IDEの話はしていない?」

   と言う人や、

 「漢なら黙ってcatとパイプ」

   と言う人も居るのかもしれませんね

まあ、何にしても人それぞれ好みのエディタがあって、それを使用している事でしょう。 (環境や言語などによって使い分けるということは往々にしてあると思いますが)

かく言う私も「nano」http://www.nano-editor.org/)というエディタが大好きで、普段のコーディングでも愛用しています。

ところで「nano」というエディタはご存知でしょうか? 結構色々なLinuxディストリにデフォルトで入っていたりするエディタです。

この「nano」というエディタ。少々変わったなエディタで、以下のような特徴があります。

  • vimのようなモードなどはありません。起動後すぐに編集が可能です。
  • emacsのような複雑なコマンドはありません。ctrlキーもしくはmetaキーによる単純な組み合わせのコマンドしかありません。
  • コマンド(一部)はデフォルトで画面下部に表示されていて、操作に困る事はありません。

何となく、初心者に優しいエディタだということが分ってもらえるかと思います。 wikipediaでも「操作方法が非常に直感的であるため、初心者でも比較的容易に扱うことが可能」と紹介されています。

そんな初心者に優しい「nano」は当然の事ながら、vimやemacsのような高機能は望めません。 しかしながらWindowsのメモ帳ほど低機能でもありません。

そんな中途半端な「nano」ですが自分はとってもとっても大好きなので、布教も兼ねて紹介したいと思います。

入門編

 起動

nanoを起動するときに忘れてはいけない「おまじない」があります。

それが-wオプションです。

nanoを触る上で決して忘れてはいけないおまじないです。忘れないようにしましょう。

なお、これはおまじないですので、深く考えてはいけません。

 保存と終了

保存方法と終了方法は画面下部に書いてありますので大丈夫ですね。ちなみに、nanoにおけるctrl^になります。

保存 ^O (ctrl o) 終了 ^X (ctrl x)

 カットアンドペースト

範囲指定をしない場合、nanoでの切取りは一行を切り取るということをします。

一行切取り ^K(ctrl k) 貼付け   ^U(ctrl u)

切取りは連続で行うと蓄積するので、複数行切取り、貼付けが出来ます。 これで簡単なコピーアンドペーストの真似事が出来ますね!

 検索

findではなく、whereということで^Wが検索となります。

検索 ^W(ctrl w)

 ページ送り

キー移動ではまどろっこしい場合などに1画面分進む戻るということも出来ます。

進む ^Y(ctrl y) 戻る ^V(ctrl v)

以上基本はこんな感じとなります。これだけ知っていればnanoを使う事に困る事は無いでしょう。

ね? 簡単でしょ?

設定編

非常にシンプルに出来ているnanoにもいくらかの設定はあります。

 設定方法

nanoの設定は SYSTEMDIR/nanorc でユーザ間で共通の設定をします。SYSTEMDIRはデフォルトでは/etcになります。 ユーザ固有の設定は~/.nanorcを編集する事で可能です。 nanorcのサンプルがどこかにある(デフォルトでは/usr/share/doc/nano/examples/nanorc.sample)ので、 コピーしてそれを書き換えることで設定することになるでしょう。

nanorc.sampleは以下のようになっています。

## Use auto-indentation. # set autoindent

## Backup files to filename~. # set backup

## The directory to put unique backup files in. # set backupdir ""

## Do backwards searches by default. # set backwards

(以下略)

# set ほげほげ のコメントアウトを消す事でその設定が有効になったりデフォルト値を変更することが出来ます。 set autoindent とすると、自動でインデントを入れる機能が有効になるということです。

 オススメ設定

英語が苦手で、なんのためにあるのか分らない設定があったりするので、分る範囲でオススメの設定を抜粋していきます。 ちなみに、「nano」の最新のバージョン2.2.4(5/1現在)をベースに説明します。バージョンの違いによって設定出来ることに差があったりするので気をつけてください。

  • 行頭のスペースを判断して、改行後自動でインデントを入れる設定です。必須。

    ## Use auto-indentation. set autoindent

  • ファイル保存時、別名でバックアップするかの設定。「ファイル名+チルダ」で保存されます。バックアップファイルが目障りでなければ設定しておくべきです。

    ## Backup files to filename~. set backup

  • バックアップファイルをどこに保存するかの設定。 /tmpとかにしておくと目障りでなく、かつ何かあったときにも対応出来て良いかもしれないです。お好みで。

    ## The directory to put unique backup files in. set backupdir ""

  • 反転(範囲選択などでする反転)の表現方法を太字に変えるかどうか。コンソールのフォントを変えるなりしないと見にくいだけなので、あまりお勧めしない。 でも、見た目が綺麗になるので、好きな人は設定すると良いかも。

    ## Use bold text instead of reverse video text. set boldtext

  • ^Cで確認出来るカーソルの位置、文字数などのステータスを常時表示する設定です。お好みで。

    ## Constantly display the cursor position in the statusbar. Note that ## this overrides "quickblank". set const

  • ^Kで切取る際、改行も切り取るかどうかの設定。unset cutで改行を含まない。改行含む切取りの方が良いと思いますが、お好みで。

    ## Use cut to end of line by default. unset cut

  • 検索、置換履歴を取るかどうかの設定です。検索をするときに前回の検索を上キーで選ぶ事が出来るようになります。必須。

    ## Enable ~/.nano_history for saving and reading search/replace strings. set historylog

  • マルチバッファ。 同時に複数の編集が可能になります。 設定しておいて損は無し。

    ## 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 follow symlinks when writing files. set nohelp

  • 画面をはみ出る場合に改行をしない設定。 設定すれば-wのおまじないを忘れた場合にも安心です。

    ## Don't wrap text at all. set nowrap

  • 設定するとスムーズなスクロールになります。 必須。

    ## Use smooth scrolling as the default. set smooth

  • ctrl-Zによるサスペンドを許可するかどうかの設定です。コンソールと行き来が出来るようになるので必須。

    ## Allow nano to be suspended. set suspend

  • タブサイズの設定です。基本的にタブサイズは4の場合が多いと思うので、要設定。

    ## Use this tab size instead of the default; it must be greater than 0. set tabsize 4

  • タブをスペースで表現するかの設定です。お好みで。

    ## Convert typed tabs to spaces. set tabstospaces

以上オススメ設定でした。他にもいくつか設定があったりしますので、調べてみると良いかもしれません。

応用編

使用頻度の高い、知っていると便利と思われるコマンドについていくつか紹介します。

 検索/置換

検索は^Wで可能ですが、同じ検索文字で連続で検索する場合はM-Wを使います。 なおM-metaキーの組み合わせを表します。metaキーEsc(環境によってはAlt)になります。 ^Wで検索した後は、M-Wで順番に検索する事が出来ます。

置換は^W + ^R(もしくはM-R)すると置換モードになり、検索文字列と置換文字列を順に入力させられます。 両方入力後は、置換対象を順に巡り、Y/Nで置換するかどうかを一つ一つ決めていきます。 またAで一括してYとして処理する事も可能です。

^W + M-Bで検索方向を逆向きにしたり、^W + M-Cで大文字小文字を区別した検索が出来たり、^W + M-Rで正規表現での検索が出来たりします。

検索置換機能は貧弱ですが、検索そのものは便利なので使っていきましょう。

 範囲指定コピー

入門編で一行切取りと、貼付けを紹介しました。今度は範囲指定によるコピー(or カット)を紹介します。

範囲指定の開始点を^^もしくはM-Aで指定します。開始点を決定後、カーソルを移動させると文字列が反転します。

反転したところがコピーもしくは切取りの対象となります。反転させた状態でM-^でコピー、^Kで切取りが行われます。

 カーソル移動

  • 先頭に移動する M-|
  • 最後に移動する M-/
  • 1画面分進む  ^Y
  • 1画面分戻る  ^V
  • 行数を指定して移動する ^_
  • 単語区切りで進む ^Space
  • 単語区切りで戻る M-Space

よく使うのは入門編でも出た^Y^Vと、^Space^_あたり。随分と効率が変わってくるので意識して覚えると良いでしょう。

 マルチバッファ

^Rでファイルを新規読み込みすることが出来ます。このときマルチバッファを使えるようにしていると、現在編集中のものを残しつつ新たに編集が可能になります。

編集画面の切り替えは、M-<, M->で行います。片方の文字列をコピーして片方の画面に貼付けするといういことが可能になります。

マルチバッファそのものの使い勝手があまり宜しくないですが、コピーや切取りの情報を共有出来るので、サスペンドでは出来ない同時編集には必須です。

新機能

nanoは今でも機能が追加されているHOTなオープンソースです。というのは冗談ですが、最近になってsoftwrapundoredoの機能が追加されました。

softwrapは改行は使わずに見た目だけ改行して画面内に収める機能です。

今までは画面をはみ出る文ははみ出たままか、勝手に改行を入れられる仕様(おまじないの-w勝手に改行を防いでいました)でしたが、softwrapによって勝手な編集がされずに画面をはみ出る文も見えるようになりました。

undoredoは読んで字のごとくアンドゥリドゥです。それぞれ、M-UM-Eで使えます。

今まで編集ミスはバックアップ頼りで、バックアップが無ければ泣き寝入りでしたが、その心配も無用のものとなりました。

(と良いつつ現状のアンドゥリドゥはバグが多く、強制終了の元なのであまり使用しない方が良いでしょう。これからに期待です)

まとめ

以上自分の知っている限りのnanoの知識を書いてみました。nanoって思いのほか色々出来るような感じがしますが、どうでしょうか?

聞くところによると、「Linuxのインストール後に最初にすることは何?」ランキングの1位が「デフォルトのエディタをnanoからvimに変更すること」らしいですね

そんな可哀想なnanoですが、nanoはやればデキる子なのです。敬遠せずにLinuxの設定編集などで使ってあげてほしいなと思います。