neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

vim-02-beginner.tutor (7885B)


      1 # Neovim のチュートリアルへようこそ
      2 
      3 # チャプター 2
      4 
      5   この先 危険! : もしこれがあなたにとって初めて Neovim に触れる機会で、入門用の
      6   チャプターをまだ読んでいないのであれば、ぜひ、Neovim エディタに以下の文字列を
      7   入力してください。
      8 ~~~ cmd
      9         :Tutor vim-01-beginner
     10 ~~~
     11   または、[チャプター 1](@tutor:vim-01-beginner) をクリックしてください。
     12 
     13   このチャプターを完了するのに必要な時間は、練習にどれだけ時間をかけるかによりま
     14   すが、おおよそ 8~10 分です。
     15 
     16 
     17 # レッスン 2.1.1: 名前付きレジスタ
     18 
     19 ** Store two yanked words concurrently and then paste them **
     20 ** ヤンクした二つの単語を同時に保存し、それらをペーストします **
     21 
     22   1. 以下の ✓ と示された行にカーソルを移動します。
     23 
     24   2. 単語 'Edward' の上に移動した後、`"ayiw`{normal} とタイプします。
     25 
     26 **覚え方**: *into register(") named (a) (y)ank (i)nner (w)ord* 
     27          *( レジスタに  aという名の ヤンク  内側    単語 )*
     28 
     29   3. 単語 'cookie' に移動(`fk`{normal}, `3fc`{normal}, `$2b`{normal} や `/co`{normal} `<ENTER>`{normal})し、`"byiw`{normal} とタイプします。
     30 
     31   4. 単語 'Vince' の上に移動した後、`ciw<CTRL-r>a<ESC>`{normal} とタイプします。
     32 
     33 **覚え方**: *(c)hange (i)nner (w)ord with <contents of (r)egister> named (a)*
     34         *( 変更    内側    単語   で     <レジスタの内容>    aという名の )*
     35 
     36   5. 単語 'cake' の上に移動した後、`ciw<CTRL-r>b<ESC>`{normal} とタイプします。
     37 
     38 a) Edward will henceforth be in charge of the cookie rations
     39 b) In this capacity, Vince will have sole cake discretionary powers
     40 
     41 NOTE: 削除した文字列もレジスタに格納されます。例えば `"sdiw`{normal} はカーソル下の単語を
     42       削除し、レジスタ s に格納します。
     43 
     44 REFERENCE: [レジスタ](registers)
     45            [名前付きレジスタ](quotea)
     46            [モーション](text-objects)
     47            [CTRL-R](i_CTRL-R)
     48 
     49 
     50 # レッスン 2.1.2: EXPRESSION レジスタ
     51 
     52 ** 計算の結果をその場で挿入します **
     53 
     54   1. ✗ で示された行にカーソルを移動します。
     55 
     56   2. 行内の数字の上に移動します。
     57 
     58   3. 次のようにタイプします: `ciw<CTRL-r>=`{normal}60\*60\*24 `<ENTER>`{normal}
     59 
     60   4. 次の行の末尾で挿入モードに入り、以下をタイプして今日の日付を追加します:
     61      `<CTRL-r>=`{normal}`system('date')`{vim} `<ENTER>`{normal}
     62 
     63 NOTE: すべてのシステムコールは OS 依存です。例えば Windows では以下を使います:
     64       `system('date /t')`{vim}   または  `:r!date /t`{vim}
     65 
     66 一日って何秒だっけ、 84600 秒かな?
     67 本日の日付は: 
     68 
     69 NOTE: 日付を入力するには、`:pu=`{normal}`system('date')`{vim} や、よりキーストロークの少ない
     70       `:r!date`{vim} でも可能です。
     71 
     72 REFERENCE: [Expression レジスタ](quote=)
     73 
     74 
     75 # レッスン 2.1.3: 番号付きレジスタ
     76 
     77 ** `yy`{normal} と `dd`{normal} のレジスタに対する効果を確認する **
     78 
     79   1. ✓ と示された行にカーソルを移動します。
     80 
     81   2. 0番目の行をヤンクした後、`:reg`{vim} '<ENTER>'{normal} でレジスタを調べます。
     82 
     83   3. `"cdd`{normal} で 0番目の行を削除して、再度レジスタを確認します。
     84      (0番目の行はどこにあると思いますか?)
     85 
     86   4. 残りの行もそれぞれ削除しつつ、その都度 `:reg`{vim} 確認します。
     87 
     88 NOTE: 新たに削除された項目が追加される度に、古い項目がリストの下に移動しているこ
     89       とに気づきましたか?
     90 
     91   5. 次の順番でレジスタをペーストします: c, 7, 4, 8, 2。例: `"7p`{normal}
     92 
     93 0. ねがわくは
     94 9. おちゃめな
     95 8. ゔぃまーと
     96 7. いつまでも
     97 6. むげんの
     98 5. そんな
     99 4. こうふくな
    100 3. いかした
    101 2. ならんことを
    102 1. します
    103 
    104 NOTE: 行全体削除(`dd`{normal})は行全体ヤンクや一行以下の小さな削除に比べて、長期間番号付き
    105       レジスタに保存されます。
    106 
    107 REFERENCE: [番号付きレジスタ](quote0)
    108 
    109 
    110 # レッスン 2.1.4: マークの美
    111 
    112 ** Code monkey arithmetic avoidance **
    113 
    114 NOTE: 大きなコードの塊を動かすことはコーディングにおける面倒事の一つです。例えば
    115       `"a147d`{normal} や `:945,1091d a`{vim} 、さらには `i<CTRL-r>=`{normal}1091-945 `<ENTER>`{normal} のような、コ
    116       ード操作の為に行数の計算をするような事を避ける為のテクニックを紹介します。
    117 
    118   1. ✓ と示された行にカーソルを移動します。
    119 
    120   2. 関数の最初の行に移動して `ma`{normal} でマークします。
    121 
    122 NOTE: 行内におけるカーソル位置は重要ではありません!
    123 
    124   3. `$%`{normal} で行末からさらにコードブロックの末尾に移動します。
    125 
    126   4. `"ad'a`{normal} でコードブロックを削除しレジスタ a に格納します。
    127 
    128 **覚え方**: *into register(") named (a) put the (d)eletion from the cursor to
    129           the LINE containing mark(') (a)*
    130         *( レジスタに  a という名の  格納     削除を      カーソルから
    131               マーク a を含む行までの )*
    132 
    133   5. `"ap`{normal} でコードブロックを BBB と CCC の間にペーストします。
    134 
    135 NOTE: `ma$%"ad'a`{normal} という操作に慣れるまで何度も練習しましょう。
    136 
    137 ~~~ cmd
    138 AAA
    139 function itGotRealBigRealFast() {
    140   if ( somethingIsTrue ) {
    141     doIt()
    142   }
    143   // 関数の分類基準が変更されたため
    144   // この位置ではアルファベット順にそぐわなくなってしまいました
    145 
    146   // ここに数百行のコードがあるとイメージしてください
    147 
    148   // 愚直に最初と最後の行番号を使って動かしても構いません
    149 }
    150 BBB
    151 CCC
    152 ~~~
    153 
    154 NOTE: レジスタとマークは名前空間を共有しません。したがってレジスタ a と マーク a
    155       は完全に独立しています。レジスタとマクロの場合、これは該当しません。
    156 
    157 REFERENCE: [マーク](marks)
    158            [マークにおけるモーション](mark-motions)  (' と \` の違いについて)
    159 
    160 
    161 # レッスン 2.1 要約
    162 
    163   1. テキストを格納(ヤンク、削除)したり、取り出し(ペースト)できるレジスタが計26
    164      個(a-z)存在する。
    165   2. 単語全体をヤンクするには単語内の任意の位置で: `yiw`{normal}
    166   3. 単語全体を変更するには単語内の任意の位置で: `ciw`{normal}
    167   4. 挿入モードでレジスタから直接テキストを挿入するには: `<CTRL-r>a`{normal}
    168 
    169   5. 単純な算術計算の結果を挿入するには、挿入モードで次のタイプ:
    170      `<CTRL-r>=`{normal}60\*60 `<ENTER>`{normal}
    171   6. システムコールの結果を挿入するには、挿入モードで次をタイプ: 
    172      `<CTRL-r>=`{normal}`system('ls -1')`{vim}
    173 
    174   7. レジスタを確認するには: `:reg`{vim}
    175   8. `dd`{normal} は 1 - 9 で降順の番号レジスタに格納される。行全体削除は他の操作より長期
    176      間番号付きレジスタに保持される。
    177   9. 番号付きレジスタにおいて、ヤンクされた内容は短時間で破棄される。
    178 
    179  10. コマンドモードでマークを設定するには: `m[a-zA-Z0-9]`{normal}
    180  11. マークへ行単位で移動するには `'`{normal}
    181 
    182 
    183 # おわりに
    184 
    185   これにて Neovim チュートリアルの チャプター 2 は終わりです。
    186   これはまだ未完成です。
    187 
    188   このチャプターは Paul D. Parker によって書かれました。
    189 
    190   Modified for vim-tutor-mode by Restorer.
    191 
    192   日本語訳  ite-usagi    <https://github.com/ite-usagi>