VSCode マルチカーソル・一括編集でコーディング速度を飛躍的に向上させる
Visual Studio Code(VSCode)のマルチカーソル機能と一括編集テクニックは、反復的なコーディング作業を劇的に効率化します。変数名の一括変更、データ構造の整形、HTMLの高速生成など、これらのテクニックを習得することで、従来の数倍の速度でコードを編集できるようになります。
本記事では、VSCodeのマルチカーソル操作、矩形選択、正規表現による一括置換、Emmet展開という4つの主要テクニックを、実践的なリファクタリングシナリオを交えて徹底解説します。
この記事で得られること
- VSCode マルチカーソルの基本操作から応用テクニックまでの体系的な理解
- 矩形選択(ボックス選択)を活用したデータ整形手法
- 正規表現を使った高度な一括置換パターン
- Emmet展開によるHTML/CSS高速コーディング
- 実践的なリファクタリングシナリオでの活用例
前提条件と実行環境
VSCode マルチカーソル・一括編集テクニックを実践するための環境要件を確認します。
| 項目 | 要件 |
|---|---|
| VSCode | バージョン1.80以上を推奨 |
| OS | Windows 10/11、macOS 10.15以上、Linux |
| キーボード | JIS配列またはUS配列 |
| 拡張機能 | 不要(すべてVSCode標準機能) |
キー表記の凡例
本記事では、Windows/Macの両方に対応した表記を使用します。
| 表記 | Windows | Mac |
|---|---|---|
Ctrl |
Ctrlキー | Cmdキー |
Alt |
Altキー | Optionキー |
Shift |
Shiftキー | Shiftキー |
VSCode マルチカーソルの基本操作
マルチカーソルは、VSCodeの最も強力な編集機能の1つです。複数のカーソルを同時に配置し、それぞれが独立して動作することで、並列的な編集が可能になります。
カーソル追加の基本ショートカット
| 操作 | Windows | Mac | 用途 |
|---|---|---|---|
| 上にカーソル追加 | Ctrl+Alt+↑ |
Cmd+Option+↑ |
連続した行に対する編集 |
| 下にカーソル追加 | Ctrl+Alt+↓ |
Cmd+Option+↓ |
連続した行に対する編集 |
| クリックでカーソル追加 | Alt+クリック |
Option+クリック |
任意の位置にカーソル配置 |
| すべてのカーソルを解除 | Esc |
Esc |
通常の単一カーソルに戻る |
選択に基づくカーソル追加
単語や文字列パターンに基づいてマルチカーソルを配置する方法です。
| 操作 | Windows | Mac | 説明 |
|---|---|---|---|
| 次の一致を選択に追加 | Ctrl+D |
Cmd+D |
現在の選択と同じ文字列を1つずつ追加 |
| 次の一致をスキップ | Ctrl+K Ctrl+D |
Cmd+K Cmd+D |
現在の一致をスキップして次へ |
| すべての一致を選択 | Ctrl+Shift+L |
Cmd+Shift+L |
選択文字列の全出現箇所を選択 |
| 単語の全出現を選択 | Ctrl+F2 |
Cmd+F2 |
カーソル位置の単語の全出現を選択 |
| 各行末にカーソル追加 | Shift+Alt+I |
Shift+Option+I |
選択範囲の各行末にカーソル配置 |
基本操作の実践例: 変数名の一括変更
以下のコードでuserNameをcustomerNameに一括変更する手順を解説します。
|
|
手順:
- 最初の
userNameにカーソルを置く Ctrl+D(Mac:Cmd+D)を4回押して全箇所を選択customerNameと入力
結果:
|
|
この操作は1秒未満で完了します。手動で4箇所を編集する場合と比較して、時間短縮と入力ミス防止の両面で効果を発揮します。
矩形選択(ボックス選択)の活用
矩形選択は、テキストを列方向に選択する機能です。データの整形やフォーマット調整に威力を発揮します。
矩形選択の基本操作
| 操作 | Windows | Mac | 説明 |
|---|---|---|---|
| マウスで矩形選択 | Shift+Alt+ドラッグ |
Shift+Option+ドラッグ |
マウスでドラッグして範囲を選択 |
| キーボードで矩形選択 | Ctrl+Shift+Alt+矢印 |
Cmd+Shift+Option+矢印 |
カーソル位置から矢印方向に選択 |
| 矩形選択モード切替 | ステータスバー > Column Selection | ステータスバー > Column Selection | モードを維持した選択 |
矩形選択の実践例: CSVデータの加工
以下のCSVデータから特定の列だけを抽出・編集する例を示します。
元データ:
|
|
name列だけを選択して加工する手順:
- 最初の
AliceのAにカーソルを置く Shift+Alt+↓(Mac:Shift+Option+↓)を3回押して下方向に選択Shift+Endで行末まで選択範囲を拡大- 必要に応じて編集
矩形選択の実践例: インデント調整とプレフィックス追加
以下のようなリストに対して、先頭に番号を一括追加します。
元データ:
|
|
手順:
appleのaにカーソルを置くShift+Alt+↓(Mac:Shift+Option+↓)を4回押す- カーソルが5行分の先頭に並ぶ
1.、2.、3.などを順に入力(または数字だけ入力してから別途加工)
代替手法(Shift+Alt+Iを活用):
- 全5行を選択
Shift+Alt+I(Mac:Shift+Option+I)で各行末にカーソル配置Homeキーで各行の先頭へ移動- 番号を入力
正規表現による一括置換
VSCodeの検索・置換機能は正規表現をサポートしており、複雑なパターンマッチングによる一括編集が可能です。
正規表現置換の基本
置換ダイアログはCtrl+H(Mac: Cmd+H)で開きます。正規表現を有効にするには、検索ボックス右側の.*アイコンをクリックするかAlt+R(Mac: Option+R)を押します。
キャプチャグループの活用
正規表現のキャプチャグループ()で一致した部分を、置換文字列で$1、$2として参照できます。
例1: 関数呼び出しの形式変更
console.log("メッセージ")をlogger.info("メッセージ")に変換します。
| 項目 | 値 |
|---|---|
| 検索 | console\.log\(([^)]+)\) |
| 置換 | logger.info($1) |
例2: プロパティの形式変換
オブジェクトのプロパティをES6のショートハンド形式に変換します。
|
|
| 項目 | 値 |
|---|---|
| 検索 | (\w+): \1 |
| 置換 | $1 |
結果:
|
|
大文字・小文字変換修飾子
VSCodeの正規表現置換では、キャプチャグループの大文字・小文字を変換する修飾子が使用できます。
| 修飾子 | 説明 | 例 |
|---|---|---|
\u |
次の1文字を大文字化 | $1 → \u$1 |
\l |
次の1文字を小文字化 | $1 → \l$1 |
\U |
以降すべてを大文字化 | $1 → \U$1 |
\L |
以降すべてを小文字化 | $1 → \L$1 |
例: スネークケースをキャメルケースに変換
user_nameをuserNameに変換します。
| 項目 | 値 |
|---|---|
| 検索 | _([a-z]) |
| 置換 | \u$1 |
正規表現置換の実践例: import文の整理
散らばったimport文をソートしやすい形式に整理します。
Before:
|
|
検索パターンで特定ライブラリのimportを抽出:
| 項目 | 値 |
|---|---|
| 検索 | import .* from 'react'; |
これにより、Reactからのimportのみをハイライトし、統合作業の対象を特定できます。
Emmet展開によるHTML/CSS高速コーディング
EmmetはVSCodeに標準搭載されており、短い省略記法からHTML/CSSコードを瞬時に生成できます。
Emmetの基本構文
| 構文 | 説明 | 例 | 展開結果 |
|---|---|---|---|
要素名 |
要素を生成 | div |
<div></div> |
#id |
IDを付与 | div#main |
<div id="main"></div> |
.class |
クラスを付与 | div.container |
<div class="container"></div> |
> |
子要素 | ul>li |
<ul><li></li></ul> |
+ |
兄弟要素 | h1+p |
<h1></h1><p></p> |
* |
繰り返し | li*3 |
<li></li><li></li><li></li> |
$ |
連番 | li.item$*3 |
<li class="item1"> … |
{} |
テキスト | p{Hello} |
<p>Hello</p> |
[] |
属性 | a[href=#] |
<a href="#"></a> |
Emmetの展開方法
| 操作 | Windows | Mac | 説明 |
|---|---|---|---|
| Tab展開(設定必要) | Tab |
Tab |
省略記法を展開(要設定) |
| コマンドから展開 | Ctrl+Space |
Ctrl+Space |
サジェストから選択して展開 |
| 展開コマンド直接実行 | Ctrl+Shift+P > “Emmet: Expand” |
Cmd+Shift+P > “Emmet: Expand” |
コマンドパレットから実行 |
Tab展開を有効にするには、settings.jsonに以下を追加します。
|
|
Emmetの実践例: ナビゲーションメニューの生成
以下の省略記法で、完全なナビゲーション構造を瞬時に生成できます。
入力:
|
|
Tab展開後:
|
|
手動で記述すると数分かかる構造が、1行の省略記法から1秒で生成されます。
Emmetの実践例: フォーム構造の生成
入力:
|
|
展開結果:
|
|
EmmetとマルチカーソルのM合わせ技
Emmetはマルチカーソルとの組み合わせでさらに強力になります。
シナリオ: 複数の要素を同時にタグで囲む
- 囲みたいテキストを含む複数行を選択
Shift+Alt+Iで各行末にカーソル配置Ctrl+Shift+Pで「Emmet: Wrap with Abbreviation」を実行div.wrapperなどの省略記法を入力
実践的なリファクタリングシナリオ
これまでのテクニックを組み合わせた、実際の開発現場で遭遇するリファクタリングシナリオを紹介します。
シナリオ1: オブジェクトプロパティの一括変換
レガシーコードのプロパティ名をキャメルケースに統一します。
Before:
|
|
手順:
Ctrl+Hで置換ダイアログを開く- 正規表現を有効化(
Alt+R) - 検索:
_([a-z]) - 置換:
\u$1 - 「すべて置換」を実行
After:
|
|
シナリオ2: 関数シグネチャの一括更新
複数の関数に共通の引数を追加します。
Before:
|
|
手順:
fetchUser、updateUser、deleteUserの(の直前にそれぞれカーソルを配置(Alt+クリックで3箇所)→キーで(の直後に移動options,と入力(3箇所同時に追加される)
After:
|
|
シナリオ3: JSXコンポーネントの属性追加
複数のコンポーネントに共通のpropsを追加します。
Before:
|
|
手順:
- 最初の
onClickを選択 Ctrl+Dを2回押して3箇所を選択Homeキーで各行の<Buttonの直後に移動disabled={isLoading}と入力
After:
|
|
シナリオ4: 配列データからオブジェクト配列への変換
プレーンな配列をオブジェクトの配列に変換します。
Before:
|
|
手順:
- 4行の文字列部分を選択
Shift+Alt+Iで各行末にカーソル配置Homeキーで行頭へ{ name:と入力Endキーで行末へ}と入力
After:
|
|
シナリオ5: CSSクラスの一括リネーム
BEM記法へのリファクタリングを行います。
Before:
|
|
手順:
Ctrl+Hで置換ダイアログを開く- 検索:
card- - 置換:
card__ - 「すべて置換」を実行
After:
|
|
トラブルシューティング
マルチカーソルや一括編集で起こりがちな問題と解決策を紹介します。
Ctrl+Alt+矢印が動作しない
原因: グラフィックドライバ(特にIntel/NVIDIA)が同じショートカットを画面回転に割り当てている場合があります。
解決策:
- グラフィックドライバの設定でホットキーを無効化
- VSCodeのキーバインドを変更(
Ctrl+K Ctrl+Sでキーボードショートカット設定を開く)
正規表現が期待どおりに動作しない
原因: 特殊文字のエスケープ漏れが多い原因です。
解決策:
以下の文字は\でエスケープが必要です。
|
|
例: console.logを検索する場合はconsole\.logと記述します。
Emmetが展開されない
原因: ファイルタイプがEmmet対応言語として認識されていない可能性があります。
解決策:
settings.jsonに以下を追加します。
|
|
効率化のためのVSCode設定
マルチカーソル・一括編集をより快適に使うための推奨設定を紹介します。
|
|
まとめ
VSCodeのマルチカーソル・一括編集テクニックは、習得に多少の時間を要しますが、一度身につければ日々のコーディング効率を大幅に向上させます。
習得の優先順位:
Ctrl+Dによる同一文字列の選択追加(最頻出)Ctrl+Shift+Lによる全出現箇所の選択(一括変更時)Shift+Alt+Iによる各行末へのカーソル配置(データ整形時)- 正規表現置換とキャプチャグループ(パターンベースの変換)
- Emmet展開(HTML/CSS作成時)
これらのテクニックを組み合わせることで、手動では数分から数十分かかる編集作業を数秒で完了できるようになります。最初は意識的に使う必要がありますが、習慣化すれば無意識にこれらの操作を選択できるようになり、開発生産性が飛躍的に向上します。