「コードが動かない…なぜ?」と悩んだとき、原因が全角スペースだったという経験はありませんか?
よくある全角スペースのトラブル
プログラミングをしていると、以下のような困った状況に遭遇することがあります:
- Pythonのインデントエラー:全角スペースが混じってIndentationError
- HTMLの表示崩れ:全角スペースがそのまま表示されてレイアウト崩れ
- YAMLファイルの構文エラー:設定ファイルが読み込めない
- JSONの解析エラー:データ処理でつまずく
- CSV・TSVの列ずれ:データ分析で思わぬ結果
なぜ全角スペースは見つけにくいの?
全角スペース( )と半角スペース( )は、見た目がほとんど同じです。しかし、コンピューターにとってはまったく別の文字として扱われます。
文字 | 文字コード | 見た目の幅 | プログラムでの扱い |
---|---|---|---|
半角スペース | U+0020 | 狭い | 通常のスペース |
全角スペース | U+3000 | 広い | 日本語文字として認識 |
この記事で解決できること
この記事では、以下について段階的にわかりやすく解説します:
- Sublime Textで全角スペースを簡単に発見する方法
- 自動でハイライトして見落としを防ぐ設定
- 一括置換で効率的に修正する手順
- 今後のトラブルを予防するコツ
最後まで読めば、全角スペースによるトラブルを完全に回避できるようになります。
全角スペースが混入する原因と対策

どこから全角スペースが来るのか?
日本語入力での混入
よくあるケース
- 日本語を入力した後、入力モードを切り替え忘れ
- コメント部分で日本語を書いた後、半角に戻すのを忘れる
- スペースキーを押したときにIMEがオンのまま
例:Pythonコードでの混入
def hello(): # ここに全角スペースが混入
print("Hello")
コピー&ペーストでの混入
よくあるケース
- Webサイトからコードをコピーしたとき
- PDFからテキストを抽出したとき
- Wordやメールからコードを貼り付けたとき
チーム開発での混入
よくあるケース
- 他の人が作ったファイルをもらったとき
- GitHubからダウンロードしたコードに混入
- 設定ファイルを共有するときの文字コード問題
全角スペースの見分け方
文字幅での判断
全角スペースは半角スペースより約2倍の幅があります。
半角→ ← ←この間隔
全角→ ← ←この間隔(より広い)
カーソル移動での確認
カーソルキー(←→)で移動すると:
- 半角スペース:1回で通り過ぎる
- 全角スペース:1回で通り過ぎるが、幅が広いため違和感がある
Sublime Textで全角スペースを探す基本方法
検索(Find)機能を使った発見
最もシンプルで確実な方法です。
基本手順
- 検索ボックスを開く
Ctrl + F
(Mac:Cmd + F
)
- 全角スペースを入力
- 日本語入力モードでスペースキーを押して全角スペースを入力
- または以下の全角スペースをコピー→ ←
- 検索実行
Enter
キーで次の箇所に移動Find All
ですべての箇所をハイライト
検索結果の見方
検索がヒットした場合
- 該当箇所が黄色でハイライトされる
- 画面下部に「◯件見つかりました」と表示
F3
キー(Mac:Cmd + G
)で次の箇所に移動
検索がヒットしなかった場合
- 検索ボックスが赤くなる
- 「見つかりません」と表示
- この場合、ファイルに全角スペースは含まれていない
より詳細な検索
行番号付きで確認したい場合
- 検索結果パネルを表示
Find All
をクリック- または
Alt + Enter
- 結果一覧を確認
- 各行番号と該当箇所が一覧表示
- クリックするとその行に移動
正規表現を使った高度な検索
より柔軟な検索をしたい場合は正規表現が便利です。
正規表現検索の手順
- 検索ボックスを開く
Ctrl + F
(Mac:Cmd + F
)
- 正規表現モードをオン
- 検索ボックス左の「.*」アイコンをクリック
- 全角スペースの正規表現を入力
[ ]
全角スペースとタブの混在検索
[ \t]
これにより、全角スペースとタブ文字の両方を検索できます。
行頭の全角スペースのみ検索
^[ ]+
インデントエラーの原因になりやすい「行頭の全角スペース」のみを検索できます。
連続する全角スペースを検索
[ ]{2,}
2個以上連続した全角スペースを検索できます。
自動ハイライトで見落としを防ぐ方法

