VS Codeで空行を一括削除する方法|正規表現を使ってスッキリ整形

プログラミング・IT

「プログラムに余計な空行がたくさん入っていて見づらい…」
「大量のMarkdownファイルの空行を一気に削除したい」
そんなときに便利なのが、Visual Studio Code(VS Code)の検索置換機能 を使った空行の一括削除です。

VS Codeでは正規表現を使って簡単に空行をまとめて消すことができます。

この記事では、初心者の方でもわかるように、VS Codeで空行を一括削除する手順 をやさしく解説します。大量のファイルでも一瞬で空行を整理できるようになります。

スポンサーリンク

なぜ空行を削除する必要があるのか

コードの可読性向上

問題のあるコード例(空行が多すぎる)

def calculate_total(items):


    total = 0


    for item in items:


        if item['price'] > 0:


            total += item['price']


    return total

改善後(適切な空行)

def calculate_total(items):
    total = 0
    
    for item in items:
        if item['price'] > 0:
            total += item['price']
    
    return total

よくある空行の問題

コピペ時の余計な空行

  • 別のファイルからコードをコピーしたときに空行も一緒にコピーされる
  • Webサイトからコードを貼り付けたときの改行の違い

ファイル変換時の空行

  • Word文書からテキストファイルに変換したとき
  • CSVファイルの空行データ
  • ログファイルの不要な空行

チーム開発での統一

  • メンバーによって異なる空行の入れ方
  • コードレビューでの指摘事項
  • 自動整形ツールとの整合性

VS Codeで空行を削除する基本手順

検索置換機能の起動

ショートカットキー

Windows / Linux

Ctrl + H

macOS

Cmd + Option + F

このショートカットを押すと、検索・置換バーが画面上部に表示されます。

メニューからの起動

メニューバーから起動する場合:

  1. 「編集(Edit)」メニューをクリック
  2. 「検索と置換(Find and Replace)」を選択

正規表現モードの有効化

正規表現ボタンの場所

検索・置換バーの右側にあるアイコンをクリック:

  • .* のアイコン(正規表現)
  • クリックすると青くハイライトされる
  • これで正規表現パターンが使用可能になる

正規表現とは

正規表現は、文字列のパターンを表現するための記法です。VS Codeでは、以下のような場面で使用されます:

  • 特定のパターンの文字列を検索
  • 複雑な置換操作
  • 条件に合致する行の抽出

基本的な空行削除パターン

最もシンプルなパターン

検索欄に入力:

^\s*$

置換欄:

(空欄のまま)

パターンの解説

記号意味具体例
^行の始まり行頭を示す
\s空白文字スペース、タブ、改行
*直前の文字が0回以上空白が0個以上
$行の終わり行末を示す

実際の動作例

削除前:

def hello():
    print("Hello")

    
    
    print("World")


    return None

削除後:

def hello():
    print("Hello")
    print("World")
    return None

より高度な空行削除パターン

完全に空の行のみ削除

空白文字を含む行は残す

検索パターン:

^$

このパターンは、文字が全くない行のみを対象とします。スペースやタブが含まれている行は削除されません。

使用場面

  • インデントが重要なPythonコード
  • 意図的な空白文字が必要なファイル

連続する空行を1行にまとめる

2行以上の空行を1行に

検索パターン:

\n\s*\n\s*\n

置換文字列:

\n\n

実例

変更前:

function example() {
    console.log("Start");



    console.log("End");
}

変更後:

function example() {
    console.log("Start");

    console.log("End");
}

特定の文字列の後の空行のみ削除

関数定義後の空行を削除

検索パターン:

