Ubuntuのターミナルで設定ファイルを編集する必要がありました。
viのコマンドがうろ覚えで設定ファイルを破壊してしまうのが怖いです。
そこで、nanoエディタを使いました。
1. nano
nanoの主な用途は、システム設定ファイルの編集です。
とくに、どこでも動くので、SSHで接続したサーバー上での作業に適しています。
たとえば、sudo nano /etc/hostsとコマンドを入力すると、画面全体がエディタに切り替わります。


nanoの最大の特徴は、画面下部に^X Exit、^O Write Out などのコマンドが常に表示されていることです。
画面下部に表示される^Xや^Oという記号。
この^は、Ctrlキーを意味します。
つまり、^Xは「Ctrl + X」のことです。
| 操作 | nano | VS Code | Emacs | vi/vim |
|---|---|---|---|---|
| 保存 | Ctrl-O → Enter | Ctrl-S | C-x C-s | :w |
| 名前を付けて保存 | Ctrl-O → ファイル名変更 | Ctrl-Shift-S | C-x C-w | :w ファイル名 |
| 終了 | Ctrl-X | Ctrl-Q | C-x C-c | :q |
| 保存して終了 | Ctrl-O → Ctrl-X | – | C-x C-s → C-x C-c | :wq または ZZ |
| 新規ファイル | nano(起動時) | Ctrl-N | C-x C-f | :e ファイル名 |
| ファイルを開く | Ctrl-R | Ctrl-O | C-x C-f | :e ファイル名 |
viやemacsなどは、コマンドが独特で咄嗟に思い出せないときには困ります。
ただし、nanoのショートカットキーは、Windowsなどでの現代的なエディタとは微妙に違うので注意が必要です。
1.1. nanoとpico
nanoは、picoの後継クローンです。
「pico」は1992年にワシントン大学が開発したテキストエディタ。
「Pine composer」の略で、メールクライアントPineでメール作成するためのシンプルなエディタとして設計されました。
ただし、picoの初期のライセンスには不明確な再配布条件があったため、フリーソフトウェアとして誰でも自由に使える代替品が必要でした。
そこで、Chris Allegrettaが当初は「TIP(TIP Isn’t Pico)」という名前で1999年に開発を開始し、名前の衝突を避けるため2000年に「nano」に改名、2001年にGNUプロジェクトの一部となった経緯があります。
picoは現在積極的に開発されていないので1、多くのLinuxシステムでは、picoコマンドは実際にはnanoへのシンボリックリンクになっています。
2. nanoの起動と画面構成
nanoは、ターミナルから簡単に起動できます。
nano
このコマンドだけで、空のエディタが開きます。
既存のファイルを開く場合は、ファイル名を指定します。
nano test.txt
Code language: CSS (css)
ファイルが存在しない場合、nanoは新規ファイルとして扱います。
保存時に初めてファイルが作成される仕組みです。
2.1. 画面の見方
nanoを起動すると、画面は3つの領域に分かれています。
操作に迷ったときも、画面を見れば基本的な操作がわかるのです。
上部にはタイトルバーがあり、編集中のファイル名が表示されます。
中央の広い領域が編集エリアです。ここに文章を入力していきます。
そして下部には、2行のショートカットキー一覧が表示されます。
これがnanoの大きな特徴です。常に使えるコマンドが目に見える形で表示されているのです。
3. ショートカットキーの基本ルール
ファイルを保存するには、Ctrl + O(Write Out)を押します。
すると、画面下部にファイル名の確認が表示されます。
Enterキーを押せば保存完了です。
エディタを終了するには、Ctrl + X(Exit)です。
未保存の変更がある場合、nanoは親切に確認を求めてきます。Yで保存、Nで破棄、Ctrl + Cでキャンセルです。
4. テキスト編集の基本操作
nanoでは、矢印キーでカーソルを自由に動かせます。
これは直感的でわかりやすい点です。
さらに効率的な移動方法もあります。Ctrl + Aで行頭へ、Ctrl + Eで行末へ移動します。
| 操作 | nano | VS Code | Emacs | vi/vim |
|---|---|---|---|---|
| 左へ1文字 | ← | ← | C-b | h |
| 右へ1文字 | → | → | C-f | l |
| 上へ1行 | ↑ | ↑ | C-p | k |
| 下へ1行 | ↓ | ↓ | C-n | j |
| 行頭へ | Ctrl-A | Home | C-a | 0 または ^ |
| 行末へ | Ctrl-E | End | C-e | $ |
| ファイルの先頭へ | Alt-\ | Ctrl-Home | M-< | gg |
| ファイルの末尾へ | Alt-/ | Ctrl-End | M-> | G |
| ページアップ | Ctrl-Y | PageUp | M-v | Ctrl-b |
| ページダウン | Ctrl-V | PageDown | C-v | Ctrl-f |
ページ単位で移動するには、Ctrl + Yで上へ、Ctrl + Vで下へスクロールします。
大きなファイルを扱うとき、この機能が役立ちます。
4.1. テキストの削除
文字の削除は、BackspaceキーやDeleteキーが使えます。
これは他のエディタと同じです。
| 操作 | nano | VS Code | Emacs | vi/vim |
|---|---|---|---|---|
| 1文字削除(前) | Backspace | Backspace | Backspace | X |
| 1文字削除(後) | Delete | Delete | C-d | x |
| 行の削除(カット) | Ctrl-K | Ctrl-Shift-K | C-k | dd |
| 元に戻す | Alt-U | Ctrl-Z | C-/ または C-x u | u |
| やり直し | Alt-E | Ctrl-Y | C-g C-/ | Ctrl-r |
| 全選択 | Alt-A → カーソル移動 | Ctrl-A | C-x h | ggVG |
行全体を削除したい場合は、Ctrl + K(Cut)を使います。
実際には「カット」なので、削除された行はバッファに保存されます。
4.2. コピーと貼り付け
nanoのコピー機能は、少し独特です。
まずCtrl + 6(またはAlt + A)でマーク位置を設定します。
次にカーソルを動かして範囲を選択し、Alt + 6でコピーします。
| 操作 | nano | VS Code | Emacs | vi/vim |
|---|---|---|---|---|
| コピー | Alt-6(マーク後) | Ctrl-C | M-w(マーク後) | y |
| カット | Ctrl-K | Ctrl-X | C-w(マーク後) | d |
| ペースト | Ctrl-U | Ctrl-V | C-y | p |
| マーク設定 | Ctrl-6 または Alt-A | – | C-Space | v |
| 行のコピー | – | Ctrl-C (選択なし) | – | yy |
カットはCtrl + K、貼り付けはCtrl + U(Uncut)です。
5. 検索と置換の機能
| 操作 | nano | VS Code | Emacs | vi/vim |
|---|---|---|---|---|
| 検索 | Ctrl-W | Ctrl-F | C-s(前方検索) | /パターン |
| 次を検索 | Alt-W | F3 または Enter | C-s | n |
| 前を検索 | – | Shift-F3 | C-r | N |
| 置換 | Ctrl-\ | Ctrl-H | M-% | :s/検索/置換/ |
| 全置換 | Ctrl-\ → A | Ctrl-H → 全置換 | – | :%s/検索/置換/g |
| 正規表現検索 | Alt-R(検索中) | 検索ボックスで切替 | -(デフォルト) | /(デフォルト) |
大きなファイルから特定の文字列を探すとき、Ctrl + W(Where Is)を使います。
検索ワードを入力してEnterを押すと、最初にマッチした場所へカーソルが移動します。次の候補を探すには、Alt + Wを押します。
5.1. 置換機能
置換はCtrl + \(Replace)で実行します。
バックスラッシュキーは、日本語キーボードでは¥マークと同じ位置にあります。
検索語と置換語を順番に入力すると、nanoは該当箇所を1つずつ確認しながら置換します。Yで置換、Nでスキップ、Aで全て置換です。
設定ファイルの一括修正などでこの機能を使います。
6. 便利な補助機能
| 操作 | nano | VS Code | Emacs | vi/vim |
|---|---|---|---|---|
| 行番号表示切替 | Alt-# | 設定で変更 | M-x line-number-mode | :set number |
| ヘルプ表示 | Ctrl-G | F1 | C-h t | :help |
| 行へジャンプ | Ctrl-_ | Ctrl-G | M-g g | :行番号 または 行番号G |
| インデント | Tab | Tab | Tab | >> |
| インデント解除 | Alt-{ | Shift-Tab | C-q Tab | << |
| 挿入モード | -(常時) | -(常時) | -(常時) | i, a, o など |
| ノーマルモード | – | – | – | Esc |
コードやログファイルを編集するとき、行番号があると便利です。Alt + #を押すと、行番号の表示・非表示を切り替えられます。
Tabキーでインデント(字下げ)を入力できます。
複数行をまとめてインデントする場合は、Alt + }で右へ、Alt + {で左へシフトします。
6.1. ヘルプの表示
操作に迷ったときは、Ctrl + Gでヘルプ画面を開けます。
すべてのショートカットキーが一覧で表示されるので、忘れてしまった操作を確認できます。
ヘルプから戻るには、再度Ctrl + Gを押すか、Ctrl + Xで終了します。
6.2. シンプルな操作体系
nanoは、複雑なモード切り替えがありません。
起動したらすぐに入力できます。
急いで設定ファイルを修正しなければならない状況で、nanoのシンプルさが光りました。
6.3. ターミナルとの親和性
SSHで接続したリモートサーバーでも、nanoは快適に動作します。
GUIエディタが使えない環境で、nanoは頼れる存在でした。
低速な回線でも、キー入力が遅延することはありません。
軽量なエディタならではの利点です。
7. 制約と注意点
シンタックスハイライト(構文の色分け)は基本的なもののみです。
IDEのような高度な補完機能もありません。
簡単な編集作業には十分ですが、大規模なコーディングには向いていないかもしれません。
nanoは、あくまで軽量なエディタとして割り切る必要があります。
8. nanoを使い続けて見えたもの
nanoエディタは、Unix/Linux環境における「ちょうどいい」選択肢です。
画面に表示されるヘルプが、常に安心感を与えてくれます。
vimほど学習コストは高くなく、catコマンドよりは高機能です。
私はnanoを通じて、シンプルなツールの価値を学びました。すべての機能を詰め込むのではなく、必要十分な機能を使いやすく提供する。それが、優れた道具の条件なのかもしれません。
Ubuntuを使い始めたばかりの人にも、nanoは親しみやすいエディタです。ターミナルでの編集作業が必要になったとき、まずnanoを試してみてください。その使いやすさに、きっと驚くはずです。