the KodeLab

nano テキストエディタの使い方|Linux・macOS ターミナル入門ガイド

10,362 文字 26 分で読めます
nano テキストエディタの使い方|Linux・macOS ターミナル入門ガイド

ターミナルで作業していると、設定ファイルを編集したいタイミングは必ず訪れます。SSH 設定を変更したい、swap を調整したい、crontab を編集したい —— どんな場面でも「ファイルを開いて中身を直す」という操作は避けて通れません。多くのチュートリアルではここで vim を勧めますが、初めて vim を開いた人はたいてい「どうやって抜けるか」すら分からないまま固まってしまいます。実はもっと初心者に優しい選択肢があります —— nano です。本記事では nano のインストールから基本操作、ショートカット、実用的な .nanorc 設定まで、一通り紹介します。

nano とは

GNU nano はターミナル内で動作するテキストエディタです。もともとは Unix 系の Pico エディタを置き換える自由ソフトウェア版として開発されました。nano の設計思想はシンプルで「使いやすさ重視」。ファイルを開いたらそのまま入力開始でき、vim のように Normal モード・Insert モードの切り替えを覚える必要はありません。さらに画面下部には常によく使うショートカットキーが表示されているので、操作を忘れても画面を見ればすぐに思い出せます。ターミナルに触れ始めたばかりのユーザーに特に向いているエディタです。

「nano と vim、どちらを学ぶべきか?」という質問はよく聞きますが、表で手早く比較してみます。

特性nanovim
学習曲線低い。開けばそのまま入力できる高い。モード切り替えを覚える必要あり
画面のヒント下部にショートカットが表示される表示なし。コマンドを暗記する必要あり
機能の豊富さ基本的な編集には十分非常に強力で高度にカスタマイズ可能
向いている場面設定ファイルの素早い編集、小さな修正大量のコード編集、本格的な文字編集
デフォルトインストール大半の Linux ディストリビューションに標準搭載Ubuntu は最小限の vi のみが標準
終了方法Ctrl + X:q!(先に Esc を押す必要あり)

端的に言えば、ターミナルで設定ファイルをたまに編集する程度の用途なら nano で十分。毎日ターミナルで大量のコードを書く人なら、vim のほうが効率は確かに高いですが、その学習コストは 1〜2 日で済むような話ではありません。

nano のインストール

macOS

macOS には nano コマンドが最初から入っていますが、実はこれは Pico(nano の前身)へのシンボリックリンクです。ls -l で確認できます。

# macOS 標準の nano は実は pico へのシンボリックリンク
ls -l /usr/bin/nano
# lrwxr-xr-x  1 root  wheel  4 /usr/bin/nano -> pico

Pico は 1990 年代の Pine メールソフトに付属していたエディタで、GNU nano はもともとその自由ソフトウェア版の代替を作ることから始まりました。ただし、長年の開発で GNU nano は Pico にはなかった機能 —— undo/redo、行番号表示、シンタックスハイライト、検索と置換など —— を大量に追加しています。macOS に内蔵されている Pico は非常に簡素で、本記事で紹介する機能の多くに対応していません。Homebrew で完全版の GNU nano をインストールすることをおすすめします。Homebrew をまだ使ったことがない場合は macOS Homebrew 入門|インストールと使い方ガイド を参照してください。

# GNU nano をインストール
brew install nano

# `which -a` でシステム上のすべての nano を確認
which -a nano
# /opt/homebrew/bin/nano    ← Homebrew でインストールした GNU nano
# /usr/bin/nano             ← macOS 標準の Pico

# バージョン確認(pico ではなく GNU nano と表示されるはず)
nano --version

インストール後、Homebrew 版 nano は /opt/homebrew/bin/nano に配置されます。Homebrew のパスが PATH 内で先に来ていれば(デフォルトでそうなっています)、nano と入力すると新しい版が自動的に使われます。もし nano --version の結果が Pico のままなら、~/.zshrc に alias を追加して強制的に指定できます。

# ~/.zshrc に alias を追加して Homebrew 版の nano が使われるように
echo "alias nano='/opt/homebrew/bin/nano'" >> ~/.zshrc

