概要

この記事はVim Advent Calendar 2017の6日目の記事です。

vimの操作は覚えたけれど、上手く編集できない人に向けて、単発繰り返しを使っての置換について書きます。

「単発繰り返し」について

直前の動作を繰り返すことができるので便利です。※詳しくは、ヘルプ参照 h .

サンプル

説明で使用するテキストになります。

<form>
  <div class="form-group">
    <label for="exampleInputEmail1">Email address</label>
    <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email">
    <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
  </div>
  <div class="form-group">
    <label for="exampleInputPassword1">Password</label>
    <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
  </div>
  <div class="form-check">
    <label class="form-check-label">
      <input type="checkbox" class="form-check-input">
      Check me out
    </label>
  </div>
  <button type="submit" class="btn btn-primary">Submit</button>
</form>

https://getbootstrap.com/docs/4.0/components/forms/ より

置換の手順

  1. /ex 検索
  2. ciw 入力へ
  3. sample<esc> 置換
  4. n. 繰り返し

n.は、よく使うのでmapにすると便利です。

私は、次で登録しています。

nnoremap <c-k> n.

検索について

単語検索は、*を使います。*を使うとカーソル下の単語を単語で検索することができます。カーソル下に単語がない場合は、移動して*を実行します。*で入力ミスを確認できるので便利です。また、単語以外の場合は、vi"y/<c-r>"などカッコを利用して検索もできます。

exampleInputEmail1の検索

手順

  1. /ex 短い単語で、exampleInputEmail1を探します。
  2. n 到達するまで繰り返します。
  3. * で単語検索を開始します。

入力について

単語を入れ替える場合

exampleInputEmail1 → sample

ciwsample<esc>n.

cを使って削除後に入力モードにし、入力しています。

ciw<c-r>0<esc>n.

ソース上に単語が存在する場合は、あらかじめヤンクしておけばペーストするだけで修正できます。入力モードでは、<c-r>0でペーストできます。

単語以外を入れ替える場合

form-control → sample

ci"samle<esc>n.

""で括られている場合は、ci"を使って置換します。

12ssample<esc>n.
""などで指定できない場合は、文字数を使います。

ct"sample<esc>n.
検索を使う方法もあります。数がわからない場合に使います。

先頭に追加する場合

exampleInputEmail1 → sample-exampleInputEmail1

isaple-<esc>n.

末尾に追加する場合

exampleInputEmail1 → exampleInputEmail1-sample

ciw<c-r>"-saple<esc>n.

削除してから入力します。

先頭を修正する場合

exampleInputEmail1 → form-InputEmail1

7sform-<esc>n.

途中に文字を入れたい場合

exampleInputEmail1 → example-InputEmail1

7sexample-<esc>n.

先頭部分は、打ち直します。打った方が早いことは、よくあります。

最後に

vimは色々なコマンドがあるので、色々探してみるのも面白いです。ドットでは難しいことは、マクロや正規表現を使うことで解決できるのでまたの機会に。

ありがとうございました。