テキスト編集基本機能

VS Code のテキスト編集機能のうち、基本的なものからやや先進的なものまでについて記す。本章ではショートカットキーは既定のものを示す。記述の便宜上、部分的に Emacs 用語を借用する。

Attention

Visual Studio Code 利用ノート 冒頭の前提条件に留意すること。

キャレットを移動する

VS Code のユーザー設定が初期状態であれば、Windows のエディットコントロール上でのショートカットキーと同様にキャレットを移動することができる。

キーバインド

キャレットの移動または移動先

矢印キー各種

矢印方向に一文字または一行移動する

Home

行頭

End

行末

PageUp

一画面ほど上

PageDown

一画面ほど下

Ctrl + Home

バッファーの先頭

Ctrl + End

バッファーの末尾

Ctrl +

現在いる単語の先頭

Ctrl +

現在いる単語の末尾

単語内で移動する

既定ではキーバインドが割り当てられていないが、キャレットを単語内で前後に移動する cursorWordPart{Left,Right} コマンドがある。どうやら次の条件でキャレットを移動させるようだ:

  • 英単語の場合は大文字と小文字が入れ替わる最寄りの位置まで移動する。

  • 一般には句読点などの最寄りの位置まで移動する。正確に言うと設定項目 editor.wordSeparator で定義される文字だ。

Note

このように名前のないコマンドを実行するには、キーバインドを明示的に割り当てる必要がある。キーバインド を参照。

Todo

これらのコマンドの本物の仕様を参照する。

釣りあう括弧に移動する

キャレットが括弧にあるときに Ctrl + Shift + \ を押すと、その括弧に釣りあう括弧にキャレットが移動する。

行番号を指定して移動する

既定では Ctrl + G 押しで Go to Line/Column… 入力テキストボックスが表示される。ここで行番号単体か、それに加えてコロンと桁番号を入力すれば、キャレットがその位置に移動する。

テキストを選択する

標準的な選択

前節のキャレット移動キー操作それぞれに対して Shift キーを追加的に押すと、対応するキャレット移動が起こり、かつその軌跡上のテキストが選択される。例えば Shift + End を押すとキャレットのあった位置から行末までの文字すべてが選択され、キャレットは行末に移動している。

選択操作においてはキャレット移動が副作用的に発生しがちだが、気にしないほうがいい。

Windows 同様に、テキスト全部を Ctrl + A を押すことで選択することもできる。

複数キャレット

VS Code 独特のキャレット操作に「分身」がある。分身自体は選択ではないが、直後に選択を伴う可能性が高いので今述べる。

Ctrl + Alt + ( | ) を押すと、現在位置の上または下の行の同じ位置にキャレットを分身する。

Shift + Alt + I を押すと、選択範囲を含む行全部の行末にキャレットを分身する。

キーバインドが既定では与えられていないものの、さらなる分身コマンドが用意されている:

コマンド

キャレットの分身位置

Add Cursors To Top

現在位置からバッファー先頭までの行すべての対応する桁

Add Cursors To Bottom

現在位置からバッファー末端までの行すべての対応する桁

「分身」を解除するには、既定では Escape を押す。

同じ文字列を全て選択

文字列を選択して Ctrl + Shift + L を押すと、エディター内にあるこの文字列と同じ文字列すべても選択されたことになり、キャレットの分身も起こる。

スマート選択

スマート選択とは、現在の選択に基づいて選択領域を拡張または縮小していく操作だ。高級プログラミング言語のコードを編集しているならば、選択領域がスコープになるように段階的に変化するのを想像するとだいたい合っているだろう。

キーバインド

操作

Shift + Alt +

スコープ方向に選択を縮小する

Shift + Alt +

スコープ方向に選択を拡大する

列選択モード

VS Code の公式文書では列選択モードという言い回しをしているが、Emacs の用語を借用すると矩形選択モードだ。列選択モードでは選択部分が矩形状に変化するのが特徴だ。関連事項として次の二点を覚えておけばいい。

まず、メインメニューから Selecion ‣ Column Selection Mode を選択すると、エディターの選択モードが通常選択と列選択に交互に入れ替わる。

そして、列選択モードに入らなくても、Ctrl + Shift + Alt キーを押しながら、矢印キーやページキーを組み合わせて押せば列選択が可能であることを押さえる。

テキストを削除する

削除した部分を選択して Delete または Backspace キーを押すのが一般的な削除方法だ。特殊な用途に特化した削除コマンドも用意されている:

キーバインド

操作

Backspace

キャレットの左の文字を削除する

Delete

キャレットの右の文字を削除する