TrailingSpacesプラグインの活用
TrailingSpacesとは?
本来は「行末の不要なスペース」をハイライトするプラグインですが、設定により全角スペースも自動検出できます。
インストール手順
- Package Controlを開く
Ctrl + Shift + P
(Mac:Cmd + Shift + P
)
- インストールコマンドを実行
Package Control: Install Package
と入力
- TrailingSpacesを検索
- 「TrailingSpaces」と入力してEnter
- インストール完了
- 自動的にダウンロード・インストールされる
全角スペース検出の設定
- 設定ファイルを開く
Preferences → Package Settings → TrailingSpaces → Settings - User
- 設定内容を記述
{ "trailing_spaces_highlight_color": "invalid", "trailing_spaces_include_current_line": true, "trailing_spaces_include_empty_lines": true, "trailing_spaces_regexp": "[ \\s]*[ ]+[\\s]*", "trailing_spaces_modified_lines_only": false }
設定項目の詳細
設定項目 | 意味 | 推奨値 |
---|---|---|
highlight_color | ハイライト色 | “invalid”(赤色) |
include_current_line | 現在行も対象 | true |
include_empty_lines | 空行も対象 | true |
regexp | 検出パターン | “[ \s][ ]+[\s]“ |
modified_lines_only | 変更行のみ | false |
ハイライト結果の確認
設定後、全角スペースが含まれる箇所が赤い背景でハイライトされます。
ハイライトされる例
def hello(): # 関数名の後と行末に全角スペース
print("Hello")
BracketHighlighterでの全角文字表示
カスタム設定による全角スペース強調
BracketHighlighterプラグインを使って、全角スペースを強調表示することも可能です。
設定方法
- BracketHighlighterをインストール
- Package Controlから「BracketHighlighter」をインストール
- カスタム設定を追加
{ "user_bracket_styles": { "fullwidth_space": { "icon": "dot", "color": "brackethighlighter.tag", "style": "highlight" } } }
自作プラグインでのリアルタイム検出
簡単な自作プラグイン
より高度な制御が必要な場合は、自作プラグインも作成できます。
import sublime
import sublime_plugin
class FullWidthSpaceHighlighter(sublime_plugin.EventListener):
def on_modified_async(self, view):
# 全角スペースを検出してハイライト
regions = view.find_all('[ ]')
view.add_regions('fullwidth_spaces', regions, 'invalid', 'dot')
一括置換で効率的に修正する方法
基本的な置換操作
全角スペースを半角スペースに置換
- 置換ウィンドウを開く
Ctrl + H
(Mac:Cmd + Alt + F
)
- 検索文字列を入力
- 「Find What」欄に全角スペース( )を入力
- 置換文字列を入力
- 「Replace With」欄に半角スペース( )を入力
- 置換実行
Replace All
で一括置換Replace
で一個ずつ確認しながら置換
全角スペースを完全削除
- 検索文字列:全角スペース( )
- 置換文字列:空欄(何も入力しない)
Replace All
で実行
正規表現を使った高度な置換
正規表現置換の基本
- 置換ウィンドウで正規表現モードをオン
- 左下の「.*」アイコンをクリック
- パターンマッチングで置換
行頭の全角スペースのみ置換
検索パターン:^[ ]+
置換文字列:適切なインデント(半角スペースやタブ)
複数の全角スペースを1つの半角スペースに
検索パターン:[ ]+
置換文字列:(半角スペース1個)
全角スペースとタブの混在を統一
検索パターン:[ \t]+
置換文字列:(半角スペース4個)
ファイル全体での一括処理
プロジェクト全体での置換
- プロジェクトフォルダを開く
File → Open Folder
- フォルダ内検索を開く
Ctrl + Shift + F
(Mac:Cmd + Shift + F
)
- 置換設定
- 「Find」欄:全角スペース
- 「Replace」欄:半角スペース
- 「Where」欄:
*.py
(Pythonファイルのみ)または*
(全ファイル)
- 一括置換実行
Replace All
をクリック
ファイル形式別の処理
Pythonファイルのみ処理
- Where欄:
*.py
Web関連ファイルのみ処理
- Where欄:
*.html, *.css, *.js
設定ファイルのみ処理
- Where欄:
*.yml, *.yaml, *.json, *.xml
バックアップを取ってから置換
安全な置換手順
- Gitでコミット(バージョン管理している場合)
git add . git commit -m "全角スペース修正前のバックアップ"
- 手動バックアップ(バージョン管理していない場合)
- ファイルまたはフォルダを別の場所にコピー
- 置換実行
- 結果確認
- 意図しない変更がないかチェック
- 必要に応じてUndo(
Ctrl + Z
)で戻す
よくあるトラブルと解決方法

