Ubuntu Weekly Recipe

第518回 Ubuntu標準のテキストエディタ「GNU nano」

この記事を読むのに必要な時間:およそ 3 分

GNU nanoはほとんどのUbuntuマシンにインストールされている,Ubuntu標準のテキストエディタです。 今回はUbuntu 16.04 LTSからUbuntu 18.04 LTSにアップグレードした人に向けてGNU nanoの新機能を紹介します。

Ubuntuで2番目にインストールされているテキストエディタ

GNU nanoは直感的な操作が可能なCUIで利用できるテキストエディタです。UbuntuのDesktopやServerに最初からインストールされており,なおかつeditorコマンドを実行するとnanoが起動するように設定されているため,Ubuntu標準のテキストエディタとも言えるでしょう。実際,ほぼすべてのUbuntuユーザーが一度はnanoを起動したことがあるはずです※1)⁠

※1
そしてすぐにupdate-alternativesでeditorコマンドの参照先を変えるかもしれません。

Ubuntuパッケージのインストール情報を収集しているpopconの統計を見てみるとnanoは全体で125位とeditorsセクションとしては2番目にインストールされているテキストエディタであることがわかります。つまりそれだけユーザーから愛されているソフトウェアということです※2)⁠

※2
popconはpopularity-contestパッケージをインストールし,なおかつpopconを有効化しているマシン上のパッケージ情報を収集する仕組みです。Ubuntuの場合はインストール直後の状態では有効化されていません。よってなんらかのバイアスがかかっていることはご承知おきください。統計に参加したい場合,/etc/popularity-contest.confのPARTICIPATEをyesに変更します。以前はインストール時やソフトウェア・ソースから設定できましたが,今はそのようなUIはないようです。

実際のところnanoはstandardタスクに分類されているため,DesktopやServerをインストールするともれなく付いてきます※3)⁠つまり「インストールされた」ことを換算する限りnanoは非常に有利です。ちなみに最もインストールされているエディタは75位のedです。3番目が137位のvim-tinyとなっています。それに対して「最近使われた」ことを示すvoteフィールドだと,LibreOffice,vimに続いてnanoは3位になるようです。

※3
snapで使われるCoreやDockerなどで使うことを想定したUbuntu Baseにはnanoはインストールされていません。それどころかvimもインストールされていないので,どうしてもその環境でテキストを編集したい場合は「catとsed」⁠もしくはその他のユーテリティーコマンド)でがんばってください。

さらにsed派の名誉のために追記しておくと,sedはutilsセクションだったために除外しています。実際はインストールベースで3位,voteベースで20位なのでsedをエディタとして考えた場合はダントツの1位になります。

Ubuntuの標準エディタになっているのは,純粋に「初心者向けだから」が理由です。何がどう初心者向けかというと,間違って何かのファイルをエディタで開いたときにとりあえず「終了方法がわかる」ことがポイントです。その点nanoは,常に画面の下に操作方法を表示しているため,比較的初心者向けと言えます。

図1 nanoのヘルプメッセージ

画像

ところでnanoのメニューは「^X 終了」のような表示になっています。この「^X」「Ctrlを押しながらX」もしくは「ESCを2回押してX」ということは,Ubutnuをターミナルで使う程度のリテラシーは持っている初心者にとって類推可能な常識なのでしょうか。もちろんこの連載の読者にとっては「常識」なのはわかります。ただし結局のところ初心者がここの類推ができないとvimやEmacsと同程度には詰んでしまう気がしています。ちなみに「-m」オプションを付けてマウスモードを有効化して起動した場合(もしくは起動中にAlt-Mでマウス機能を有効化した場合)は,このヘルプメッセージをクリックして操作できます。

そのnanoですが,次のような機能を持っている十分に高機能なテキストエディタです。

  • マルチバッファ
  • 正規表現に対応した検索・置換機能
  • シンタックスハイライト
  • 自動インデント
  • UnDo/ReDo機能
  • 組み込みのディレクトリブラウザー
  • キーバインディングのカスタマイズ
  • マウスサポート
  • Unicode入力対応

詳しい機能の使い方については「Ctrl-G」で表示されるヘルプを参照するのが一番でしょう。ほぼすべて日本語化されています。またnanoコマンドや設定ファイルであるnanorcのmanもカスタマイズの参考になるはずです。

Ubuntu 18.04 LTSのnanoの新機能

Ubuntu 18.04 LTSのnanoは2.9.3ベースとなっています。16.04の2.5.3に対して22回のリリースが行われ,その間に順当に進化してきました。バイナリファイルサイズも203KiBから240KiBと2割近く増加しています。Ubuntuの一番最初のリリースである4.10に同梱された1.2.3に比べると2倍以上に膨らんでいるのです。まぁ,最初の頃はマルチバイト文字を含む行をwrapすると無限ループでハングアップしたり,UnDo/ReDo機能が有効になったのもここ数年のことだったりと,当時としては機能的にシンプルすぎたというのもあるかもしれません。

ここからは16.04のnanoユーザーのために,18.04までに実装された主な新機能を紹介しましょう。

折り返し関連機能の充実

nanoは画面サイズに対して長い行の折り返し表示機能(soft wrap)に対応しています。折り返し表示はAlt-$で有効・無効を切り替えられます。

これまで折り返し表示を有効化した際のカーソルの移動は,常に論理行単位で行われていました。つまり折り返し機能によって「見た目上」2行表示されている最初の行で下矢印キーを押した場合,⁠見た目の上の2行目」ではなく「実際の次の行」にカーソルが移動していたのです。つまりユーザーから見ると1行飛ばされたことになります。

この動作は直感的ではないということで,折り返し表示機能が有効化されている場合,カーソルの移動は見た目の行にあわせて移動するようになりました。具体的には次のような操作が変わっています。

  • Up/Downキーで見た目上の行を移動する。
  • Home/Endキーを押した時はまず表示上の行頭・行末に移動する。表示上の行頭・行末でHome/Endを押した時は,実際の行頭・行末に移動する。
  • 1行スクロール(Alt--/Alt-+)は見た目上の行をスクロールさせる。

折り返し表示有効化時に,折り返し行の末尾と先頭にまたいで全角幅の文字が存在するとき,その文字が表示されない問題も合わせて修正されています。

さらにnanorcで「set atblanks」を指定しておくと,行末ではなく空白文字で折り返されるようになります。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。