# Neovim のチュートリアルへようこそ

# チャプター 1

Neovim は、このチュートリアルで説明するには多すぎる程のコマンドを備えた非常に強
力なエディターです。このチュートリアルは、あなたが Neovim を万能エディターとして
使いこなせるようになるのに十分なコマンドについて説明をするようになっています。

このチュートリアルが、**実践**を通じて学ぶ仕組みになっていることを、心しておかなけれ
ばなりません。正しく学習するには実際に手を動かしてみなければならないのです。
テキストをただ読むだけでは、何が重要だったか忘れてしまうでしょう!

それでは、CapsLock キーが押されていないことを確認した後、画面にレッスン 0 が全部
表示されるところまで、`j`{normal} キーを押してカーソルを移動しましょう。

# レッスン 0

NOTE: 以下の練習用コマンドにはこの文章を変更するものもありますが、それらの変更は
保存されません。失敗を恐れる必要はありません、 [<Esc>](<Esc>) キーを押した後、 [u](u) キーを押
すことで最後の操作を元に戻せる事を覚えておいてください。

このチュートリアルはインタラクティブな設計になっており、あなたが知っておくべきこ
とがいくつかあります。
- [このようなリンク](holy-grail    )の上で [<Enter>](<Enter>) キーを押すことで、リンクされたヘルプを開くこと
  ができます。
- または、ドキュメントで検索したい単語の上で [K](K) キー(大文字)を押してみましょう。
  (注: 日本語の単語には対応していません。)
- ヘルプウィンドウは `:q`{vim} `<Enter>`{normal} で閉じることができます。

画面の左端に ✗ が表示されている場合、その行にあるテキストを編集しなければなりま
せん。正しいテキストに書き換えることで、左端の ✗ は ✓ に変わります。
Neovim がどんなにステキか、おわかりいただけるでしょうか?

また、次のようにコマンドを実行するよう求められることや、(後で詳しく説明します。)

    `:help`{vim} `<Enter>`{normal}

キーシークエンスを押すこともあります。
~~~ normal
    <Esc>0f<Space>d3wP$P
~~~
< と > の間に囲まれたテキスト(例えば `<Enter>`{normal})は、そのテキストをタイプするのでは
なく、そのキーを押すことを表しています。

では、次のレッスンに向かいましょう。( `j`{normal} キーでスクロールダウンします。)

# レッスン 1.1: カーソルの移動

** カーソルを移動するには、示される様に `h`, `j`, `k`, `l` を押します。 **

          ↑
          k         ヒント:  h キーは左方向に移動します。
     ← h    l →              l キーは右方向に移動します。
         j                   j キーは下矢印キーのようなキーです。
         ↓

 1. 移動に慣れるまで、スクリーンでカーソル移動させましょう。

 2. 下へのキー(j)を押しつづけると、連続して移動できます。
    これで次のレッスンに移動する方法がわかりましたね。

 3. 下へのキーを使って、レッスン1.2 に移動しましょう。

NOTE: 何を入力しているか判らなくなったら、`<Esc>`{normal} を押してノーマルモードにします。
      それから入力しようとしていたコマンドを再入力しましょう。

NOTE: カーソルキーでも移動できます。しかし hjkl に一度慣れてしまえば、はるかに速
      く移動することができるでしょう。

# レッスン 1.2: NEOVIM の起動と終了

!! NOTE: 以下のあらゆるステップを行う前に、このレッスンをすべて読みましょう!!

 1. `<Esc>`{normal} キーを押しましょう。(確実にノーマルモードにするため)

 2. 次のようにタイプします:

    `:q!`{vim} `<Enter>`{normal}

    これにより編集した内容を保存せずにエディタが終了します。

 3. Neovim を開いて、このチュートリアルを始める為のコマンドを実行し、ここに戻っ
    てきます。そのコマンドは:

    `:Tutor`{vim} `<Enter>`{normal}

 4. これまでのステップを覚え自信がついたならば、ステップ 1 から 3 までを実際に試
    して、エディタを1度終了してから再び起動しましょう。

NOTE: [:q!](:q) `<Enter>`{normal} は全ての変更を破棄します。
      後に変更をファイルに保存する方法についても勉強していきましょう。

 5. レッスン 1.3 までカーソルを移動させましょう。

# レッスン 1.3: テキスト編集: 削除

** カーソルの下の文字を削除するには `x`{normal} を押します。 **

 1. 以下の ✗ と示された行にカーソルを移動しましょう。

 2. 間違いを修正するために、削除する最初の文字までカーソルを移動します。

 3. 不必要な文字を [x キー](x) を押して削除しましょう。

 4. 文が正しくなるまで ステップ 2 から 4 を繰り返しましょう。

その ううさぎ は つつきき を こええてて とびはねたた

 5. 行が正しくなったら、レッスン 1.4 へ進みましょう。

NOTE: 全てのレッスンを通じて、頭だけで覚えようとしないでください。
      実際に手を動かすことで、あなたの Neovim に対する理解度は広がっていきます。
      復習のためにも、たまにこのチュートリアルをやり直してみてください。

# レッスン 1.4: テキスト編集: 挿入

