ログイン
編集不可のページディスカッション情報添付ファイル
"clear/slide/2011-04-09-vi"の差分

MMA
10と11のリビジョン間の差分
2011-04-09 03:03:15時点のリビジョン10
サイズ: 4015
編集者: clear
コメント:
2011-04-09 03:24:22時点のリビジョン11
サイズ: 5288
編集者: clear
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 11: 行 11:
= なにこれ =
 * VIsual editor
 * Unix系のOSなら大抵どこにでもあるテキストエディタ。ある程度使えるようになっておいて損はない
  * ある程度慣れると素早い編集ができるように
 * 「モード」の概念
  * カーソルの移動やコマンドの実行 / 入力
 * viを元に生まれ、より多彩な機能を持つvim(Vi IMproved)が有名
  * この講習でもvimを使います

= はじめに =
 * これからviの基本的な操作を一通り説明していきますが、一回で覚えようとする必要はありません
  * 多分無理です
 * 是非とも身につけたいという方はこれが終わった後も積極的に使ってみることをおすすめします
  * 要は慣れの問題です
それでは、はじめましょう
行 16: 行 32:
 * 起動直後はコマンドモード。この状態ではテキストを入力できない
行 64: 行 81:
  * `i` - カーソルがある文字の手前に挿入   * `i`(insert) - カーソルがある文字の手前に挿入
行 71: 行 88:
  * 先ほど入力したものを消してみよう
行 79: 行 97:
 * `0` - 行頭  * `0`(オーじゃなくてゼロ) - 行頭
行 94: 行 112:
 * `/<検索する語><Enter>` - 順方向(ファイルの後ろへ向かう検索)
  * `n`で直前の検索を繰り返す。`N`で逆方向に繰り返す

 * `?<検索する語><Enter>` - 逆方向(ファイルの先頭へ向かう検索)
 * `/<検索する語><Enter>` - 順方向(ファイルの後ろへ向かう)検索
 * `?<検索する語><Enter>` - 逆方向(ファイルの先頭へ向かう)検索
 * `n`で直前の検索を繰り返す。`N`で逆方向に繰り返す
  * `n`や`N`で進む向きは`/`と`?`とで逆になる
行 101: 行 120:
:r! /usr/include/stdio.h<Enter> :r /usr/include/stdio.h<Enter>
行 103: 行 122:
  * `:r`でファイルから読み込み
行 104: 行 124:
 * 単語単位、行単位、検索など、色々な方法で移動してみよう  * 色々な方法で移動してみよう
行 114: 行 134:
 * `d0` - カーソル位置から行頭まで削除
 * `d$` - カーソル位置から行末まで削除
行 117: 行 139:
 * `a` - カーソルのある文字の後に追加  * `a`(append) - カーソルのある文字の後に追加
行 124: 行 146:
 * `r`
 * `c`
 * `s`
 * `r` - 一文字置き換え
 * `c` - ...
 * `s` - ...
行 133: 行 155:
= まとめ - これだけ覚えていればなんとかなる = = まとめ - これだけ覚えていれば多分なんとかなる =
行 137: 行 159:
 * ...  * 検索 - `/`、`n`で繰り返し

vi入門

clear

なにこれ

  • VIsual editor
  • Unix系のOSなら大抵どこにでもあるテキストエディタ。ある程度使えるようになっておいて損はない
    • ある程度慣れると素早い編集ができるように
  • 「モード」の概念
    • カーソルの移動やコマンドの実行 / 入力
  • viを元に生まれ、より多彩な機能を持つvim(Vi IMproved)が有名
    • この講習でもvimを使います

はじめに

  • これからviの基本的な操作を一通り説明していきますが、一回で覚えようとする必要はありません
    • 多分無理です
  • 是非とも身につけたいという方はこれが終わった後も積極的に使ってみることをおすすめします
    • 要は慣れの問題です

それでは、はじめましょう

起動

とりあえず起動してみる