Q. 検索で全角スペースが見つからない
原因1:入力方法の間違い
問題:半角スペースで検索している 解決方法:
- 日本語入力モードをオンにする
- スペースキーを押して全角スペースを入力
- または、この「 」をコピーして使用
原因2:似た文字との混同
問題:全角スペース以外の空白文字 解決方法:正規表現で幅広く検索
[\s ]+
Q. TrailingSpacesが動作しない
原因1:設定ファイルの記述ミス
解決方法:
- 設定ファイルのJSON記法を確認
- カンマやカッコの記述ミスをチェック
- Sublime Text再起動
原因2:プラグインの競合
解決方法:
- 他の空白関連プラグインを一時的に無効化
- Package Controlで「Disable Package」を実行
Q. 置換後にコードが動かなくなった
原因:必要な空白まで削除した
例:Pythonのインデント問題
# 置換前(正常)
def hello():
print("Hello") # 先頭に適切なインデント
# 置換後(エラー)
def hello():
print("Hello") # インデントが削除されてしまった
解決方法:
Ctrl + Z
(Mac:Cmd + Z
)でUndo- より限定的な正規表現を使用
- 行頭以外の全角スペースのみを対象にする
行頭以外の全角スペースのみ置換
検索パターン:(?<!^)[ ]+
意味:行頭以外の全角スペースのみ
Q. CSVファイルで列がずれる
原因:データ部分の全角スペースを削除した
問題のあるCSV
名前,年齢,住所
田中 太郎,30,東京都
解決方法:
- データ内容と構造を分けて考える
- データ部分は慎重に手動修正
- ヘッダー行のみ自動置換
Q. HTMLで表示が崩れる
原因:全角スペースが文字として表示される
問題のあるHTML
<p>こんにちは 世界</p> <!-- 全角スペースが表示される -->
解決方法:
- 全角スペースを
に置換 - CSSで適切なスペーシングを設定
置換例
- 検索:
- 置換:
予防策とベストプラクティス
エディタ設定での予防
空白文字の可視化
- 設定を開く
Preferences → Settings
- 空白表示設定を追加
{ "draw_white_space": "all", "draw_unicode_white_space": true }
これにより、すべての空白文字が点や記号で表示されます。
保存時の自動整形
{
"trim_trailing_white_space_on_save": true,
"ensure_newline_at_eof_on_save": true
}
入力時の注意点
IME(日本語入力)の管理
おすすめの習慣
- コード入力前:必ず英数モードに切り替え
- コメント後:英数モードに戻すクセをつける
- キーボードショートカット:
Alt + ~
(Windows)で素早く切り替え
エディタでの入力支援
自動切り替え設定
{
"auto_complete_triggers": [
{"selector": "source.python", "characters": ".", "rhs_empty": true}
]
}
チーム開発での対策
EditorConfigの使用
プロジェクトルートに.editorconfig
ファイルを作成:
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.py]
indent_style = space
indent_size = 4
[*.{html,css,js}]
indent_style = space
indent_size = 2
Git hooks での自動チェック
pre-commitフックの例
#!/bin/sh
# 全角スペースをチェック
if git diff --cached --name-only | xargs grep -l " "; then
echo "Error: 全角スペースが含まれています"
exit 1
fi
コードレビューでのチェック
レビュー観点
- インデントの一貫性
- 空白文字の種類統一
- 行末の不要な空白
- ファイル末尾の改行
自動化ツールの活用
Python:flake8, black
pip install flake8 black
flake8 --max-line-length=88 .
black .
JavaScript:ESLint, Prettier
npm install -g eslint prettier
eslint . --fix
prettier --write .
高度な活用方法