(function .+\{)\n\s*\n

置換文字列:

$1\n

コメント行の後の空行を削除

検索パターン:

(//.*)\n\s*\n

置換文字列:

$1\n

複数ファイルでの一括削除

グローバル検索での空行削除

手順

  1. Ctrl + Shift + F(Mac: Cmd + Shift + F)でグローバル検索を開く
  2. 左の三角アイコンをクリックして置換機能を展開
  3. 正規表現モード(.*)を有効化
  4. 検索パターンを入力
  5. 置換文字列を空欄にする
  6. 「すべて置換」をクリック

対象ファイルの指定

特定の拡張子のみ対象:

files to include: *.py

特定のフォルダを除外:

files to exclude: node_modules, dist

実際の設定例

JavaScript プロジェクト:

files to include: *.js, *.jsx, *.ts, *.tsx
files to exclude: node_modules, build, dist

Python プロジェクト:

files to include: *.py
files to exclude: __pycache__, .venv, venv

ワークスペース全体での処理

注意点

  • バックアップの作成:大量変更前は必ずバックアップを作成
  • Git との組み合わせ:変更後に git diff で確認
  • 段階的な実行:少数ファイルでテスト後に全体実行

安全な実行手順

1. Git でコミット状態を確認
2. 一部ファイルで動作テスト
3. 全体実行
4. 結果確認
5. 問題があれば Git でリバート

言語別の空行削除の注意点

Python での注意点

インデントが重要

問題のあるパターン:

class Example:

    def method1(self):
        pass

    def method2(self):
        pass

この場合、クラス内のメソッド間の空行は意味があるため、削除すべきではありません。

推奨パターン

^[ \t]*$

このパターンはスペースとタブのみの行を対象とし、完全に空の行は残します。

HTML/XML での注意点

要素間の空行

<div>
    <h1>タイトル</h1>
    
    <p>段落1</p>
    
    <p>段落2</p>
</div>

要素間の空行は読みやすさのために重要な場合があります。

Markdown での注意点

段落区切りの空行

# 見出し

これは段落1です。

これは段落2です。

Markdownでは空行が段落の区切りとして機能するため、削除すると文書構造が変わってしまいます。

Markdown 用の安全なパターン

^\s*\n^\s*\n^\s*\n

3行以上の連続する空行のみを2行に減らすパターン。

トラブルシューティング

正規表現が動作しない場合

よくある原因

正規表現モードが無効

  • .* アイコンが青くハイライトされているか確認
  • アイコンをクリックして有効化

パターンの記述ミス

  • エスケープ文字(\)の入力ミス
  • 全角文字の混入

ファイルが読み取り専用

  • ファイルの権限を確認
  • 必要に応じて編集権限を取得

デバッグ方法

  1. 簡単なパターンから試す ^$
  2. 検索結果を確認
    • パターンが正しくマッチしているか確認
    • F3 で次の検索結果に移動
  3. 小さなファイルでテスト
    • 本番ファイルの前にテスト用ファイルで確認

意図しない削除が発生した場合

復元方法

Undo 機能

Ctrl + Z (Windows/Linux)
Cmd + Z (macOS)

Git からの復元

git checkout -- filename.py

VS Code のファイル履歴

  1. ファイルを右クリック
  2. 「ローカル履歴を開く」を選択
  3. 削除前の状態を選択

パフォーマンスの問題

大きなファイルでの処理

症状:

  • 置換処理が非常に遅い
  • VS Code が応答しなくなる

対処法:

  1. ファイルを分割
    • 大きなファイルを複数に分ける
    • セクションごとに処理
  2. バッチ処理 # コマンドラインでの処理 sed '/^$/d' input.txt > output.txt
  3. メモリ使用量の確認
    • タスクマネージャーでメモリ使用量を監視
    • 必要に応じて他のアプリケーションを終了

実用的な削除パターン集

よく使用される正規表現パターン

基本パターン

用途検索パターン置換説明
完全に空の行^$(空)文字が全くない行
空白のみの行^\s*$(空)スペース・タブのみの行
連続空行を1行に\n\s*\n\s*\n\n\n3行以上の空行を2行に
行末の空白\s+$(空)行末の不要な空白

高度なパターン

関数間の過剰な空行を調整

検索: (\}\s*\n)\s*\n\s*\n+
置換: $1\n

コメントブロック後の空行削除

検索: (\*\/)\s*\n\s*\n
置換: $1\n

言語固有のパターン

JavaScript/TypeScript

import文後の空行整理

検索: (import .+;)\s*\n\s*\n\s*\n
置換: $1\n\n

Python

関数定義前の空行を2行に統一

検索: \n\s*\n\s*\n+(def\s+\w+)
置換: \n\n$1

CSS

セレクタ間の空行削除

検索: (\})\s*\n\s*\n\s*\n+
置換: $1\n\n

自動化とワークフロー

保存時の自動整形

VS Code設定

{
  "editor.codeActionsOnSave": {
    "source.organizeImports": true,
    "source.fixAll": true
  },
  "files.trimTrailingWhitespace": true,
  "files.trimFinalNewlines": true,
  "files.insertFinalNewline": true
}

拡張機能の活用

推奨拡張機能

Trailing Spaces

  • 行末の空白を可視化
  • 自動削除機能

Bracket Pair Colorizer

  • コードブロックの可視化
  • 空行の必要性を判断しやすく

Git フックとの連携

pre-commit フックでの自動処理

#!/bin/sh
# .git/hooks/pre-commit

# Python ファイルの空行を整理
find . -name "*.py" -exec sed -i '/^$/N;/^\n$/d' {} \;

# JavaScript ファイルの空行を整理
find . -name "*.js" -exec sed -i '/^$/N;/^\n$/d' {} \;

まとめ

VS Codeで空行を効率的に削除することで、コードの可読性と保守性が大幅に向上します。重要なポイントをまとめると:

基本的な空行削除

  • ショートカットCtrl + H(Mac: Cmd + Option + F)で置換機能を開く
  • 正規表現^\s*$ で空白のみの行を検索
  • 置換:空欄で一括削除

高度な操作

  • 連続空行の整理:複数パターンで柔軟に対応
  • 言語別の配慮:Python、HTML、Markdownなどの特性を考慮
  • 複数ファイル処理:プロジェクト全体での一括処理

注意すべきポイント

  • バックアップの作成:大量変更前は必ずバックアップ
  • 段階的な実行:小さなファイルでテスト後に全体実行
  • 言語固有の空行:意味のある空行は残す

効率化のテクニック

  • 自動化設定:保存時の自動整形
  • Git との連携:コミット前の自動処理
  • 拡張機能の活用:可視化と自動削除

コメント

タイトルとURLをコピーしました