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>