しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Visual Studio の HTML エディタでの「代替の貼り付け」機能が地味に便利な件

Visual Studio 2012 で cshtml を修正していた時に、コンテキストメニューに「代替の貼り付け」という項目があることに気が付きました。

f:id:shiba-yan:20130720030223p:plain

代替の貼り付けと言われても、正直全くどのような機能なのか分かりませんね。とりあえず何かを貼り付け出来そうです。

試しに、書いていた HTML をコピーした状態で「代替の貼り付け」を実行してみると、以下のように HTML タグがエンコードされた状態で貼り付けされました。

f:id:shiba-yan:20130720133927p:plain

この結果を見て、単純に HTML エンコードを行って貼り付ける機能かと思いましたが、それなら「代替の貼り付け」なんて分かりにくい名前にしないですよね。

ということで MSDN を調べてみると、この機能は Visual Studio 2005 から存在していた機能のようです。全然知りませんでした…。

Visual Web Developer の HTML デザイナーでの貼り付け操作

標準の「貼り付け」と「代替の貼り付け」は挙動が正反対になっているのが特徴のようです。ソースビューとデザインビューで貼り付け時の挙動が異なるようですが、cshtml はソースビューでしか編集できないので残念ですね。

この機能は非常に説明しにくいので、使ってみて理解するのが一番楽そうです。例えばブラウザから以下のようにテキストをコピーしておきます。

f:id:shiba-yan:20130720142500p:plain

そして、Visual Studio の HTML エディターで「貼り付け」を選ぶと、以下のように普通のテキストとしてべたっと貼り付けされます。

f:id:shiba-yan:20130720142627p:plain

ここまでは普通ですよね。

しかし、Visual Studio で「代替の貼り付け」を選ぶと、HTML タグ付きで貼り付けされます。

f:id:shiba-yan:20130720142905p:plain

つまり、ソースビューでの「代替の貼り付け」はブラウザでの表示を考慮して貼り付けされます。

最初の HTML エンコードされた件に関しても同様で、ブラウザでタグとして処理されるのではなく、そのままの形で表示するため HTML エンコードが行われていたという訳です。これは pre タグを使ってコードを紹介する時には非常に便利そうですね。

ちなみにデザインビューではソースビューでの挙動と反対になるらしいので注意。