** テキストを挿入(Insert)するには `i`{normal} を押します。 **

 1. 以下の ✗ と示された最初の行にカーソルを移動しましょう。

 2. 1行目を2行目と同じ様にするために、テキストを挿入しなければならない位置の次の
    文字にカーソルを移動します。

 3. `i`{normal} キーを押してから、追加が必要な文字をタイプしましょう。

 4. 間違いを修正したら `<Esc>`{normal} を押してノーマルモードに戻り、正しい文になる様にス
    テップ 2 から 4 を繰り返しましょう。

この には 足り テキスト が 。
この 行 には 幾つか 足りない テキスト が ある。

 5. 挿入の方法がわかったらレッスン 1.5 へ進みましょう。

# レッスン 1.5: テキスト編集: 追加

** テキストを追加(Append)するには `A`{normal} を押しましょう。 **

 1. 以下の ✗ と示された最初の行にカーソルを移動しましょう。
    カーソルがその行のどの文字上にあってもかまいません。

 2. [A](A) キー(大文字)を押してから、追加が必要な文字をタイプしましょう。

 3. テキストを追加し終えたら、 `<Esc>`{normal} を押してノーマルモードに戻りましょう。

 4. 2行目の ✗ と示された場所へ移動し、ステップ 2 から 3 を繰り返して文章を修正し
    ましょう。

この 行 には 間違った テキスト が あり
この 行 には 間違った テキスト が あります。
ここ にも 間違った テキス
ここ にも 間違った テキスト が あります。

 5. テキストの追加が軽快になってきたらレッスン 1.6 へ進みましょう。

# レッスン 1.6: ファイルの編集

** ファイルを保存して終了するには `:wq`{vim} とタイプします。 **

!! NOTE: 以下のあらゆるステップを行う前に、このレッスンをすべて読みましょう!!

 1. レッスン 1.2 でやったように `:q!`{vim} を入力して、このチュートリアルを終了します。
    もしくは、別のターミナルにアクセスできる場合、そこで以下の内容を行います。

 2. シェルプロンプトでこのコマンドをタイプします:
~~~ sh
    $ nvim tutor
~~~
    'nvim' が Nvim エディタを起動するコマンド、'tutor' は編集したいファイルの名
    前です。編集可能なファイルを使いましょう。

 3. 前のレッスンで学んだように、テキストを挿入したり、削除します。

 4. 次のコマンドで変更をファイルに保存し、Neovim を終了します:
~~~ cmd
    :wq
~~~
    コマンドを実行するには `<Enter>`{normal} を押さなければなりません。

 5. ステップ 1 でこのチュートリアルを終了した場合は再度起動した後、以下の要約へ
    進みましょう。

 6. 以上のステップを読んで理解した上でこれを実行しましょう。

# レッスン 1 要約

 1. カーソルは矢印キーもしくは hjkl キーで移動します。
     h (左)       j (下)       k (上)       l (右)

 2. シェルプロンプトから Neovim を起動するにはこのようにタイプします:
~~~ sh
    $ nvim FILENAME
~~~
 3. Neovim を終了するには: `<Esc>`{normal} `:q!`{vim} `<Enter>`{normal} とタイプします(変更を破棄)。
                 もしくは: `<Esc>`{normal} `:wq`{vim} `<Enter>`{normal} とタイプします(変更を保存)。

 4. カーソルの下の文字を削除するには、ノーマルモードで `x`{normal} とタイプします。

 5. カーソルの位置に文字を挿入するには、ノーマルモードで i とタイプします。
    `i`{normal} テキストのタイプ `<Esc>`{normal}       カーソル位置に追加
    `A`{normal} テキストの追加 `<Esc>`{normal}         行末に追加

NOTE: `<Esc>`{normal} キーを押すとノーマルモードに移行します。その際間違ったり、入力途中の
      コマンドを取り消すことができます。

さて、続けてレッスン 2 を始めましょう。

# レッスン 2.1: 削除コマンド

** 単語の末尾までを削除するには `dw`{normal} とタイプしましょう。 **

 1. 確実にノーマルモードにするため `<Esc>`{normal} を押しましょう。

 2. 以下の ✗ と示された行にカーソルを移動しましょう。

 3. 消したい単語の先頭にカーソルを移動しましょう。

 4. 単語を削除するために [d](d)[w](w) とタイプしましょう。

この 文 紙 には いくつか たのしい 必要のない 単語 が 含まれて います。

 5. ステップ 3 と 4 を文が正しくなるまで繰り返し、レッスン 2.2 へ進みましょう。

# レッスン 2.2: その他の削除コマンド

** 行の末尾までを削除するには `d$`{normal} とタイプしましょう。 **

 1. 確実にノーマルモードにするため `<Esc>`{normal} を押しましょう。

 2. 以下の ✗ と示された行にカーソルを移動しましょう。

 3. 正しい文の末尾へカーソルを移動しましょう(最初の 。 の後です)。
 
 4. 行末まで削除するために `d$`{normal} とタイプしましょう。

誰かがこの行の最後を2度タイプしました。 2度タイプしました。

 5. どういうことか理解するために、レッスン 2.3 へ進みましょう。

# レッスン 2.3: オペレータとモーション

