NTTドコモ様_dカーシェア
NTTドコモ様_dカーシェア
2013.03.08

viエディタで良く使う、便利なコマンドの組み合わせまとめ

卓司

こんにちは。中田です。

以前、viエディタの基本操作カーソル移動方法についてまとめましたが、今回はこれらの基本的なコマンドをどの様に使うと便利なのかをまとめます。
viエディタは単体のコマンドだけでも便利なのですが、コマンドを組み合わせたり、工夫したりして使うとより便利になりますので、以下ご確認のうえ一度試しに使ってみてください。

検索 → 置換 → 検索 → 置換 → …

ある変数を検索した時に『あぁーこの書き方やだなぁ。書き換えたいなぁ。』なんて時ありませんか?こんな時は以下の使い方が便利です。

1. コマンドモードで対象文字列検索

/対象文字列 enter

2. cwコマンドで対象文字列を置換

cw enter

対象文字列が編集可能状態になるので、変更したい文字列を入力します。

3. 入力モードからコマンドモードに切り替え
escボタン押下し、入力モードを解除します。

4. 次の対象文字列検索
nボタン押下し、次の検索対象文字列を検索します。

5. 先ほど処理したものを実行
.押下し、2で行った処理を繰り返し行います。

6. 4の検索から繰り返し
次の対象文字列を検索し、繰り返し行います。

似た処理で、以下の様に置換コマンドを使う事もできるのですが、あまり使ってないです。

:%s/置換元文字列/置換後文字列/gc

理由は、おそらく検索をしてから文字列を置換したくなる事が多いためだと思います。

半角スペースのインデントをタブに置換

この場合は、はなから置換したい対象文字列が決まっているので、早速置換コマンドで対応してしまうと便利です。

:%s/半角スペース4つ/t/gc

半角スペースとインデントが混在していると何かあまりいい気分はしないですよね。
gcの部分をgとすれば一気に置換が出来るのですが、意図しない箇所が修正されてしまわないよう注意が必要です。

行数を確認しながら数行程度コピーしたい

基本的に左側に行数を出力しないで作業しているのですが、たまに大きな範囲でコピーをしたい時ありますよね。
そんなときは以下のコマンドで左の行数部分を出力します。
※筆者が左の行数をデフォルトで出力しないようにしているので。

:set number

その上で、どの程度の行数コピーするか検討して、以下のコマンドでコピーします。

対象カーソルからコピーしたい行数yy

対象カーソルの下にコピーした文字列を貼り付けます。

p

作業が完了したら左側に出力した行数を非表示にします。

:set nonumber

定義ファイルの一定の範囲コメントアウトしたい

これは覚えると定義ファイルの不要箇所の消しこみなど楽になると思います。
定義ファイルをざっと見た感じ、100行目から300行目までの定義が不要だなと感じた時は以下のコマンドを実行します。

:100,300s/^/#/g

さすがに200行分手入力でコメントしていくのは厳しいですよね。
これは一行ずつチェックする必要もない事を事前に確認して、チェック機能をはずして使う事が多いです。

まとめ

この辺の使い方を駆使し始めると、いよいよもってしてコーディングの爆速化が進んでいきます。
メインエディタでなくても、linuxの定義ファイルをどうしても大きく修正しなければならない時などには是非是非参考にしてみてください。