# 設定を再読み込み
source ~/.zshrc

Linux

大半の Linux ディストリビューションには nano が最初から入っています。ターミナルで nano と入力すれば確認できます。入っていない場合はパッケージマネージャーでインストールできます。

# Ubuntu / Debian
sudo apt install nano

# CentOS / RHEL / Fedora
sudo dnf install nano

# Arch Linux
sudo pacman -S nano

# バージョン確認
nano --version

基本操作

ファイルを開く

nano でファイルを開く方法は至ってシンプルで、nano の後ろにファイル名を続けるだけです。ファイルが存在しない場合は nano が新しいファイルを自動作成します。

# 既存のファイルを開く
nano myfile.txt

# ファイルが存在しない場合、nano が新規作成
nano newfile.txt

# ファイルを開くときに行番号を表示(GNU nano が必要。macOS 標準版は非対応)
nano -l myfile.txt

# ファイルを開いて 50 行目にジャンプ
nano +50 myfile.txt

# root 権限でシステム設定ファイルを編集
sudo nano /etc/hosts

nano の画面構成を理解する

nano の画面:上部がタイトルバー、中央が編集エリア、下部がショートカットバー
nano の画面:上部がタイトルバー、中央が編集エリア、下部がショートカットバー

nano を開くと、画面はだいたい 3 つのエリアに分かれます。

  • タイトルバー(最上段):nano のバージョンと現在開いているファイル名を表示します。ファイルが変更されたが保存されていない場合は「Modified」と表示されます。
  • 編集エリア(中央):ファイルの内容。カーソルがここで点滅し、そのままタイピングで編集できます。
  • ショートカットバー(最下段の 2 行):よく使うショートカットキーを表示します。これが nano のいちばん親切なところで、いつでもヒントが見えます。

ショートカットバーには 2 種類の記号が出てきますので、ここで説明しておきます。

  • ^Ctrl キーを意味します。例えば ^XCtrl + X のことです。
  • M-Meta キーを意味し、大半のシステムでは Alt キーのことです。例えば M-UAlt + U。macOS ユーザーは Meta ショートカットを使うために追加設定が必要で、後述の FAQ で詳しく説明します。

保存と終了

nano を使うなら、この 2 つの操作はまず覚えておきたいところです。

ファイルを保存(終了しない)Ctrl + O(WriteOut)を押します。nano が画面下部にファイル名を表示して確認を求めてくるので、そのまま Enter を押せば保存されます。別名で保存したい場合は、ここでファイル名を編集してから Enter を押します。

nano を終了Ctrl + X を押します。ファイルに未保存の変更がある場合、nano が保存するかどうか尋ねてきます。

  • Y:保存して終了。続いてファイル名の確認が出るので Enter を押すだけ。
  • N:保存せずに終了(変更をすべて破棄)。
  • Ctrl + C:キャンセル。編集画面に戻って作業を続けます。

いちばんよく使う流れは、編集後に Ctrl + XY で保存確認 → Enter でファイル名確認、これで完了です。

便利な起動オプション

nano にはよく使うコマンドラインオプションがいくつかあり、ファイルを開く際に付けられます。下の表で「GNU nano」と書かれているものは macOS 標準版(Pico)では非対応で、Homebrew で GNU nano をインストールしないと使えません。