テキストに変更を加える多くのコマンドは[オペレータ](operator)と[モーション](navigation)からなります。
削除(Delete)コマンド [d](d) のオペレータは次の様になっています:

    d   モーション

  それぞれ:
    d          - 削除コマンド。
    モーション - 何に対して働きかけるか(以下に挙げます)。

  モーション一覧の一部:
    [w](w) - 次の単語の先頭まで。(カーソル位置の単語の先頭を除く)
    [e](e) - 次の単語の末尾まで。(カーソル位置の単語の末尾を含む)
    [$]($) - 行末まで。(カーソル位置の単語の末尾を含む)

 つまり `de`{normal} とタイプすると、カーソル位置から単語の終わりまでを削除します。

NOTE: ノーマルモードにてオペレータなしにモーションを押すことで、先述した位置にカ
      ーソルが移動します。

# レッスン 2.4: モーションにカウントを使用する

** 何回も繰り返し行いたいモーションの前にその回数をタイプします。 **

 1. 以下の ✓ と示された行の先頭にカーソルを移動します。

 2. `2w`{normal} をタイプして単語2つ分先に移動します。

 3. `3e`{normal} をタイプして3つ目の単語の終端に移動します。

 4. `0`{normal} ([ゼロ](0))をタイプして行頭に移動します。

 5. ステップ 2 と 3 を違う数値を使って繰り返します。

This is just a line with words you can move around in.

 6. レッスン 2.5 に進みましょう。

# レッスン 2.5: より多く削除するためにカウントを使用する

** オペレータとカウントをタイプすると、その操作が複数回繰り返されます。 **

既述の削除のオペレータとモーションの組み合わせにカウントを追加することで、より多
くの削除が行えます:
    d   数値   モーション

 1. ✗ と示された行の最初の大文字の単語にカーソルを移動しましょう。

 2. 大文字の単語2つを `d2w`{normal} とタイプして削除します。

 3. 異なるカウントを使ってステップ 1 と 2 を繰り返し、残りの連続した大文字の単語
    を削除します。

このABC DE行のFGHI JK LMN OP単語はQ RS TUV綺麗になった。

# レッスン 2.6: 行の操作

** 行全体を削除するには `dd`{normal} とタイプします。 **

行全体を削除する頻度が多いので、Vi のデザイナーは行の削除を d の2回タイプという
簡単なものに決めました。

 1. 以下の詩の2行目にカーソルを移動します。
 
 2. [dd](dd) とタイプして行を削除します。
 
 3. さらに4行目に移動します。
 
 4. `2dd`{normal} とタイプして2行を削除します。

1)  薔薇は赤く
2)  泥は楽しい
3)  菫は青く
4)  私は車をもっている
5)  時計が時刻を告げる
6)  砂糖は甘く
7)  そして貴方も

# Lesson 2.7: やり直しコマンド

** 最後のコマンドを取り消す(Undo)には `u`{normal} を押します。`U`{normal} は行全体の取り消しです。**

 1. 以下の ✗ と示された行にある、最初の間違いにカーソルを移動しましょう。

 2. `x`{normal} をタイプして最初のいらない文字を削除しましょう。
 
 3. では、`u`{normal} をタイプして最後に実行したコマンドを取り消しましょう。
 
 4. 今度は、`x`{normal} を使用して行内の誤りを全て修正しましょう。
 
 5. 大文字の `U`{normal} をタイプして、行を元の状態に戻しましょう。
 
 6. `u`{normal} をタイプして直前の `U`{normal} コマンドを取り消しましょう。
 
 7. ではコマンドを再実行するのに `<C-r>`{normal} (Ctrl + R)を数回タイプしてみましょう(取り
    消しの取り消し)。

このの行のの間違いを修正々し、後でそれらの修正をを取り消しまますす。

 8. これはとても便利なコマンドです。さぁレッスン 2 要約へ進みましょう。

# レッスン 2 要約

 1. カーソル位置から次の単語までを削除:     `dw`{normal}

 2. カーソル位置から行の末尾までを削除:     `d$`{normal}

 3. 行全体を削除:                           `dd`{normal}

 4. モーションを繰り返すには数値を付与:     `2w`{normal}

 5. 変更に用いるコマンドの形式は:

        オペレータ   [数値]   モーション

    それぞれ:

        オペレータ  -  オペレータ - 削除 [d](d) の類で何をするか
        [数値]      -  そのコマンドを何回繰り返すか
        モーション  -  テキストの何に対して働きかけるか、例えば:
                        [w](w) (単語),
                        [$]($) (行末), など。

 6. 行の先頭に移動するにはゼロを使用します: [0](0)

 7. 前回の動作を取り消し:     `u`{normal}  (小文字 u)
    行全体の変更を取り消し:   `U`{normal}  (大文字 U)
    取り消しの取り消し:       `<C-r>`{normal} (Ctrl + R)

# レッスン 3.1: 貼り付けコマンド

** 最後に削除された行をカーソルの後に貼り付ける(Put)には `p`{normal} をタイプします。 **

 1. `--->` と示された以下の最初の行にカーソルを移動しましょう。

 2. `dd`{normal} とタイプして行を削除し、Neovim のレジスタに格納しましょう。

 3. 削除した行が本来あるべき位置の上の行である c) 行にカーソルを移動しましょう。

 4. `p`{normal} をタイプして格納した行をカーソルの下に戻します。

 5. 順番が正しくなる様にステップ 2 から 4 を繰り返しましょう。

