echo と >> で、ファイルに1行ずつ書けるようになりました。でも、途中の行を直したいときや、設定ファイルを書き換えたいときは、さすがに不便ですよね。
そこで使うのが、ターミナルの中で動くテキストエディタです。メモ帳のようなものですが、マウスは使わず、キーボードだけで操作します。私が最初に困ったのは、書くことではなく「どうやって閉じるの?」でした。特に vim は、閉じ方がわからなくて、ターミナルごと閉じたことがあります。
この記事では、初心者にやさしい nano の使い方と、いざというときのための vim の「保存して終了」「保存せずに終了」だけを、一緒に練習しましょう。
- nano でファイルを開く・書く・保存する・終了する方法
- vim に入ってしまったときの「保存して終了(
:wq)」と「保存せずに終了(:q!)」 - ふだん使うエディタ(既定のエディタ)の選び方
-
pwd・ls・cdと、パスの書き方がわかる -
catでファイルの中身を表示できる
まだの方は「Linuxでファイルの中身を見る|cat・less・head・tailの使い分け【初心者向け】」から読むのがおすすめです。前の記事は「Linuxで困ったときの調べ方|--help・man・Tab補完・historyで迷わない」です。
- ターミナル:文字を打ってパソコンに指示を出すための画面(アプリ)。いわゆる「黒い画面」です。打った文字を読み取って動かすのは、この中で動いている「シェル」です
- コミット:Git に、ファイルの変更を記録として残すこと
用語で迷ったら、連載のまとめ記事の「よく出てくる用語ミニ辞典」でも確かめられます。
-
Escキーを押す(何回押しても大丈夫です) -
:q!と打つ(半角のコロン、q、びっくりマーク) - Enter を押す
これで、何も保存せずにターミナルに戻れます。ファイルは開く前のままです。落ち着いたら、続きを読んで「保存して終了」の方法も覚えましょう。
結論:ふだんは nano、vim は「出方」だけ覚える
| やりたいこと | nano | vim |
|---|---|---|
| ファイルを開く | nano ファイル名 | vim ファイル名(入っていなければ vi ファイル名) |
| 文字を書く | そのまま打つ | i を押してから打つ(最後の行の下に足すなら G → o) |
| 保存する | Ctrl + O → Enter | Esc → :w → Enter |
| 終了する | Ctrl + X | Esc → :q → Enter |
| 保存して終了 | Ctrl + O → Enter → Ctrl + X | Esc → :wq → Enter |
| 保存せずに終了 | Ctrl + X → N | Esc → :q! → Enter |
準備:練習用のファイルを用意する
練習は ~/linux-practice/edit-test の中で行います。
- 1
- 2
- 3
- 4
mkdir -p ~/linux-practice/edit-test
cd ~/linux-practice/edit-test
echo "1行目:エディタの練習" > memo.txt
cat memo.txtここから先の出力例は、Debian 13での実行例です(ユーザー名 kaito・パソコン名 demo のダミー環境)。UbuntuやWSL(=Windows の中で Linux を動かせる、Microsoft のしくみ)では、表示が少し違うことがあります。
(例)
- 1
1行目:エディタの練習nano:やさしいエディタ
開く
- 1
nano memo.txtnano(ナノ)を開くと、画面のいちばん下に操作の一覧が出ています。^ は Ctrl キーのことです。たとえば ^X は「Ctrl を押しながら X」という意味です。今回の Debian 13(nano 8.4)では、次のように表示されました。
(例)
- 1
- 2
^G Help ^O Write Out ^F Where Is ^K Cut ^T Execute ^C Location M-U Undo
^X Exit ^R Read File ^\ Replace ^U Paste ^J Justify ^/ Go To Line M-E Redoその上に出ている [ Read 1 line ] は、「1行読み込みました」という意味です。M-U の M は、Alt キーのことです。
環境によっては、nano が入っていないことがあります。「command not found」と出た場合は、ソフトを入れる apt の記事(この連載の Lv2)で入れ方を扱います。それまでは、この記事の vim の部分だけ試してみてください。
書く
nano は、開いたらそのまま文字を打てます。矢印キーで1行目の最後まで動いて Enter を押し、2行目を書いてみましょう。
- 1
2行目:nanoで書きました保存する:Ctrl + O → Enter
Ctrl + O を押すと、画面の下に Write to File: memo.txt(memo.txt という名前で書き込みます)と、保存するファイル名がたずねられます。そのまま Enter を押せば保存されます。
保存できると、画面の下に [ Wrote 2 lines ](2行書き込みました)と表示されます。
終了する:Ctrl + X
Ctrl + X で、nano を閉じてターミナルに戻ります。保存してから閉じたので、何も聞かれずに終わるはずです。
- 1
cat memo.txt(例)
- 1
- 2
1行目:エディタの練習
2行目:nanoで書きました保存せずに閉じようとすると
書き換えたまま Ctrl + X を押すと、「保存しますか?」と聞かれます。画面の下には、次のように表示されます。
(例)
- 1
- 2
- 3
Save modified buffer?
Y Yes
N No ^C CancelSave modified buffer? は「変更した内容を保存しますか?」という意味です。
| 押すキー | 結果 |
|---|---|
Y | 保存する(そのあとファイル名を聞かれるので Enter) |
N | 保存せずに閉じる(書き換えた内容は捨てられる) |
Ctrl + C | やめて、編集に戻る |
vim:「出方」だけ覚えておく
vim(ヴィム)は、多くのサーバー(=ほかのパソコンやアプリにサービスを提供するコンピューター)に入っている、とても高機能なエディタです。ただ、操作の考え方が独特なので、初心者がいきなり使うと戸惑います。
この記事では、vim に入ってしまったときに、落ち着いて出られることだけを目標にします。ネットの手順書が vim を前提にしていたり、何かのコマンドで自動的に vim が開いたりすることがあるからです。
開く:まず vim が入っているかを確かめる
- 1
- 2
command -v vim
command -v vi(例)
- 1
- 2
- 3
kaito@demo:~/linux-practice/edit-test$ command -v vim
kaito@demo:~/linux-practice/edit-test$ command -v vi
/usr/bin/vicommand -v vim は何も表示されませんでした。今回の Debian 13 には、最初は vim が入っていないということです。そのかわり、vi という名前で、vim を小さくした版(vim-tiny)が入っていました。
(例)
- 1
- 2
kaito@demo:~/linux-practice/edit-test$ vi --version | head -n 1
VIM - Vi IMproved 9.1 (2024 Jan 02, compiled May 23 2025 00:48:59)そこで、この記事では vi で開きます。vim が入っている環境なら、vim memo.txt で開いて、同じキーで操作できます。
- 1
vi memo.txtDebian で vim を使いたいときは、sudo apt install vim で入れられます。ソフトを入れる apt と sudo の使い方は、この連載の Lv2 で扱います。この記事の「出方」を覚えるだけなら、vi のままで大丈夫です。
左端に ~ が並んでいるのは「ここから下は何もない行」という印です。いちばん下には、"memo.txt" 2 lines, 65 bytes(2行、65バイト)と、開いたファイルの情報が出ています。
vim の2つのモード
vim には、大きく分けて2つのモード(状態)があります。
| モード | できること | 入り方 |
|---|---|---|
| ノーマルモード | 移動・コマンド(保存・終了など) | Esc を押す(開いた直後はこれ) |
| 挿入モード | 文字を打つ | ノーマルモードで i(や o・A)を押す |
開いた直後はノーマルモードなので、いきなり文字を打っても入力されず、思わぬ動きをします。「何かおかしい」と思ったら、まず Esc を押して、ノーマルモードに戻るのがコツです。
vim では、挿入モードのとき画面の下に -- INSERT -- と出ることがあります。でも、今回の Debian 13 の vi(vim-tiny)では、挿入モードに入っても、いちばん下は "memo.txt" 2 lines, 65 bytes のままで、何も変わりませんでした。
また、vim-tiny では、挿入モードの間に矢印キーで動こうとすると、うまく動きません。今回の確認でも、i のあとに矢印キーで動いてから文字を打ち、:wq で閉じると、ファイルは何も変わっていませんでした。動くのは、挿入モードに入る前(ノーマルモードのうち)に済ませましょう。
書いて、保存して終了する::wq
- ノーマルモードのまま
G(大文字のジー。Shiftを押しながらg)を押して、最後の行に移動する -
o(小文字のオー)を押す。最後の行の下に新しい行ができて、挿入モードになる -
3行目:vimで書きましたと打つ -
Escを押して、ノーマルモードに戻る -
:wqと打って Enter(write=保存、quit=終了)
今回の Debian 13 でも、この G → o → 入力 → Esc → :wq の手順で、最後の行の下に1行追加されることを確かめました(2行 → 3行)。o のかわりに、A(大文字のエー。行の最後から書き始める)を押してから Enter で改行しても、同じ結果になります。
- 1
cat memo.txt(例)
- 1
- 2
- 3
1行目:エディタの練習
2行目:nanoで書きました
3行目:vimで書きました保存せずに終了する::q!
「何を書いたかわからなくなった」「うっかり書き換えてしまった」ときは、保存せずに出るのがいちばん安全です。
-
Escを押して、ノーマルモードに戻る(何回押しても大丈夫です) -
:q!と打って Enter(!は「変更を捨ててでも」という意味)
今回の確認では、i を押して x を1文字打ってから、Esc → :q! → Enter で閉じました。そのあと cat memo.txt で見ると、x は入っておらず、3行のままでした。
(例)
- 1
- 2
- 3
- 4
kaito@demo:~/linux-practice/edit-test$ cat memo.txt
1行目:エディタの練習
2行目:nanoで書きました
3行目:vimで書きましたEsc を何回か押してから、:q! → Enter。これだけ覚えておけば、どんなときでも、ファイルを書き換えずに vim から出られます。
🤖 詰まったらAIに聞こう:エディタから出られない・保存できない
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
Linuxの初心者です。ターミナルでエディタを使っていて、困っています。
今の画面の状態から、ファイルを壊さずに抜け出す方法を、押すキーの順番で教えてください。
【使っている環境】WSLのUbuntu など
【開いたときのコマンド】例:nano memo.txt/vim memo.txt
【画面のいちばん下に出ている文字】ここに書き写す
【押したキー(覚えている範囲で)】ここに書く
【やりたいこと】例:書いた内容を保存して閉じたい/保存せずに閉じたいふだん使うエディタ(既定のエディタ)を選ぶ
Linux では、いくつかのコマンドが自動でエディタを開きます。たとえば、この連載の Lv3 で扱う「決まった時刻にスクリプトを動かす」設定(crontab -e)や、Git(=ファイルの変更の履歴を記録しておく道具)でコメントを書くときなどです。そのときにどのエディタが開くかは、「既定のエディタ」の設定で決まります。
Ubuntu や Debian では、次のコマンドで、ふだん使うエディタを選べることがあります。
- 1
select-editor(例)
- 1
- 2
- 3
- 4
- 5
Select an editor. To change later, run select-editor again.
1. /bin/nano <---- easiest
2. /usr/bin/vim.tiny
Choose 1-2 [1]: 1番号つきの一覧が出たら、nano の番号を入力して Enter を押します。今回は 1 が nano(<---- easiest=いちばんかんたん)、2 が vim-tiny でした。上の例では 1 を選んでいます。並び順や番号は環境によって変わるので、nano と書かれた番号を選んでください。迷ったら nano がおすすめです。
select-editor で選んでいなくても、crontab -e をはじめて実行したときに、同じような一覧が出て「どのエディタを使う?」と聞かれることがあります。そのときも nano を選べばOKです。くわしくは、この連載の cron(=決まった日時に、コマンドをくり返し自動で実行してくれるしくみ)の記事で扱います。
よくあるつまずき
保存しようとしたら「Permission denied」
自分のホームディレクトリの外にある設定ファイル(/etc の中など)は、ふつうのユーザーでは書き換えられないことがあります。
たとえば、コンピューターの名前(ホスト名)が書かれた /etc/hostname を nano で開いてみます(書き換えはしません)。
- 1
nano /etc/hostname開いた時点で、画面の下に次のように表示されます。
(例)
- 1
[ File '/etc/hostname' is unwritable ]「このファイルには書き込めません」という意味です。それでも Ctrl + O → Enter で保存しようとすると、次のエラーが出て保存できません。
(例)
- 1
[ Error writing /etc/hostname: Permission denied ]そんなときは、保存せずに閉じましょう(nano なら Ctrl + X → N、vim なら :q!)。何も書き換えていなければ、nano は Ctrl + X だけで閉じられます。システムの設定ファイルの書き換え方は、権限(パーミッション)と sudo を学ぶ Lv2 の記事で扱います。
うっかり Ctrl + Z を押してしまった
Ctrl + Z は、多くのコマンドでは一時停止して裏に回す操作です。ただ、今回の Debian 13 の nano 8.4 では、Ctrl + Z を押しても止まらず、画面の下に次のように表示されるだけでした。
(例)
- 1
[ To suspend, type ^T^Z ]「一時停止したいなら、Ctrl + T のあとに Ctrl + Z を押してください」という意味です。nano は開いたままなので、そのまま編集を続けられます。この状態で fg と打つと、fg という文字がファイルに入力されてしまうので気をつけましょう(nano のバージョンや設定によっては、Ctrl + Z だけで一時停止することもあります)。
Ctrl + T → Ctrl + Z の順に押すと、nano が一時停止して、ターミナルに次のように表示されます。
(例)
- 1
- 2
- 3
Use "fg" to return to nano.
[1]+ Stopped nano memo.txtターミナルに戻ったように見えますが、nano は閉じていません(Stopped=止まっている状態です)。
fg と打って Enter を押すと、エディタに戻れます。
(例)
- 1
- 2
kaito@demo:~/linux-practice/edit-test$ fg
nano memo.txt戻ってから、いつもどおり保存して終了しましょう。
エディタで開いているファイルが設定ファイルの場合、パスワード、APIキー、トークンが書かれていることがあります。APIキーやトークンは、Web のサービスを使うときに本人の代わりになる、合言葉のような文字列です。AI に中身を貼って相談するときは、必ず見直して「***」に置き換えてから貼ってください。
よくある質問
Q. git commit をしたら、知らない画面が開きました。
それはエディタです。Git は、コミットのメッセージを書くためにエディタを開くことがあります。vim の画面なら、この記事の方法でメッセージを書いて :wq、やめたいなら :q! で出られます。nano の画面なら、Ctrl + O → Enter → Ctrl + X です。
Q. 保存できたかどうかを確かめるには?
エディタを閉じてから、cat ファイル名 で中身を表示してみましょう。書いた行が出ていれば、保存できています。
まとめ
- ふだんの編集は nano。
Ctrl + O→ Enter で保存、Ctrl + Xで終了 - vim は開いた直後は「ノーマルモード」。
iで書ける、Escで戻る(Debian 13 では、最初はvi=vim-tiny で開く) - vim の保存して終了は
:wq、保存せずに終了は:q! - 困ったら、
Escを押してから:q!。ファイルを壊さずに出られる - 自動で開くエディタは
select-editorなどで nano にしておくと安心
これで Lv1「超基本」はおしまいです。移動・作成・コピー・削除・中身の確認・調べ方・編集まで、ひと通り一人でできるようになりました。次の Lv2 では、Linux のフォルダ構成や権限など、一歩進んだ基本を見ていきます。
次に読む記事
関連する記事
- Git入門|init・add・commit を1回やってみる:コミットのコメントを書くときに開くエディタを、実際に使ってみたい方に
- Pythonで毎朝のCSV集計を自動化する(pandas+定期実行):エディタで書いたスクリプトを、定期実行まで持っていきたい方に
- Python入門|環境構築と最初の1本を動かす:ターミナルで小さなスクリプトを書いて動かしてみたい方に