オプション機能対応
+行番号開いた後に指定行にジャンプnano +100 app.log全て
-mマウス操作を有効化nano -m myfile.txt全て
-l行番号を表示nano -l config.yamlGNU nano
-B保存時にバックアップファイルを自動作成(filename~nano -B /etc/nginx/nginx.confGNU nano
-iオートインデント(新しい行が前の行に揃う)nano -i script.shGNU nano
-ETab をスペースに変換nano -E code.pyGNU nano

macOS で GNU nano をまだインストールしておらず、カーソルが何行目にあるかを知りたい場合は、Ctrl + C でカーソル位置を確認できます。行番号・カラム・総文字数が表示されます。

カーソル移動とナビゲーション

基本移動

方向キーでカーソルを移動するほかに、nano にはファイル内をより高速に移動できるショートカットもあります。

# 基本移動
Ctrl + A    # 行頭へジャンプ
Ctrl + E    # 行末へジャンプ
Ctrl + Y    # ページアップ
Ctrl + V    # ページダウン

# 指定した行番号へジャンプ
Ctrl + _    # 行番号を入力して Enter(Ctrl + Shift + -)

# ファイルの先頭 / 末尾へジャンプ
Alt + \     # ファイルの先頭行
Alt + /     # ファイルの最終行

高速移動

1 文字ずつではなく 1 単語ずつ移動したい場合は、次のショートカットが使えます。

# 単語単位で移動
Ctrl + Space    # 前方向に 1 単語進む
Alt + Space     # 後方向に 1 単語戻る

# 段落単位で移動(新しめの GNU nano が必要)
Alt + (         # 前の段落へ
Alt + )         # 次の段落へ

編集操作

切り取り・コピー・貼り付け

ターミナルがマウス選択に対応していれば、マウスで文字を選び、Cmd + C(macOS)や Ctrl + Shift + C(Linux)でコピー、Cmd + VCtrl + Shift + V で貼り付けできます。ただしマウスのない純粋なターミナル環境、あるいはキーボードとマウスを頻繁に行き来したくない場合、nano のキーボード操作を覚えておくとはるかに速く作業できます。

nano の切り取り・貼り付けの挙動は通常のテキストエディタとは少し違い、デフォルトでは 1 行単位 で動作します。

# カーソルがある行を切り取り
Ctrl + K

# カーソルがある行をコピー(削除はしない)
Alt + 6

# 直前に切り取り / コピーした内容を貼り付け
Ctrl + U

便利なテクニック:Ctrl + K を連続で押すと複数行を同じクリップボードに切り取れ、後で Ctrl + U で一度に貼り付けできます。ただし切り取りの間にカーソルを動かすとクリップボードはリセットされ、最後の 1 行分しか残りません。

テキストの選択

行単位ではなく、テキストの一部だけを選択したい場合は、マーク機能を使います。

# カーソル位置にマークを設定(選択開始)
Alt + A

# カーソルを動かして範囲を広げる(方向キーや上記の移動ショートカットで OK)

# 選択範囲に対する操作
Ctrl + K    # 選択したテキストを切り取り
Alt + 6     # 選択したテキストをコピー

# 貼り付け
Ctrl + U

# 選択を解除
Alt + A     # もう一度押すとマーク解除

undo と redo

編集を間違えても大丈夫、nano は undo と redo に対応しています。

# 直前の操作を undo
Alt + U

# redo
Alt + E

注意点:undo/redo は GNU nano 2.3.5 以降 でのみ使えます。macOS 標準の nano(実は Pico)には undo 機能がないので、Homebrew で新しい版をインストールすることを強くおすすめします。

検索と置換

テキストを検索

長いファイルの中から特定の内容を探すとき、目視で追うより検索を使うほうがずっと速いです。

# 検索を開始(Where Is)
Ctrl + W
# 検索したい文字列を入力して Enter

# 次の検索結果へ
Alt + W

# 検索画面内で使える切り替え
Alt + B     # 前方向検索 / 後方向検索 の切り替え
Alt + R     # 正規表現モードの切り替え

テキストを置換

検索と置換は、設定ファイルを編集するときによく使う機能です。例えば古い IP アドレスを新しいものにまとめて置き換えたいときなど。

# 検索と置換を開始
Ctrl + \

# 流れ:
# 1. 検索する文字列を入力して Enter
# 2. 置換後の文字列を入力して Enter
# 3. nano が最初のマッチ箇所で止まり、処理を尋ねてくる:
#    Y - これを置換して次へ
#    N - 置換せず次へ
#    A - 全て置換(以降は確認しない)

具体例として、Nginx 設定ファイル内のポートを 8080 から 3000 に変更したいとします。

# 設定ファイルを開く
sudo nano /etc/nginx/sites-available/default

# Ctrl + \ で検索と置換を開く
# Search: 8080
# Replace with: 3000
# A を押して全て置換

# Ctrl + X → Y → Enter で保存して終了

ショートカットキー対応表

よく使うショートカットを 1 枚にまとめました。Mac ユーザーは Option キーを Alt の代わりに使えば、同じ機能が動作します。

カテゴリショートカット機能
ファイルCtrl + Oファイルを保存
ファイルCtrl + Xnano を終了
ファイルCtrl + R他のファイルの内容を挿入
移動Ctrl + A / Ctrl + E行頭 / 行末へジャンプ
移動Ctrl + Y / Ctrl + Vページアップ / ダウン
移動Ctrl + _指定行番号へジャンプ
移動Alt + \ / Alt + /ファイル先頭 / 末尾へ
編集Ctrl + K1 行を切り取り
編集Alt + 61 行をコピー
編集Ctrl + U貼り付け
編集Alt + A選択の開始 / 解除
編集Alt + Uundo
編集Alt + Eredo
検索Ctrl + W検索
検索Alt + W次を検索
検索Ctrl + \検索と置換
表示Alt + N行番号の表示 / 非表示
表示Alt + P空白文字の表示 / 非表示
表示Alt + #行コメントの切り替え

設定ファイル .nanorc

設定ファイルの場所

nano の設定ファイルには 2 つの階層があります。

  • 全体設定/etc/nanorc、全ユーザーに影響します。
  • ユーザー個別設定~/.nanorc(または ~/.config/nano/nanorc)、自分のみに影響し、全体設定を上書きします。

設定は ~/.nanorc に書くのをおすすめします。他のユーザーに影響せず、管理もしやすいためです。

おすすめの設定

下記は実用的な設定例で、各行にコメントを付けています。内容をそのまま ~/.nanorc に貼り付ければ動きます。

# ============================
# 表示
# ============================

# 行番号を表示
set linenumbers

# カーソル位置(行番号・カラム・文字数)をステータスバーに常時表示
set constantshow

# ============================
# 編集動作
# ============================

# Tab 幅を 4 文字に
set tabsize 4

# Tab キーをスペースに変換
set tabstospaces

# オートインデントを有効化(新しい行が前の行のインデントに揃う)
set autoindent

# マウス操作を有効化(クリックでカーソル位置を変更可能)
set mouse

# ============================
# スクロールと表示
# ============================

# スクロール時にカーソルを画面の中央付近に保ち、端に貼り付かないようにする
set scrollerbound

# 画面幅を超える行はソフトラップして水平スクロールを避ける
set softwrap

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

# Linux:システム標準の定義ファイルを読み込み
include "/usr/share/nano/*.nanorc"

# macOS Homebrew:Homebrew でインストールした場合は下の行を使う
# include "/opt/homebrew/share/nano/*.nanorc"

補足:# で始まる行はコメントで nano に読み込まれません。無効化したい設定の先頭に # を付ければ、nano はその行を無視します。異なる設定の効果をすばやく試したいときに便利です。

シンタックスハイライト

GNU nano にはシンタックスハイライト機能が組み込まれており、Python、JavaScript、YAML、JSON、Bash、HTML、CSS など、よく使われる言語・フォーマットの定義ファイルがデフォルトで付属しています。~/.nanorcinclude の行を追加するだけで、ファイルの拡張子に応じて自動的に色付けされます。

システムごとに定義ファイルのパスが少し異なります。

システムシンタックスハイライト定義ファイルのパス
Ubuntu / Debian/usr/share/nano/*.nanorc
CentOS / Fedora/usr/share/nano/*.nanorc
macOS(Homebrew)/opt/homebrew/share/nano/*.nanorc
Arch Linux/usr/share/nano/*.nanorc

一部のファイル種別にハイライトが効かない場合、自分で定義ファイルを書いて ~/.nano/ に置き、~/.nanorc で include することもできます。ただし、よく使うファイル種別はほとんどが標準で対応済みです。

実践的なシナリオ

sudo nano でシステム設定ファイルを編集

nano のもっとも典型的な用途です。Linux のシステム設定ファイルの多くは root 権限が必要なため、sudo nano をそのまま使って編集できます。

# hosts ファイルを編集
sudo nano /etc/hosts

# SSH の設定を編集
sudo nano /etc/ssh/sshd_config

# swap / ファイルシステム設定を編集(Swap 記事参照)
sudo nano /etc/fstab

# Nginx のサイト設定を編集
sudo nano /etc/nginx/sites-available/default

過去記事の Linux Swap とは?Debian/Ubuntu で Swap を追加する方法 では、sudo nano/etc/fstab を編集して swap を再起動後も有効にする流れを紹介しています。nano を使った設定編集の実例として参考になります。

nano をデフォルトエディタに設定

crontab -egit commit-m なしの場合)のように、システムのデフォルトエディタを呼び出すコマンドがあります。デフォルトが vim になっていて nano に変えたい場合、シェルの設定ファイルに環境変数を追加します。

# 以下 2 行を ~/.bashrc か ~/.zshrc に追加
export EDITOR=nano
export VISUAL=nano

# 追加後、設定を再読み込み
source ~/.bashrc   # bash の場合
source ~/.zshrc    # zsh の場合

これで crontab -e は nano で自動的に開くようになり、エディタの選択プロンプトも出なくなります。

tmux 内で nano を使う

tmux の Pane 内で nano を開くのは、非常によくある作業スタイルです。片方の Pane で nano で設定ファイルを編集しつつ、もう片方の Pane でログを流すなり、テストコマンドを実行するなりすれば、保存直後にその効果が確認できます。さらに tmux Session 内で nano を使うメリットとして、SSH が切断されても編集状態が残ること。再接続して attach すれば、そのまま続きから作業できます。

よくある質問

nano の ^M- は何?

^Ctrl キー、M-Meta キーを意味します。Meta は大半の Linux システムでは Alt キーのことです。もう 1 つの押し方として、先に Esc を押してから対応する英字を押す方法もあり、効果は同じです。例えば M-U(undo)は Alt + U で押すこともできれば、Esc を押してから U を押すこともできます。

macOS で Alt ショートカットが効かないときは?

macOS のターミナルはデフォルトでは Option(⌥)を Meta/Alt キーとして扱わないため、nano の M- ショートカットは反応しません。解決方法は使っているターミナル App によって異なります。

macOS 標準の Terminal.app:Terminal を開く → メニューの「Settings…」→ 使用中の Profile を選択 → 「Keyboard」タブ → 「Use Option as Meta key」にチェック。

iTerm2:iTerm2 を開く → Preferences → Profiles → Keys → General → 「Left Option key」を「Esc+」に変更。

設定後、Option + UM-U(undo)として動作し、その他の Meta ショートカットも正常に使えるようになります。設定を変えたくない場合は、「先に Esc を押してから英字を押す」方式でも代用できます。

nano で複数ファイルを同時に開ける?

開けます。コマンドの後ろに複数のファイル名を続けるだけです。

# 複数ファイルを同時に開く
nano file1.txt file2.txt file3.txt

# ファイル間の切り替え
Alt + <     # 前のファイルへ
Alt + >     # 次のファイルへ

# nano 内で別ファイルを読み込む
Ctrl + R    # 別のファイルの内容を現在のカーソル位置に挿入

nano と vim、どちらを学べばいい?

ターミナルでたまに設定ファイルを編集したり、小さな修正をするだけなら nano で十分です。操作が直感的で学習コストが低く、5 分で使いこなせます。毎日ターミナルでコードを書いている開発者で、かつ時間をかけて学習する意欲があるなら、vim のほうが編集効率は高くなります。ただし両者は対立するものではなく、普段のコーディングは vim、SSH 先で設定ファイルを編集するときは nano、と使い分けている人も多いです。場面に応じて選べば OK。

nano で行番号を表示するには?

GNU nano(Linux または macOS Homebrew)を使っている場合、3 通りの方法があります。

  • 起動時にオプションを付ける:nano -l filename
  • 編集中に切り替える:Alt + N で行番号の表示 / 非表示を即時切り替え
  • 常に有効にする:~/.nanorcset linenumbers を追加

macOS 標準版(Pico)を使っている場合は上記いずれも使えません。代替策として、Ctrl + C でカーソルの現在位置(行番号とカラム)を確認するか、Homebrew で GNU nano をインストールして本格的な行番号表示を使う方法があります。