---> d) 貴方も学ぶことができるか?
---> b) 菫は青く
---> c) 知恵とは学ぶもの
---> a) 薔薇は赤く

NOTE: `P`{normal} (大文字 P)とタイプすることで、カーソルの前に貼り付ける事もできます。

# レッスン 3.2: 置き換えコマンド

** カーソルの下の文字を x に置き換える(Replace)には `rx`{normal} をタイプします。 **

 1. 以下の ✗ と示された最初の行にカーソルを移動しましょう。

 2. 最初の間違いにカーソルを移動しましょう。

 3. `r`{normal} とタイプし、間違っている文字を置き換える、正しい文字をタイプしましょう。

 4. 最初の行が正しくなるまでステップ 2 から 3 を繰り返しましょう。

この合を人力した時ね、その人は幾つか問違ったキーを押しもした!
この行を入力した時に、その人は幾つか間違ったキーを押しました!

 5. さぁ、レッスン 3.3 へ進みましょう。

NOTE: 実際に試しましょう。決して覚えるだけにはしないこと。

# レッスン 3.3: 変更オペレータ

** 単語の末尾までを変更(Change)するには `ce`{normal} とタイプします。 **

 1. 以下の ✗ と示された最初の行にカーソルを移動しましょう。

 2. "lubw" の "u" の位置にカーソルを移動しましょう。

 3. `ce`{normal} とタイプし、正しい単語をタイプしましょう(この場合 "ine" とタイプ)。

 4. `<Esc>`{normal} をタイプしてから次の間違い(変更すべき文字の先頭)に移動します。

 5. 最初の行が次の行の様になるまでステップ 3 と 4 を繰り返します。

This lubw has a few wptfd that mrrf changing usf the change operator.
This line has a few words that need changing using the change operator.

[c](c)e は単語を削除した後、挿入モードに入ることに注意しましょう。

# レッスン 3.4: `c`{normal} を使用したその他の変更 

** 変更オペレータは、削除と同じ様にモーションを使用します。 **

 1. 変更オペレータは、削除と同じような動作をします。その形式は

        c    [数値]   モーション

 2. モーションも同じで、`w`{normal} (単語) や `$`{normal} (行末まで)といったものです。

 3. 以下の ✗ と示された最初の行にカーソルを移動しましょう。

 4. 最初の間違いへカーソルを移動しましょう。

 5. `c$`{normal} とタイプして行の残りを２行目の様にし、`<Esc>`{normal} を押しましょう。

The end of this line needs some help to make it like the second.
The end of this line needs to be corrected using the c$ command.

NOTE: タイプ中の間違いはバックスペースキーを使って直すこともできます。

# レッスン 3 要約

 1. 既に削除されたテキストを再配置するには、[p](p) をタイプします。
    これは削除されたテキストをカーソルの後に挿入します(行単位で削除されたのなら
    ば、カーソルのある次の行に挿入されます)。

 2. カーソルの下の文字を置き換えるには、[r](r) をタイプした後、それを置き換える
    文字をタイプします。

 3. [変更オペレータ](c)ではカーソル位置から特定のモーションで指定される終端までを変更
    することが可能です。例えば `ce`{normal} ならばカーソル位置から単語の終わりまで、`c$`{normal} な
    らば行の終わりまでを変更します。

 4. 変更コマンドの形式は

        c    [数値]   モーション

さぁ、次のレッスンへ進みましょう。

# レッスン 4.1: 位置とファイルの情報

** ファイル内での位置とファイルの状態を表示するには `<C-g>`{normal} をタイプします。
ファイル内の{count}行に移動するには `{count}G`{normal} をタイプします。 **

NOTE: ステップを実行する前に、このレッスンすべてに目を通しましょう!!

 1. `<Ctrl>`{normal} を押したまま `g`{normal} を押しましょう。この操作を `<C-g>`{normal} と呼んでいます。
    ページの一番下にファイル名と行番号が表示されるはずです。 ステップ 3 のために
    行番号を覚えておきましょう。

NOTE: 画面の右下隅にカーソルの座標が既に表示されているかもしれません。
      これは ['ruler']('ruler') オプションを設定することで表示されます。

 2. ファイルの最下行に移動するために [G](G) をタイプしましょう。
    ファイルの先頭に移動するには [gg](gg) とタイプしましょう。

 3. 先ほどの行の番号をタイプし `G`{normal} をタイプしましょう。
    最初に `<C-g>`{normal} を押した行に戻って来るはずです。

 4. 自信が持てたらステップ 1 から 3 を実行しましょう。

# レッスン 4.2: 検索コマンド

** 語句を検索するには `/`{normal} と、検索する語句をタイプします。 **

 1. ノーマルモードで `/`{normal} という文字をタイプします。画面一番下に `:`{normal} コマンドと同じ様
    にカーソルが現れることに気づくでしょう。

 2. では、'errroor' `<Enter>`{normal} とタイプしましょう。これが検索したい単語です。

 3. 同じ語句をもう一度検索するときは 単に [n](n) をタイプします。
    逆方向に同じ語句を検索するときは [N](N) をタイプします。

 4. 逆方向に語句を検索する場合は、`/`{normal} の代わりに [?](?) コマンドを使用します。

 5. 元の場所に戻るには `<C-o>`{normal} (`<Ctrl>`{normal} を押し続けながら `o`{normal} をタイプ)を入力します。
    さらに戻るにはこれを繰り返します。`<C-i>`{normal} は前方向です。

