「Vimは使いにくい」を「Vimしか使いたくない」に変える。
Vimの基本操作(移動、保存、終了)を覚えた後、多くの人が「で、これの何が便利なの?」という壁にぶつかります。
しかし、Vimの真価は基本操作の先にある「テキストオブジェクト」や「マーク」などの応用機能にあります。
本記事では、開発者やインフラエンジニアが現場で実際に使っている「作業スピードを倍速にするテクニック」を厳選して紹介します。
目次
コーディングが速くなる編集テクニック
コードを書く際、カーソル移動や削除のために矢印キーやBackSpaceを連打していませんか?
Vimなら「意味のある単位」で操作が可能です。
「囲まれた文字」を一瞬で書き換える(テキストオブジェクト)
関数の引数や、クォートで囲まれた文字列を編集する際、ちまちま削除する必要はありません。
ci" # " で囲まれた中身を削除してインサートモードへ
ci' # ' で囲まれた中身を削除してインサートモードへ
ci( # ( ) で囲まれた中身を削除してインサートモードへ
di{ # { } で囲まれた中身を削除(Delete Inside)
c(Change)は「削除して入力開始」、d(Delete)は「削除のみ」です。i(Inside)を a(Around)に変えると、囲っている記号ごと削除できます(例:da")。
複数行を一括でインデントする
コードのネストが深くなった時などに便利です。
# ビジュアルモードで行選択してから Vjj # 複数行を選択 > # インデント(右へずらす) < # アウトデント(左へ戻す) # ノーマルモードからの場合 >> # 現在の行をインデント 3>> # 3行分まとめてインデント
サーバー管理で役立つ一括操作テクニック
設定ファイルの編集やログ調査で役立つコマンドです。
ファイル内の特定単語を一括置換
例えば、設定ファイル内の 8080 ポートをすべて 443 に変えたい場合など。
:%s/8080/443/g
確認しながら置換したい場合は末尾に c を付けます(:%s/src/dst/gc)。
範囲を選択して一括コメントアウト
矩形選択(ブロック選択)を使えば、行頭に一気に # を挿入できます。
Ctrl + vで矩形ビジュアルモードに入る。jキーでコメントアウトしたい行を下まで選択。I(大文字のアイ)を押してインサートモードへ。#(または//)を入力。Escキーを2回押す(ここ重要!)。
一瞬のラグの後、選択した全行にコメント文字が反映されます。
画面分割と複数ファイル管理
別のファイルを参照しながらコーディングしたり、ログを見比べたりする際に必須の機能です。
:sp filename # 水平分割 (Horizontal Split) :vsp filename # 垂直分割 (Vertical Split) # ウィンドウ間の移動 Ctrl + w w # 次のウィンドウへ Ctrl + w h/j/k/l # 方向を指定して移動
【最重要】マーク機能を使った「瞬間移動」と「範囲コピー」
長いファイルの編集時、「さっき編集していた場所に戻りたい」と思うことはありませんか?
また、「ここから、あそこまで」をコピーするのに、ビジュアルモードで延々とスクロールしていませんか?
「マーク機能」を使えば、これらが一瞬で終わります。
マークの基本:場所を記憶する
ma: 現在のカーソル位置に「a」という名前のマークを付ける。'a: マーク「a」を付けた行へジャンプ。`a: マーク「a」を付けた正確な位置(列)へジャンプ。
応用テクニック:マークを使った長距離コピー
画面に収まらないほどの長距離をコピーする場合、この方法が最強です。
- コピーしたい開始位置で
maを押す(マークa設定)。 - コピーしたい終了位置へ移動する(
Gで末尾など)。 y'aを入力する。
解説:
y(ヤンク=コピー)コマンドに、移動コマンド 'a(マークaへ移動)を組み合わせることで、「現在地からマークaまで」をコピーしています。
まとめ:Vimを指に馴染ませよう
今回紹介したテクニックは、知っているかどうかで作業効率に雲泥の差が出ます。
ci"で中身を書き換えCtrl + vで一括コメントアウトmaとy'aで長距離コピー
まずはこの3つだけでも、日々の業務に取り入れてみてください。
意識せずに指が動くようになった時、あなたはもう他のエディタには戻れなくなっているはずです。

コメント