まず結論:よく使うカット操作の早見表
vi(vim)でのカット操作はコマンドモードで行います。Esc を押してコマンドモードに切り替えてから以下のキーを入力してください。vi では「削除」と「カット」は同義で、削除したテキストは自動的に内部バッファに格納されます。p でカーソルの直後に、P でカーソルの直前にペースト可能です。
# 削除(カット)コマンド早見表
x カーソル位置の1文字を削除
X カーソル位置の左隣1文字を削除(バックスペース相当)
dw カーソル位置から次の単語の先頭までを削除
dd カーソル行を丸ごと1行削除
D カーソル位置から行末までを削除(d$ と同義)
d0 カーソル位置から行頭までを削除(0はゼロ)
dG カーソル行から最終行まで全行削除
dgg カーソル行から先頭行まで全行削除
# ペースト
p カーソルの後ろ(行削除後は次の行)に貼り付け
P カーソルの前(行削除後は前の行)に貼り付け
# 誤操作のリカバリ
u 直前の操作を取り消し(複数回押せる)
Ctrl + r Undo を取り消し(Redo)
基本のカット操作3種の動作を確認する
最もよく使う3操作(x・dw・dd)の挙動を押さえておくと、設定ファイルの編集速度が大きく変わります。
x:1文字を削除する
x はカーソル位置の1文字だけを削除します。ファイル名や設定値の1文字を打ち間違えたときの細かな修正に向いています。
Before: Very nice
^(カーソルが先頭の「V」にある)
After: ery nice ← 「V」が削除された
dw:単語単位で削除する
dw はカーソル位置から次の単語の先頭までを削除します。正確には「単語本体+直後のスペース」が削除対象です。単語の途中にカーソルがある場合は、その位置から単語の末尾(次の単語の先頭)までが削除されます。
Before: This is vi test.
^(カーソルが行頭の「T」にある)
After: is vi test. ← 「This 」が削除された
dd:行単位で削除する
dd は設定ファイルの編集で最もよく使う操作です。カーソルのある行を丸ごと1行削除し、削除した行はバッファに入るため、p で別の位置にそのまま貼り付けられます。
Before:
This is vi test. ← この行にカーソルがある
Very nice
After:
Very nice ← 行ごと削除された(バッファに保持)
数値との組み合わせで複数行・複数文字を一括削除する
vi のカット操作は、コマンドの前に数字を付けることで回数を指定できます。不要なコメントブロックを複数行まとめて消したい場面などで特に役立ちます。
# 数値 + カットコマンドの例
3dd カーソル行から3行分を削除
5x カーソル位置から5文字削除
2dw カーソル位置から2単語分削除
ある運用現場では、nginx の設定ファイルから不要な server ブロックを削除する際に :set number で行番号を表示してから行数を数え、20dd で一括削除するという方法を取っています。ビジュアルモードで範囲選択するより素早く処理できるため、慣れれば編集効率が大幅に上がります。
カーソル位置を起点にした範囲削除を使いこなす
行の途中から行末・行頭まで削除したい場合や、ファイルの末尾まで一括削除したい場合は、モーション付きの削除コマンドが便利です。
# カーソル位置を起点にした範囲削除
D カーソル位置から行末まで削除(d$ と同じ)
d0 カーソル位置から行頭まで削除(0はゼロ)
d^ カーソル位置から最初の非空白文字まで削除
dG カーソル行から最終行まで全行削除
dgg カーソル行から先頭行まで全行削除
d/word カーソル位置から次の「word」の出現箇所まで削除
dG はファイルの末尾までをまとめて削除する強力な操作です。誤操作すると大量の行が消えるため、実行前に :set number で行番号を表示して現在位置を確認する習慣をつけておくと安全です。万が一誤操作した場合は u(Undo)で即座に元に戻せます。
カットしたテキストをペーストして行を移動する
vi では削除操作がそのままカット操作を兼ねています。dd で削除した行は内部バッファ(デフォルトレジスタ)に入っているため、別の位置で p を押すだけで貼り付けられます。この仕組みを使うと、行の移動や並び替えがマウス操作なしで素早く行えます。
# 行を別の場所へ移動する手順
1. 移動したい行にカーソルを移動する
2. dd で行を削除(バッファに格納される)
3. 貼り付けたい行の上にカーソルを移動する
4. p で次の行に貼り付け(P なら前の行に貼り付け)
# 複数行をまとめて移動する例
3dd → 3行削除してバッファへ格納
(移動先へカーソルを移動)
p → 3行分をまとめてペースト
注意点として、dd の後に別の削除操作(x や dw など)を行うと、バッファの内容が上書きされます。ペースト前に別の削除操作を挟まないよう意識してください。過去の削除内容を取り出したい場合はナンバー付きレジスタ("1p で1つ前の削除内容など)を使う方法もありますが、通常の運用では直前の削除内容を使うことがほとんどです。
本番環境での安全な編集作業と誤操作リカバリ
カット操作の誤りは u キー(Undo)で即座に元に戻せます。複数回押せば複数ステップ分遡れます。ただし、:w で保存した内容はUndoでは戻せないため、保存前のリカバリに限られます。
# 誤操作リカバリ
u 直前の操作を取り消し(複数回押せる)
Ctrl + r Undo を取り消し(Redo)
:e! 最後に保存した状態へ戻す(未保存の変更を全破棄)
# 編集前のバックアップ例
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
本番環境の設定ファイルを編集する際は、vi を開く前に必ずバックアップを取る運用を徹底してください。:e! は最後の保存時点まで戻せますが、そもそもバックアップがあれば誤って保存してしまった後でも復旧できます。
また、削除範囲を視覚的に確認したい場面では :set list コマンドで改行記号や特殊文字を表示しながら作業すると、意図しない削除を防ぎやすくなります。行番号の表示(:set number)と組み合わせることで、Ndd による一括削除の行数ミスも減らせます。
「コマンドは打てる。次は”現場で通用する型”を最短で身につけたい」——そんなあなたへ。
ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。
>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)
※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。
