13
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VimAdvent Calendar 2017

Day 6

単発繰り返し(ドット)を使って置換する

Last updated at Posted at 2017-12-05

概要

この記事は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"sample<esc>n.

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

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

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

先頭に追加する場合

exampleInputEmail1 → sample-exampleInputEmail1

isample-<esc>n.

末尾に追加する場合

exampleInputEmail1 → exampleInputEmail1-sample

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

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

先頭を修正する場合

exampleInputEmail1 → form-InputEmail1

7sform-<esc>n.

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

exampleInputEmail1 → example-InputEmail1

7sexample-<esc>n.

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

最後に

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

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

13
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?