Ctrl + Backspace

キャレットがある単語の先頭まで文字を削除する

Ctrl + Shift + K

キャレットがある行全体を削除する

次の表は最初のものを除いて既定ではキーバインドが割り当てられていないテキスト削除コマンドだ:

コマンド

操作

deleteWordStartLeft

キャレットから単語の先頭まで削除する

deleteWordStartRight

キャレットから単語の末尾まで+区切り文字を削除する

deleteWordEndLeft

キャレットから単語の先頭まで+区切り文字を削除する

deleteWordEndRight

キャレットから単語の末尾まで削除する

deleteWordPartLeft

キャレットから「単語内に移動する」の節で述べた最も左側に近い文字(含む)まで削除する

deleteWordPartRight

キャレットから「単語内に移動する」の節で述べた最も右側に近い文字(含まない)まで削除する

deleteAllLeft

キャレットから行の先頭まで削除する

deleteAllRight

キャレットから行の末尾まで削除する

行単位の編集

エディター上で行単位で編集する便利なコマンドをいくつか挙げる。

エディターで Alt + ( | ) を押すと上または下の行と現在の行を入れ替える。

同様に、Shift + Alt + ( | ) を押すと現在の行の複製を上または下の行との間に挿入する。

キーバインドが既定では与えられていないものの、複数行を選択した状態で効果があるコマンドが用意されている。一部を次に示す:

コマンド

操作

Sort Lines Ascending

行単位で昇順に並び替える

Sort Lines Descending

行単位で降順に並び替える

Delete Duplicated Lines

行単位で重複するものを一つを除いて削除する

Join Lines

改行文字を削除して一行に結合する

クリップボード操作

Windows 標準の意味でのクリップボード操作は VS Code でも有効だ。なお、コマンドに対するキーバインドも OS 標準の二種類あるが、次の表では短い方を採用してある:

キーバインド

操作

Ctrl + X

切り取り

Ctrl + C

コピー

Ctrl + V

貼り付け

コード整形

HTML や JavaScript などは VS Code 自身が整形規則を規定しており、汚いコードを書いても次のコマンドを実行すれば、インデントや改行がよく揃う:

キーバインド

操作

Shift + Alt + F

バッファー内容全体を整形する

Ctrl + K Ctrl + F

選択部分を整形する

その他の言語については、これらが機能するのは利用している拡張機能が整形規則を定義していることが必要だ。

ブロックを折り畳む

構造化されたコードで表現されるような言語のテキストであれば、エディターの行番号と行頭の間の隙間に折りたたみボタンがあり、それぞれがブロックに関連している。

  • これをクリックすると、そのブロックを畳むか展開する。

  • これを Shift を押しつつクリックすると、そのブロックと子孫ブロック全部を一斉に折り畳むか展開する。

キーバインドも使える。下の表にあるコマンド以外にも、便利な操作がある。

キーバインド

操作

Ctrl + Shift + [

キャレット位置のブロックを畳む

Ctrl + Shift + ]

キャレット位置のブロックを展開する

ブロックは人為的に定義することも可能だ。これも言語によって異なるが、例えば Markdown ならば、文字列 <!-- #region --> から文字列 <!-- #endregion --> までの部分がブロックとみなされる。

インデント

エディター内で Tab を押すと、VS Code はタブ文字か空白文字数個をキャレット位置に挿入する。この挙動はユーザー設定により変化する。

キーバインド

操作

Ctrl + ]

キャレットのある行をインデントする

