SSH接続先のサーバーで設定ファイルを直したいとき、インサートモードのまま Backspace を連打するのは時間の無駄です。vi/vimのノーマルモードコマンドを使えば、単語・行・複数行をまとめて数キー操作で削除できます。
まず最初に押さえる操作の流れはこれだけです。
# ファイルを開く
$ vi /etc/nginx/nginx.conf
# 編集中(インサートモード)なら Esc でノーマルモードへ切り替える
# 画面下部の「-- INSERT --」表示が消えていればノーマルモード
ノーマルモードに入った状態でコマンドを入力するだけで、以降に紹介するすべての削除操作が実行できます。現代のLinuxディストリビューション(Ubuntu 22.04以降・RHEL 9系など)では vi コマンドを打っても実態は vim が起動するケースがほとんどです。本記事のコマンドはいずれも vim で動作します。
1文字・1単語を素早く削除する
カーソル位置の1文字を削除するには x、単語単位で消すには dw を使います。数字を前置すれば複数単語をまとめて削除できます。
# カーソル位置の1文字を削除
x
# カーソルの左の1文字を削除
X
# カーソル位置から次の単語頭まで削除
dw
# 2単語分を一度に削除
d2w
# 3単語分を一度に削除
d3w
たとえば、次の行でカーソルが is の先頭にある状態で d2w を実行すると:
# 実行前
This is a Test file
# d2w 実行後(「is 」と「a 」の2単語が削除される)
This Test file
d[数字]w の数字部分を変えるだけで削除量を調整できます。Apacheや nginxの設定ファイルでオプション値だけを書き換えたい場面に向いています。
行全体・複数行をまとめて削除する
行単位の削除は設定ファイル編集で最もよく使う操作です。dd で現在行を1行削除し、数字を前置すれば複数行を一気に消せます。
# 現在行を削除
dd
# 現在行から下へ3行まとめて削除(計3行)
3dd
# カーソルから行末まで削除(行頭側は残る)
D
# カーソルから行末まで削除(別記法)
d$
# カーソルから行頭まで削除
d0
ある運用現場では、設定ファイルに残っていた10行超の旧コメントブロックを 10dd 一発で削除し、手作業でDeleteキーを連打するより大幅に時間を短縮したケースがあります。
削除した内容はvimの内部バッファに保持されます。削除後に p(小文字)を押せばカーソル直後に貼り付けられるため、「行を切り取って別の場所へ移動する」操作もそのまま実現できます。
カーソル移動と組み合わせて広範囲を削除する
ノーマルモードでは d に移動コマンドを組み合わせることで「現在位置から〇〇まで」という範囲削除を直感的に指定できます。
# 現在行から3行下まで削除(計4行)
d3j
# カーソルからファイル末尾まで全削除
dG
# カーソルからファイル先頭まで全削除
dgg
dG は「ファイル末尾の不要なログ出力やコメントをまとめて消したい」場面で特に役立ちます。実行前に G だけ押して末尾へ飛び、削除範囲を目視確認してから gg で先頭に戻り、改めて dG を実行するとミスが減ります。
パターンを指定して不要行を一括削除する
vim のコマンドラインモード(: を押して入力するモード)では、正規表現パターンに一致する行をまとめて削除できます。大量のコメント行や空行を取り除く際に特に効果的です。
# 行頭が # のコメント行を全行削除
:g/^#/d
# 空行を全行削除
:g/^$/d
# "DEBUG" を含む行を全行削除
:g/DEBUG/d
# 5行目から10行目を削除
:5,10d
# 現在行(.)からファイル末尾($)まで削除
:.,$d
:g コマンドによる一括削除は強力ですが、アンドゥ(u)で取り消すステップが複数になる場合があります。本番サーバーの設定ファイルを編集する前は、必ず cp でバックアップを作成してください。
# 編集前にバックアップを作成する
$ cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
$ vi /etc/nginx/nginx.conf
削除ミスはアンドゥですぐ元に戻す
ノーマルモードで u を押すと直前の操作を取り消せます。連続して押すことで複数ステップ遡ることも可能です。取り消しすぎた場合は Ctrl+r でやり直しができます。
# 直前の操作を取り消し(アンドゥ)
u
# アンドゥを取り消し(リドゥ)
Ctrl + r
大量削除を行う前に :w でファイルを保存しておくと、アンドゥで遡れる範囲が広がります。ただし、:w 後にアンドゥすると「保存前の状態」に戻りつつもディスク上は保存済みのままになるため、変更管理はバックアップファイルで行うほうが確実です。
なお、:q! で保存せずに強制終了すれば、その編集セッション中のすべての変更を破棄できます。「やりすぎた」と感じたら迷わずこのコマンドで脱出し、バックアップから作業をやり直すのが現場の安全なリカバリ手順です。
# 変更を保存せずに強制終了(編集内容を全破棄)
:q!
「コマンドは打てる。次は”現場で通用する型”を最短で身につけたい」——そんなあなたへ。
ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。
>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)
※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。