"errroor" は error とスペルが違います;  errroor はいわゆる error です。

NOTE: 検索がファイルの終わりに達すると、オプション ['wrapscan']('wrapscan') が設定されている場
      合は、ファイルの先頭から検索を続行します。

# レッスン 4.3: 対応する括弧を検索

** 対応する ), ] や } を検索するには `%`{normal} をタイプします。 **

 1. 下の ✓ で示された行で (, [ か { のどれかにカーソルを移動しましょう。

 2. そこで [%](%) とタイプしましょう。

 3. カーソルは対応する括弧に移動するはずです。

 4. もう一度 `%`{normal} とタイプすると元の括弧に移動します。

 5. 他の (, ), [, ], {, } でカーソルを移動し、`%`{normal} が何をしているか確認しましょう。

This ( is a test line with ('s, ['s, ] and {'s } in it. ))

NOTE: この機能は括弧が一致していないプログラムのデバッグにとても役立ちます!

# レッスン 4.4: 代替コマンド

** "old" を "new" に置換(Substitute)するには `:s/old/new/g` とタイプします。 **

 1. 以下の ✗ と示された行にカーソルを移動しましょう。

 2. 次のようにタイプします
~~~ cmd
        :s/thee/the/
~~~
    NOTE: [:s](:s) コマンドはその行で最初に見つかったものにだけ行われることに気をつけ
          ましょう。

 3. さらに、次のようにタイプします
~~~ cmd
        :s/thee/the/g
~~~
    追加した g [フラグ](:s_flags)は行全体を置換することを意味します。
    この変更はその行で見つかった全ての箇所に対して行われます。

Usually thee best time to see thee flowers is in thee spring.

 4. 複数行から見つかる文字の全ての箇所を変更するには:
~~~ cmd
        :#,#s/old/new/g
~~~
    #,# には置き換える範囲の開始と終了の行番号を指定する。
        (例えば、`1,3`は1行目から3行目を意味します。)

    ファイル全体で見つかるものに対して変更するには:
~~~ cmd
        :%s/old/new/g
~~~

    ファイル全体で見つかるものに対して、1つ1つ確認をとりながら変更するには:
~~~ cmd
        :%s/old/new/gc
~~~

NOTE: 置き換えたいテキストをビジュアルモードで選択することもできます。
      これについては少し後のレッスンで説明します。

# レッスン 4 要約

 1. `<C-g>`{normal}  はファイルでの位置とファイルの詳細を表示します。
    `G`{normal}      はファイルの最下行に移動します。
    数値 `G`{normal} はその行に移動します。
    `gg`{normal}     は先頭行に移動します。

 2. `/`{normal} の後に語句をタイプすると前方に語句を検索します。
    `?`{normal} の後に語句をタイプすると後方に語句を検索します。
    検索の後の `n`{normal} は同じ方向の次の検索を、`N`{normal} は逆方向の検索をします。
    `<C-o>`{normal} は場所を前に移し、`<C-i>`{normal} は場所を次に移動します。

 3. (, ), [, ], {, もしくは } の上にカーソルがある状態で `%`{normal} をタイプすると対にな
    る文字へ移動します。

 4. 現在行の最初の old を new に置換する。
~~~ cmd
        :s/old/new
~~~
    現在行の全ての old を new に置換する。
~~~ cmd
        :s/old/new/g
~~~
    2つの # 行の間で語句を置換する。
~~~ cmd
        :#,#s/old/new/g
~~~
    ファイルの中の全ての語句を置換する。
~~~ cmd
        :%s/old/new/g
~~~
    'c' を加えると置換の度に確認を求める。
~~~ cmd
        :%s/old/new/gc
~~~

# レッスン 5.1: 外部コマンドを実行する方法

** `:!`{vim} の後に実行する外部コマンドをタイプします。 **

  1. 画面の最下部にカーソルが移動するよう、慣れ親しんだ `:`{normal} をタイプしましょう。
     これでコマンドライン命令がタイプできる様になります。

  2. ここで [!](!cmd) という文字(感嘆符)をタイプしましょう。
     これで外部シェルコマンドが実行できる様になります。

  3. 例として "!" に続けて "ls" とタイプし `<Enter>`{normal} を押しましょう。
     シェルプロンプトのようにディレクトリの一覧が表示されるはずです。

NOTE: この方法によってあらゆるコマンドが実行することができます。
      もちろん引数も与えられます。

NOTE: 全ての `:`{vim} コマンドは `<Enter>`{normal} を押して実行しなければなりません。

# レッスン 5.2: その他のファイルへ書き込み

** ファイルへ変更を保存するには `:w`{vim} ファイル名 とタイプします。 **

 1. ディレクトリの一覧を得るために `:!ls`{vim} とタイプしましょう。
    このあと `<Enter>`{normal} を押すのは既にご存知ですね。

 2. TEST のように、そのディレクトリに無いファイル名を一つ選びます。

 3. 次のようにタイプしましょう:
~~~ cmd
        :w TEST
~~~
    (TEST は、選んだファイル名です。)

 4. これによりファイル全体が TEST という名前で保存されます。
    もう一度 `:!ls`{vim} とタイプしてディレクトリを確認してみましょう。

NOTE: ここで Neovim を終了し、`nvim TEST` で起動すると、保存した時の
      チュートリアルの複製ができ上がるはずです。

 5. さらに、次のようにタイプしてファイルを消しましょう:
~~~ cmd
        :!rm TEST
~~~
# レッスン 5.3: 選択した書き込み

** ファイルの一部を保存するには `v`{normal} モーションと `:w ファイル名`{vim} をタイプします。 **

 1. この行にカーソルを移動します。

 2. [v](v) を押し、以下の第5項目にカーソルを移動します。
    テキストが強調表示されるのに注目して下さい。

 3. 文字 `:`{normal} を押すと、画面の最下部に
 
        `:'<,'>`{vim}

    が現れます。

 4. 次のようにタイプします。

        `w TEST`{vim}

        TEST は存在しないファイル名です。`<Enter>`{normal} を押す前に

        `:'<,'>w TEST`{vim}

    となっていることを確認して下さい。

 5. Vim は TEST というファイルに選択された行を書き込むでしょう。
    :`:!ls`{vim} でそれを確認します。
    それは削除しないでおいて下さい。次のレッスンで使用します。

NOTE: [v](v) を押すと、[ビジュアル(Visual)選択](visual-mode)が始まります。カーソルを動かすことで、
      選択範囲を大きくも小さくもできます。さらに、その選択範囲に対してオペレータ
      を適用できます。例えば `d`{normal} はテキストを削除します。

# レッスン 5.4: ファイルの取込と合併

** ファイルの中身を挿入するには `:r ファイル名`{vim} とタイプします。 **

 1. カーソルをこの行のすぐ上に合わせます。

NOTE: ステップ 2 の実行後、ここにレッスン 5.3 のテキストが現れます。
      下に下がってこのレッスンに移動しましょう。レッスンが終わったら `u`{normal} を押して
      変更を取り消してください。

 2. では TEST というファイルを 次のコマンドで読み込みます。

        `:r TEST`{vim}

    ここでいう TEST は使うファイルの名前のことです。
    読み込まれたファイルは、カーソル行の下にあります。

 3. 取り込んだファイルを確認してみましょう。カーソルを戻すと、レッスン5.3 のオリ
    ジナルとファイルによるものの2つがあることがわかります。

NOTE: 外部コマンドの出力を読み込むこともできます。例えば、

        `:r !ls`{vim}

      は `ls` コマンドの出力をカーソル以下に読み込みます。

# レッスン 5 要約

 1. [:!command](:!cmd) によって、外部コマンドを実行する。

     よく使う例:
     `:!ls `{vim}                   - ディレクトリ内の一覧を見る。
     `:!rm  ファイル名`{vim}        - ファイルを削除する。

 2. [:w](:w) ファイル名     ファイル名 によってファイル名というファイルがディスクに書
                      き込まれる。

 3. [v](v)  モーション で :w ファイル名   とすると、ビジュアル選択行がファイルに保存
                                     される。

 4. [:r](:r) ファイル名     によりファイル名というファイルがディスクより取り込まれ、
                      カーソル位置の下に挿入される。

 5. [:r !ls](:r!)            は ls コマンドの出力をカーソル位置以下に読み込む。

# レッスン 6.1: オープンコマンド

** `o`{normal} をタイプすると、カーソルの下の行が開き(Open)、挿入モードに入ります。 **

 1. 以下の ✓ と示された最初の行にカーソルを移動しましょう。

 2. `o`{normal} (小文字) をタイプして、カーソルの下の行を[開き](o)、挿入モードに入ります。

 3. いくつか文字をタイプしてから、挿入モードを終了する為に `<Esc>`{normal} を入力します。
    その後、追加した行を削除してください。

 `o`{normal} をタイプするとカーソルは開いた行へ移動し挿入モードに入ります。

 4. カーソルの上の行に挿入するには、小文字の `o`{normal} ではなく、[大文字の O](O) をタイプしま
    す。次の行で試してみましょう。試し終わったら追加した行を削除してください。

この行の上へ挿入するには、この行へカーソルを置いて `O`{normal} をタイプします。

# レッスン 6.2: 追加コマンド

** カーソルの次の位置からテキストを追加(Append)するには `a`{normal} とタイプします。 **

 1. カーソルを ✗ で示された最初の行へ移動しましょう。

 2. `e`{normal} を押して "li" の終端部までカーソルを移動します。

 3. カーソルの後ろにテキストを[追加](a)するために `a`{normal} (小文字) をタイプします。

 4. 下の行のように単語を完成させます。挿入モードを抜ける為に `<Esc>`{normal} を押します。

 5. `e`{normal} を使って次の不完全な単語へ移動し、ステップ 3 と 4 を繰り返します。

This li will allow you to pract appendi text to a line.
This line will allow you to practice appending text to a line.

NOTE: [a](a), [i](i) と [A](A) は同じ挿入モードへ移りますが、文字が挿入される位置は異なります。

# レッスン 6.3: その他の置換方法

** 1文字以上を置き換える(Replace)には大文字の `R`{normal} とタイプしましょう。 **

 1. 以下の ✗ と示された行にある、最初の "xxx" の先頭にカーソルを移動します。

 2. `R`{normal} ([大文字 R](R)) を押して、2行目の数値をタイプすることで、"xxx" が置換されます。

 3. 置換モードを抜けるには `<Esc>`{normal} を押します。行の残りが変更されていないままにな
    ることに注意してください。

 4. 残った "xxx" をステップを繰り返して置換しましょう。

Adding 123 to xxx gives you xxx.
Adding 123 to 456 gives you 579.

NOTE: 置換モードは挿入モードに似ていますが、全てのタイプされた文字は既存の文字を
      削除します。

# レッスン 6.4: テキストのコピーとペースト

** テキストのコピー(Yank)にはオペレータ `y`{normal} を、ペーストには `p`{normal} を使います。 **

 1. ✓ と示された行へ移動し、カーソルを "a)" の後に置いておきます。

 2. `v`{normal} でビジュアルモードを開始し、"first" の手前までカーソルを移動します。

 3. `y`{normal} をタイプして強調表示されたテキストを [yank](yank) (コピー)します。

 4. 次の行の行末までカーソルを移動します:  `j$`{normal}

 5. `p`{normal} を押してテキストを貼り付け([put](put))ます。
 
 6. `a`{normal} を押してから、 "second" とタイプします。その後、`<Esc>`{normal} を押して挿入モードを
    終了します。

 7. ビジュアルモードで "item." を選択、`y`{normal} で yank、次の行の行末まで `j$`{normal} で移動
    し、 `p`{normal} でテキストをそこに put します。

a) This is the first item.
b)

NOTE: `y`{normal} をオペレータとして使うこともできます。`yw`{normal} は単語を1つ yank します。

NOTE: `P`{normal} を使用するとカーソルの後ではなく前に put できます。

# レッスン 6.5: オプションの設定

** 検索や置換の際に大文字/小文字を無視するには、オプションを設定します。 **

Neovim にはあなたの必要に応じて設定できる、様々なオプションが用意されています。

 1. 次の様に入力して 'ignore' を検索しましょう:  `/ignore`
    `n`{normal} を押して何度か検索を繰り返します。

 2. 次の様に入力して 'ic' (Ignore Case の略) オプションを設定します:
~~~ cmd
        :set ic
~~~
 3. では `n`{normal} によってもう1度 'ignore' を検索します。
    "Ignore" や "IGNORE" も見つけられることに気づくでしょう。

 4. 'hlsearch' と 'incsearch' オプションを設定しましょう:
~~~ cmd
        :set hls is
~~~
 5. 検索コマンドを再入力して、何が起こるか見てみましょう: /ignore <Enter>

 6. 大文字小文字の区別を無効にするには次の様に入力します:
~~~ cmd
        :set noic
~~~
 7. オプションの値を反転するには、先頭に "inv" を追加します:
~~~ cmd
        :set invic
~~~
NOTE: 検索結果の強調表示をやめるには次の様に入力します:
~~~ cmd
        :nohlsearch
~~~
NOTE: 1つの検索コマンドだけ大文字小文字の区別をやめたいならば、語句内で [\c](/\c) を使
      用します: /ignore\c <Enter>

# レッスン 6 要約

 1. `o`{normal} をタイプするとカーソルの下の行を開けて、そこで挿入モードになる。
    `O`{normal} をタイプするとカーソルの上の行で挿入モードになる。

 2. カーソル上の文字の次からテキストを追加するには `a`{normal} とタイプする。
    行末にテキストを挿入するには `A`{normal} をタイプする。

 3. `e`{normal} コマンドは単語の終端にカーソルを移動する。

 4. `y`{normal} オペレータはテキストを yank (コピー)し、`p`{normal} はそれを put (ペースト)する。

 5. 大文字の `R`{normal} をタイプすると置換モードに入り、`<Esc>`{normal} を押すと抜ける。

 6. "[:set](:set) xxx" とタイプするとオプション "xxx" が設定される。

        'ic' 'ignorecase'       検索時に大文字小文字の区別しない
        'is' 'incsearch'        検索フレーズに部分マッチしている部分を表示する
        'hls' 'hlsearch'        マッチするすべてを強調表示する

    正称、省略形、どちらのオプション名でも使用できる。

 7. オプションを無効にするには "no" を付与する:
~~~ cmd
        :set noic
~~~
 8. 先頭に "inv" を付けてオプションを反転する:
~~~ cmd
        :set invic
~~~
# レッスン 7.1: ヘルプコマンド

** オンラインヘルプシステムを使用する **

Neovim には広範にわたるオンラインヘルプシステムがあります。

ヘルプを開始するには、次の内どれか1つを試してみましょう:

  - `<F1>`{normal} キーを押す(もしあるならば)。
  - `:help`{vim} とタイプする。

ヘルプウィンドウのテキストを読むと、ヘルプの動作が理解できます。
 `<C-w><C-w>`{normal} とタイプすると ヘルプウィンドウへジャンプします。
 `:q`{vim} とタイプすると ヘルプウィンドウを閉じられます。

":help" コマンドに引数を与えることにより、あらゆる題名のヘルプを見つけることがで
きます。これらを試してみましょう(`<Enter>`{normal} をタイプし忘れないように):
~~~ cmd
    :help w
    :help c_CTRL-D
    :help insert-index
    :help user-manual
~~~
# レッスン 7.2: 補完

** `<C-d>`{normal} と `<Tab>`{normal} でコマンドラインを補完する **

 1. 現在のディレクトリに在るものを表示します: `:!ls`{vim}

 2. コマンドの先頭をタイプします:  `:e`{vim}

 3. `<C-d>`{normal} を押すと Neovim は "e" から始まるコマンドの一覧を表示します。

 4. `<Tab>`{normal} を押すと、Neovim は可能な補完候補のメニューを表示します
    (または、ただの一つのマッチがあるときは、補完します。
     例: ":ed`<Tab>`{normal}" は ":edit" に補完されます)。

 5. 次のマッチに移動するには `<Tab>`{normal} または `<C-n>`{normal} を使用し、
    前のマッチに移動するには `<S-Tab>`{normal} または `<C-p>`{normal} を使用します。

 6. `edit`{vim} を選択すると、コマンドラインに `edit`{vim} が挿入されます。

 7. さらに空白と、既存のファイル名の始まりを加えます: `:edit FIL`{vim}

 8. `<Tab>`{normal}を押すと、Vim は `FIL` で始まるファイル名の候補リストを含む補完メニューを
    表示します。

NOTE: 補完は多くのコマンドで動作します。特に `:help`{vim} の際に役立ちます。

# レッスン 7.3: 設定ファイルの作成

Neovim はとても自由度の高いエディタです。あなたの思うがままにカスタマイズするこ
とができます。より多くの機能を使い始めるには設定ファイルを作成します。 Lua を使
いたい場合は "init.lua" を、Vimscript を使いたい場合は "init.vim" にします。
このレッスンでは "init.lua" を使います。

1. `"init.lua"` ファイルを編集します。

   `:exe 'edit' stdpath('config')..'/init.lua'`{vim}

2. Lua 用の設定例を "init.lua" にコピーします。

   `:read $VIMRUNTIME/example_init.lua`{vim}

3. ファイルを書き込みます(必要に応じて親ディレクトリも作成されます):

   `:w ++p`{vim}

4. 次に Neovim を起動した時、以下のコマンドでこの設定ファイルを開けます:

   `:e $MYVIMRC`{vim}

# レッスン 7 要約

 1. ヘルプウィンドウを開くには `:help`{vim} とするか `<F1>`{normal} を押す。

 2. '知りたい事' のヘルプを検索するには `:help '知りたい事'`{vim} とタイプする。

 3. 別のウィンドウへジャンプするには `<C-w><C-w>`{normal} とタイプする。

 4. ヘルプウィンドウを閉じるには `:q`{vim} とタイプする。

 5. コマンドラインモードで可能な補完を見るには `<C-d>`{normal} をタイプする。
    補完を使用するには `<Tab>`{normal} を押す。

 6. お好みの設定を保つには設定ファイルを作成する。作成した設定ファイルは
    `:e $MYVIMRC`{vim} でいつでも開き直せます。

# 次はなに?

`:help nvim-quickstart`{vim} を実行すると Nvim を拡張する為の更なる情報を確認できます。

# おわりに

これにて Neovim チュートリアルの チャプター 1 は終わりです。是非 [チャプター 2](@tutor:vim-02-beginner) に
挑戦してみてください。

このチュートリアルでは、エディタを簡単に、しかも充分に使うことができるようにと、
Neovim の持つ概念の要点のみを伝えようとしました。Neovim にはさらに多くのコマンド
があり、ここで全てを説明することはできません。ヘルプを沢山活用してください。オン
ライン上にも数多の教材や動画を見つけることができます。
ここにいくつか紹介します:

- *Learn Vim Progressively*:
  https://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/
- *Learning Vim in 2014*:
  https://benmccormick.org/learning-vim-in-2014/
- *Vimcasts*:
  http://vimcasts.org/
- *Vim Video-Tutorials by Derek Wyatt*:
  http://derekwyatt.org/vim/tutorials/
- *Learn Vimscript the Hard Way*:
  https://learnvimscriptthehardway.stevelosh.com/
- *7 Habits of Effective Text Editing*:
  https://www.moolenaar.net/habits.html
- *vim-galore*:
  https://github.com/mhinz/vim-galore
- *vim-jp Vim日本語ドキュメント*
  https://vim-jp.org/vimdoc-ja/

もしあなたが本が好きならば、*Practical Vim* by Drew Neil をお勧めします。
本書は翻訳版も出版されています。(邦題: *実践Vim 思考のスピードで編集しよう！*)
(続編である *Modern Vim* には Neovimについての内容も含まれています。)

このチュートリアルは Colorado State University の Charles Smith のアイデアを基に
Colorado School of Mines の Michael C. Pierce と Robert K. Ware の両名によって書
かれました。 E-mail: bware@mines.colorado.edu.

Modified for Vim by Bram Moolenaar.
Modified for vim-tutor-mode by Felipe Morales.
Modified for Neovim by Rory Nesbitt.

Vim Tutor 翻訳
  日本語訳  松本 泰弘    <mattn.jp@gmail.com>
            vim-jpチーム <https://github.com/vim-jp/lang-ja>
  監修      村岡 太郎    <koron.kaoriya@gmail.com>
Neovim Tutor 翻訳
  監修      ite-usagi    <https://github.com/ite-usagi>

// vim: nowrap