カスタムビルドシステムでの自動チェック
全角スペースチェック用ビルドシステム
{
"cmd": ["python", "-c", "
import sys
import re
with open('$file', 'r', encoding='utf-8') as f:
content = f.read()
matches = list(re.finditer('[ ]', content))
if matches:
lines = content.split('\\n')
for match in matches:
line_num = content[:match.start()].count('\\n') + 1
print(f'Line {line_num}: 全角スペースを検出')
sys.exit(1)
else:
print('全角スペースは見つかりませんでした')
"],
"shell": true,
"file_regex": "^Line (\\d+):"
}
マクロ機能での自動化
全角スペース削除マクロ
- マクロ記録開始
Tools → Record Macro
- 操作を記録
Ctrl + H
で置換開始- 全角スペース → 半角スペース
Replace All
実行Esc
で置換終了
- マクロ記録終了
Tools → Stop Recording Macro
- マクロ保存
Tools → Save Macro
- 「FullwidthSpaceReplace.sublime-macro」として保存
- キーバインド設定
[ { "keys": ["ctrl+shift+f1"], "command": "run_macro_file", "args": {"file": "res://Packages/User/FullwidthSpaceReplace.sublime-macro"} } ]
プラグイン開発での高度な制御
カスタムプラグインの作成
import sublime
import sublime_plugin
import re
class FullwidthSpaceCheckerCommand(sublime_plugin.TextCommand):
def run(self, edit):
content = self.view.substr(sublime.Region(0, self.view.size()))
# 全角スペースを検出
pattern = r'[ ]'
matches = list(re.finditer(pattern, content))
if matches:
# 結果をパネルに表示
results = []
lines = content.split('\n')
for match in matches:
line_num = content[:match.start()].count('\n') + 1
col_num = match.start() - content.rfind('\n', 0, match.start())
line_content = lines[line_num - 1]
results.append(f"{line_num}:{col_num}: {line_content}")
# 結果パネルを作成
window = self.view.window()
panel = window.create_output_panel("fullwidth_space_results")
panel.run_command("append", {"characters": "\n".join(results)})
window.run_command("show_panel", {"panel": "output.fullwidth_space_results"})
else:
sublime.status_message("全角スペースは見つかりませんでした")
class FullwidthSpaceListener(sublime_plugin.EventListener):
def on_post_save_async(self, view):
# 保存時に自動チェック
if view.settings().get("fullwidth_space_check_on_save", False):
view.run_command("fullwidth_space_checker")
まとめ
Sublime Textでの全角スペース対策について、重要なポイントをまとめます:
検出方法
- 基本的な検索:
Ctrl + F
で全角スペースを直接検索 - 正規表現検索:
[ ]
パターンでより柔軟な検索 - 自動ハイライト:TrailingSpacesプラグインでリアルタイム表示
修正方法
- 一括置換:
Ctrl + H
で全角スペースを半角スペースに変換 - 正規表現置換:複雑なパターンマッチングでの修正
- プロジェクト全体:複数ファイルの一括処理
予防策
- エディタ設定:空白文字の可視化と保存時自動整形
- 入力習慣:IME切り替えの徹底
- チーム対策:EditorConfigとGit hooksの活用
効率化のポイント
- プラグイン活用でリアルタイム検出
- マクロ機能で操作の自動化
- 正規表現で柔軟な検索・置換
- バックアップを取ってから一括処理
コメント