概要
この記事はVim Advent Calendar 2017の6日目の記事です。
vimの操作は覚えたけれど、上手く編集できない人に向けて、単発繰り返しを使っての置換について書きます。
「単発繰り返し」について
直前の動作を繰り返すことができるので便利です。※詳しくは、ヘルプ参照 h .
サンプル
説明で使用するテキストになります。
<form><divclass="form-group"><labelfor="exampleInputEmail1">Email address</label><inputtype="email"class="form-control"id="exampleInputEmail1"aria-describedby="emailHelp"placeholder="Enter email"><smallid="emailHelp"class="form-text text-muted">We'll never share your email with anyone else.</small></div><divclass="form-group"><labelfor="exampleInputPassword1">Password</label><inputtype="password"class="form-control"id="exampleInputPassword1"placeholder="Password"></div><divclass="form-check"><labelclass="form-check-label"><inputtype="checkbox"class="form-check-input">
Check me out</label></div><buttontype="submit"class="btn btn-primary">Submit</button></form>
https://getbootstrap.com/docs/4.0/components/forms/より
置換の手順
/ex
検索ciw
入力へsample<esc>
置換n.
繰り返し
n.
は、よく使うのでmapにすると便利です。
私は、次で登録しています。
nnoremap <c-k> n.
検索について
単語検索は、*
を使います。*
を使うとカーソル下の単語を単語で検索することができます。カーソル下に単語がない場合は、移動して*
を実行します。*
で入力ミスを確認できるので便利です。また、単語以外の場合は、vi"y/<c-r>"
などカッコを利用して検索もできます。
exampleInputEmail1
の検索
手順
/ex
短い単語で、exampleInputEmail1を探します。n
到達するまで繰り返します。*
で単語検索を開始します。
入力について
単語を入れ替える場合
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は色々なコマンドがあるので、色々探してみるのも面白いです。ドットでは難しいことは、マクロや正規表現を使うことで解決できるのでまたの機会に。
ありがとうございました。