Ctrl + [

キャレットのある行のインデントを一単位戻す

インデント設定を検出する

VS Code は開いているファイルを分析し、採用されているインデントを判断する。自動検出されたインデントが既定のインデント設定に優先する。実際に適用されているインデント条件は Status Bar のインジケーターで確認できる。例えば Spaces: 4 のような表示があるはずだ。

そのインデント表示をクリックすると、メインウィンドウ上部にインデント関連のドロップダウンが表示される。現在のエディターの設定を変更したり、タブ文字と空白文字を相互に変換したりするのに利用する。

コマンド

操作

Indent Using Spaces

空白文字を使ってインデントすることにする

Indent Using Tabs

タブ文字を使ってインデントすることにする

Detect Indentation from Content

インデント設定を検出する

Convert Indentation to Spaces

インデント箇所のタブ文字すべてを適切な個数の空白文字に置換する

Convert Indentation to Tabs

インデント箇所の空白文字すべてを適切な個数のタブ文字に置換する

エンコーディング

ワークスペース内のファイルに対する既定のエンコーディングを指定できる。もっと大域的に、VS Code で編集するファイルすべてに対する既定のエンコーディングを指定できる。

エンコーディングを指定してファイルを開き直したり、保存したりすることができる。

現在のエディターに関するエンコーディングは Status Bar のインジケーターに表示される。

履歴

MS Office のソフトウェアと同様に、バッファーの内容を編集直前に戻したり、戻すのをやめたりすることが可能だ。

キーバインド

操作

Ctrl + Z

元に戻す

Ctrl + Y

やり直す

ファイルに保存する

ショートカットキー Ctrl + S は、現在のバッファーが既存のファイルに関連していれば上書き保存コマンドを、そうでなければ名前を付けて保存コマンドを実行する。

コマンド Save All は、大まかに言えば現在の編集バッファー全てに対して上記を実行する。

自動保存

File ‣ Auto Save をオンにすると、編集バッファーすべてに対して自動保存機能が有効になる。これにより、ファイルを明示的に保存する手間が省ける。

Hot Exit

編集済みだがまだファイルに保存されていないバッファーが VS Code 終了時に存在する場合、それらの内容を密かに作業ファイルに保存するという機能がある。

  • 細かい挙動は設定ファイルで設定可能だ。

  • 作業ファイルはフォルダー %APPDATA%\Code\Backups に保存される。

検索と置換

検索と置換で UI が酷似しているのでまとめて説明する。

バッファーを対象とする検索および置換

キーバインド

操作

Ctrl + F

バッファー内から文字列を検索する

Ctrl + H

バッファー内の文字列を置換

検索コマンドを開始すると、バッファー上部に引数入力用の UI が表示される。

  • エディットボックスに対象となる文字列を入力する。

  • Match Case アイコンをクリックするたびに、検索における大文字小文字区別モードのON/OFF を切り替える。

  • Match Whole Word アイコンをクリックすると、対象文字列を単語として扱うように指示することになる。部分文字列としての合致を無視することになる。

  • Use Regular Expression アイコンをクリックすると、対象文字列が正規表現パターンであるか否かを切り替える。

  • Find in Selection ボタンを押すと、検索対象範囲を現在選択に限定する。

実際に検索すると、次のことが起こる:

  • UI 上に結果数が出力される。

  • エディター本体のみならず、縦スクロールバー、ミニマップに検索結果がハイライトされる。

  • Previous MatchNext Match ボタンを押すと、エディターの表示が隣の合致位置に移動する。

置換コマンドを開始すると、検索コマンドの UI によく似たものが表示される。UI 項目の追加分を述べる:

  • 下のエディットボックスに置換後の文字列または正規表現パターンを指定する。

  • Preserve Case ボタンで大文字小文字を維持させるか否かを指定する。

  • Replace ボタンで実際に現在ハイライトしている合致部分に対して置換する。

  • Replace All ボタンで合致全部を置換する。

ファイルの集合を対象とする検索および置換

現在のワークスペース管理下にあるファイルすべてに対して、検索または置換ができる。

キーバインド

操作

Ctrl + Shift + F

ファイル群から文字列を検索する

Ctrl + Shift + H

ファイル群に対して文字列を置換する

検索・置換オプションは上述のものと共通する仕様だ。共通でないものは:

files to include

操作対象となるファイル名を glob 指定する。必須項目。

Search only in Open Editors

さらに、現在開いているバッファーに操作対象を限定する。

files to exclude

操作対象から除外するファイル名を glob 指定する。こちらはオプショナル。

Use Exclude Settings and Ignore Files

.gitignore や VS Code のユーザー設定を考慮するかどうか。 ON にしておくのが普通だ。

検索ボックスの内容が更新されるたびに、検索結果または置換プレビュー表示が下の空間に出力される。

なお、特定のフィルダーから下にあるファイルすべてを対象としたい場合は、 Explorer ビューのフォルダーアイコンのコンテキストメニューから Find In Folder… を選択すると files to include の入力の手間が省ける。

最後に globbing について補足する。通常のワイルドカードに加え、Bash の globstar ワイルドカード ** と等しいものが最初から使える。このパターンはゼロまたは複数のディレクトリーで構成される有効なパスに展開する。

検索エディター

検索結果の統計の右側に書いてあるリンク Open in editor をクリックすると、検索結果または置換プレビュー表示をより見易い形式で表示するタブが VS Code のメイン部分に出現する。これを検索エディターという。

検索エディターでは、合致行の前後を確認できたり、キーワードを着色したりする。一般的な grep 出力の役目を期待して良い。

結果行をダブルクリックすると、キャレットが同じ位置にあるエディタータブが新たに開く。