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

MMA
12と14のリビジョン間の差分 (その間の編集: 2回)
2011-04-09 03:24:57時点のリビジョン12
サイズ: 5276
編集者: clear
コメント:
2011-04-09 11:23:41時点のリビジョン14
サイズ: 7299
編集者: clear
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 14: 行 14:
  * 慣れると素早い編集ができるように
行 17: 行 16:
  * とっつき辛いが、慣れると素早い編集ができるように
行 23: 行 23:
 * 是非とも身につけたいという方はこれが終わった後も積極的に使ってみることをおすすめします  * 是非とも身につけたいという方はこれが終わった後も積極的に使ってみることをおすすめします
行 81: 行 81:
  * `i`(insert) - カーソルがある文字の手前に挿入   * `i` - カーソルがある文字の手前に挿入(insert)
行 88: 行 88:
  * 先ほど入力したものを消してみよう   * 先ほど入力したものを少し消してみよう

= 保存 =
 * `:w <ファイル名><Enter>` - 書き込み。ファイル名を省略すると現在開いているファイル
 * `:x<Enter>` - 変更があれば保存して終了
 * `ZZ` - ':x<Enter>'と同じだが、ファイル名の指定はできない
行 95: 行 100:
分かち書きしない日本語だといまいちだが、単に`h`とか`l`とか押しっぱなしにする手間は省ける。また、単語単位の移動は行をまたげる
行 98: 行 104:
 * `^` - 空白を除いた先頭
  * プログラムとか書くとき便利
行 101: 行 109:
 * `Ctrl-f` -
 * `Ctrl-b` -
 * `Ctrl-f` - 1画面進む
 * `Ctrl-b` - 1画面戻る
行 105: 行 113:
 * その前に: `:set nu[mber]<Enter>`で行番号を表示
  * `:set nonu[mber]<Enter>`で行番号を非表示
行 118: 行 124:
 * ちょっと大きなファイル読み込む  * ファイルから読み込む
行 123: 行 129:
  * 対象のファイルの内容を読み込むだけで、元のファイルを編集する訳ではない
   * ファイルを「開く」場合は':e'
行 124: 行 132:
  * `set nonu<Enter>`で消える
行 125: 行 134:

= コマンドの基本形式 =
{{{
<回数><動作><対象>
}}}
 * <回数>は操作を繰り返す回数。指定できるものとできないものがある。省略すると1回
 * <動作>は削除、変更など
 * <対象>は単語('w')、行末まで('$')など
行 139: 行 156:
 * `a`(append) - カーソルのある文字の後に追加  * `a` - カーソルのある文字の後に追加(append)
 * `A` - 行末に追加
行 146: 行 164:
 * `r` - 一文字置き換え
 * `c` - ...
 * `s` - ...
 * `c` - 指定した範囲をテキストで置き換え
  * 'cw'とか'c$'('C'に同じ)みたいに指定
 * `r` - 文字を文字で置き換え
 * `s` - 文字をテキストで置き換え
行 150: 行 169:
= 保存する =
 * `ZZ`
 * `:w<Enter>`
 * `:x<Enter>`
= 貼り付け =
 * 削除したものはいったんバッファに保存される
 * 'p'または'P'でバッファの内容を貼り付ける
  * 'p'がカーソルの後ろ、'P'が前
 * 「コピー」するには'y'を使う。コピーしたものは削除したもののようにバッファに保存される
  * 'yy'または'Y'で一行コピー
行 155: 行 176:
= まとめ - これだけ覚えていれば多分なんとかなる =
 * 移動 - `hjkl`
= コマンドの繰り返し、取り消し =
== 繰り返し ==
 * '.' - 直前の操作を繰り返す

== 取り消し ==
 * 'u' - 実質何回でも可能
 * 'U' - 行に対する一切の変更を取り消す
 * 'Ctrl-R' - 取り消しの取り消し

= Visual mode(vim) =
 * 範囲選択に特化したモード
 * 'v'で移行
 * 'Ctrl-v'で矩形選択
 * 範囲を指定したら'd'で削除したり'c'や's'で置き換えたり、'y'でヤンクしたり

= 最後に - これだけ覚えていれば多分なんとかなる =
 * 移動 - `hjkl`、'w'、'b'
行 158: 行 194:
 * 1文字削除 - `x`
 * 検索 - `/`、`n`で繰り返し
 * 削除 - `x`、'dw'、'dd'
 * 検索 - `/`、`n`または'N'で繰り返し
 * 保存 - ':w'
 * 終了 - ':q'、':q!'で変更を無視して終了
おつかれさまでした。

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 <ファイル名><Enter> - 書き込み。ファイル名を省略すると現在開いているファイル

  • :x<Enter> - 変更があれば保存して終了

  • ZZ - ':x<Enter>'と同じだが、ファイル名の指定はできない

もう少し大きく移動する

単語

  • w - 単語の頭をたどる

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

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

分かち書きしない日本語だといまいちだが、単にhとかlとか押しっぱなしにする手間は省ける。また、単語単位の移動は行をまたげる

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

  • ^ - 空白を除いた先頭

    • プログラムとか書くとき便利
  • $ - 行末

画面

  • Ctrl-f - 1画面進む

  • Ctrl-b - 1画面戻る

特定の行

  • <行番号>G

    • 単にGで末尾に飛ぶ

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

検索

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

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

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

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

大きく移動する練習

  • ファイルから読み込む
    :r /usr/include/stdio.h<Enter>
    • :rでファイルから読み込み

    • 対象のファイルの内容を読み込むだけで、元のファイルを編集する訳ではない
      • ファイルを「開く」場合は':e'
  • :set nu<Enter>で行番号を表示

    • set nonu<Enter>で消える

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

コマンドの基本形式

<回数><動作><対象>
  • <回数>は操作を繰り返す回数。指定できるものとできないものがある。省略すると1回

  • <動作>は削除、変更など

  • <対象>は単語('w')、行末まで('$')など

もう少し大きく削除する

単語単位

  • dwdedb

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

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

行単位

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

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

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

i以外の方法で入力する

追加

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

  • A - 行末に追加

新しく行を作る

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

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

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

  • c - 指定した範囲をテキストで置き換え

    • 'cw'とか'c$'('C'に同じ)みたいに指定
  • r - 文字を文字で置き換え

  • s - 文字をテキストで置き換え

貼り付け

  • 削除したものはいったんバッファに保存される
  • 'p'または'P'でバッファの内容を貼り付ける
    • 'p'がカーソルの後ろ、'P'が前
  • 「コピー」するには'y'を使う。コピーしたものは削除したもののようにバッファに保存される
    • 'yy'または'Y'で一行コピー

コマンドの繰り返し、取り消し

繰り返し

  • '.' - 直前の操作を繰り返す

取り消し

  • 'u' - 実質何回でも可能
  • 'U' - 行に対する一切の変更を取り消す
  • 'Ctrl-R' - 取り消しの取り消し

Visual mode(vim)

  • 範囲選択に特化したモード
  • 'v'で移行
  • 'Ctrl-v'で矩形選択
  • 範囲を指定したら'd'で削除したり'c'や's'で置き換えたり、'y'でヤンクしたり

最後に - これだけ覚えていれば多分なんとかなる

  • 移動 - hjkl、'w'、'b'

  • 挿入 - ia

  • 削除 - x、'dw'、'dd'

  • 検索 - /nまたは'N'で繰り返し

  • 保存 - ':w'
  • 終了 - ':q'、':q!'で変更を無視して終了

おつかれさまでした。

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