Sublime Text から Visual Studio Code(以下、VS Code)に乗り換えた開発者なら、きっと「Paste and Indent」の機能が懐かしいのではないでしょうか! コードを書いていると、コードのコピー&ペーストは避けられませんが、貼り付けたあとにインデントが崩れることがよくあり、手作業で整え直す必要があります。Sublime Text には、貼り付けたコードを現在のファイルのインデントに自動で合わせてくれる、いわゆる Paste and Indent 機能があります。VS Code にも似た機能はありますが、仕組みが少し異なり、設定ファイルで有効にする必要があります。

Sublime Text と違い、VS Code では「Paste and Indent」はショートカットキーではなく、「貼り付け」の操作に直接組み込まれています。設定ファイルで editor.formatOnPaste を true に設定するだけで、それ以降は貼り付けるたびに自動でインデントされるようになります。

"editor.formatOnPaste": true

ただし、Sublime Text と少し違うのは、VS Code の「formatOnPaste」は実際にはプログラミング言語に紐づいている点です。つまり、貼り付けたコードを既存のインデントに合わせる本当の意味での「貼り付け時の整列」ではありません。例えば、VS Code はデフォルトでは erb 形式(Rails Template File)をサポートしていないため、私は Rails プラグインを別途インストールしました。しかし、そのプラグインは formatOnPaste に対応していません。そのため、ファイル形式が erb のときは、貼り付けたコードが自動でインデントされません。また、ファイル形式がデフォルトの PlainText の場合も、formatOnPaste は効かないことがあります。

より正確に言うと、VS Code の formatOnPaste は、貼り付けたコードを周囲のインデントに合わせるというより、コードを整形するツールに近いものです。Coding Style で定められたルールに従って、コードをフォーマットします。