vim
  • 起動直後はコマンドモード。この状態ではテキストを入力できない

終了

とりあえず終了してみる

:q<Enter>
  • :以降は画面下に表示される

  • 何かおかしい人はEscを2、3回叩いてから:q

  • こんなのが出たとき
    E37: No write since last change (add ! to override)
    • 保存していない状態で終了しようとするとこれが出る
    • :q!<Enter>と入力することで無視して終了

カーソル移動

  • hjklキー

        ^
        j
    < h   l >
        k
        v
  • 矢印キーも使えるが、hjklで動くようにしたほうがいい

    • 手をキーボードの中央から動かさずに操作できる
    • しばらく使ってみると手が覚える

カーソル移動の練習

  • 少し手を動かしてみよう
  • テキストを用意する
    • 次のように入力。途中で間違えたらEscを押してやり直す

      80iw<Esc>
      • "80i"の部分は表示されない。後ほど説明するが、これにより"w"を80回連続で入力している
      • hlを適当に叩いて左右の移動に慣れよう

        • 行頭や行末にたどり着いても前の行や次の行には行かないことに注意
    • 続いて、次のように入力
      yyp
      • 行が増える。そのままpを何回か適当に叩いて行数を増やす

      • やはり後で説明するが、yyで1行コピー、pで次の行に貼り付け

      • jkを使って上下に移動してみよう。慣れたら4つのキーであっちこっち移動してみよう

テキストを入力する

  • コマンドモードから入力モードに移行する
    • i(insert) - カーソルがある文字の手前に挿入

  • 色々入力してみよう
  • 入力を終える(コマンドモードに戻る)にはEscキー
    • 入力中なのか、コマンドモードなのか分からないときはとにかくEscを何回か叩く

一文字削除

  • 削除したい文字にカーソルを合わせてx

    • 先ほど入力したものを消してみよう

もう少し大きく移動する

単語

  • w - 単語の頭をたどる

  • e - 単語の末尾をたどる

  • b - 単語の頭を逆向きにたどる

  • 0(オーじゃなくてゼロ) - 行頭

  • $ - 行末

画面

  • Ctrl-f -

  • Ctrl-b -

特定の行

  • その前に: :set nu[mber]<Enter>で行番号を表示

    • :set nonu[mber]<Enter>で行番号を非表示

  • <行番号>G

    • 単にGで末尾に飛ぶ

  • :<行番号><Enter>でもOK

検索

  • /<検索する語><Enter> - 順方向(ファイルの後ろへ向かう)検索

  • ?<検索する語><Enter> - 逆方向(ファイルの先頭へ向かう)検索

  • nで直前の検索を繰り返す。Nで逆方向に繰り返す

    • nNで進む向きは/?とで逆になる

大きく移動する練習

  • ちょっと大きなファイルを読み込む
    :r /usr/include/stdio.h<Enter>
    • :rでファイルから読み込み

  • :set nu<Enter>で行番号を表示

  • 色々な方法で移動してみよう

もう少し大きく削除する

単語単位

  • dwdedb

    • さっきのwとかed(delete)がついただけ

    • カーソル位置から削除する

行単位

  • dd - 1行ごっそり消える

  • d0 - カーソル位置から行頭まで削除

  • d$ - カーソル位置から行末まで削除

i以外の方法で入力する

追加

  • a(append) - カーソルのある文字の後に追加

新しく行を作る

  • oですぐ下に新しい行をつくる

  • Oですぐ上に新しい行をつくる

既存の文字列を置き換える

  • r - 一文字置き換え

  • c - ...

  • s - ...

保存する

  • ZZ

  • :w<Enter>

  • :x<Enter>

まとめ - これだけ覚えていれば多分なんとかなる

  • 移動 - hjkl

  • 挿入 - ia

  • 1文字削除 - x

  • 検索 - /nで繰り返し

clear/slide/2011-04-09-vi (最終更新日時 2011-04-10 23:02:54 更新者 clear)