連載
» 2015年03月10日 11時30分 UPDATE

.NET TIPS:Visual Studio 2013:別ファイルにあるソースコードをその場で編集するには?

[定義をここに表示]コマンドを使って、その場で別の場所や別ファイルにあるソースコードを参照したり編集したりする方法を解説する。

[山本康彦,BluewaterSoft/Microsoft MVP for Windows Platform Development]
.NET TIPS
Insider.NET

 

「.NET TIPS」のインデックス

連載目次

対象:Visual Studio 2013以降
ただしExpressエディションを除く


 コードを編集しているときに、呼び出しているメソッドなどの内容もちょっと書き換えたいといったことはないだろうか? [定義へ移動]コマンド(キーボードマップがC#のときは[F12]キー、VBのときは[Shift]+[F2]キー)を使えば表示箇所を切り替えられるが、元の場所と併せて両方とも編集しようとするとあらためて画面を分割することになって少々不便だ。また、画面が予想以上にスクロールされてしまって元の編集箇所を見失うこともある。Visual Studio 2013では、新たに[定義をここに表示]コマンド([Alt]+[F12]キー)が搭載され、その場で呼び出し先のコードを編集できるようになった(Communityエディション以上)。本稿では、[定義をここに表示]コマンドの使い方を解説する。

従来の[定義へ移動]コマンド

 従来の[定義へ移動]コマンドは、次の画像のような動作をする。

従来の[定義へ移動]コマンドの動作
従来の[定義へ移動]コマンドの動作 従来の[定義へ移動]コマンドの動作
これはVisual C# 2005 Expressの画面である。
上:定義を表示したいメソッド(ここでは「InitializeComponent」メソッド)にカーソルを置き、右クリックのメニューから[定義ヘ移動]を選ぶ(または、キーボードマップがC#のときは[F12]キー、VBのときは[Shift]+[F2]キーでもよい)。
下:[定義ヘ移動]コマンドが実行されると、エディター画面が切り替わり、定義箇所が表示される。この画像は異なるファイルに定義箇所がある場合で、自動的にそのファイルが開かれている。また、定義が同じファイル内にある場合には画面がそこまでスクロールしてしまう。

 次の画像のように両方を表示させるには、けっきょく手作業で定義箇所を表示しなければならない。また、定義が同じファイル内にある場合には、画面がそこまでスクロールしてしまうので、元の編集箇所を見失ってしまうこともある。

手作業で両方を表示させた 手作業で両方を表示させた
[定義ヘ移動]コマンドを実行した後で、画面を分割した。すると表示箇所がずれてしまうので、手動で定義箇所までスクロールするか、あるいはもう一度[定義ヘ移動]コマンドを使うことになる。定義箇所にすぐ飛べるのは便利なのだが、このように両方を見比べながら編集したいときには一手間掛かる。
なお、C#で定義箇所を編集せず見るだけならばメニューバーの[表示]−[コード定義ウィンドウ]を選んで「コード定義ウィンドウ」を開いておけばよい(「.NET TIPS:Visual Studio 2005でクラスやメソッドの定義を簡単に参照するには?[VS 2005のみ]」を参照)。

新しい[定義をここに表示]コマンド

 Visual Studio 2013に搭載された新しい[定義をここに表示]コマンドは、C#/VB/C++だけで有効である(従来の[定義ヘ移動]コマンドはXAMLでも使える)*1。[定義をここに表示]コマンドを使うと、次の画像のようにその場で(エディターの同じ画面内に)定義箇所が表示され、編集もできる。

新しい[定義をここに表示]コマンドの動作
新しい[定義をここに表示]コマンドの動作 新しい[定義をここに表示]コマンドの動作
これはVisual Studio Community 2013の画面である。
上:定義を表示したいメソッド(ここでは「SaveAsync」メソッド)にカーソルを置き、右クリックのメニューから[定義をここに表示]を選ぶ(または[Alt]+[F12]キーでもよい)。
下:[定義をここに表示]コマンドが実行されると、カーソルがあった位置の直下に定義箇所が表示される(背景がクリーム色の部分)。元のコードは上下に分割され、隠されることはない(元のコードの行番号に注目)。この画像は異なるファイルに定義箇所がある場合だが、定義が同じファイル内にある場合にも同様になる(元の位置からスクロールしない)。定義箇所の左側には青い縦線が付く。この状態で定義箇所(ここでは「SaveAsync」メソッドの内容)を編集できる(定義箇所を開いたままで元のコードも編集可能)。

 表示している定義箇所の中で、さらに[定義をここに表示]コマンドを使ってもよい。次の画像のように、新しい定義箇所に切り替わる。

表示している定義の中でさらに[定義をここに表示]コマンドを使う
表示している定義の中でさらに[定義をここに表示]コマンドを使う 表示している定義の中でさらに[定義をここに表示]コマンドを使う
上:表示している定義の中でも、[定義をここに表示]コマンドは利用可能だ。右クリックのメニューに[定義をここに表示]がある。
下:表示している定義の中で[定義をここに表示]コマンドを実行すると、表示が切り替わる。先ほどまでの定義を見たい場合は、右上の青丸(赤枠内)で切り替える。

 「定義をここに表示」を終了するには、右上の黄色いタブにある[×]ボタンをクリックするか、[Esc]キーを押す。その他にも便利なショートカットキーが用意されている。詳しくはMSDNの「方法: [定義をここに表示] を使用してコードを表示および編集する (Alt + F12)」を参照してほしい。

*1 Visual Studio 2015では、XAMLにも[定義をここに表示]コマンドが提供される予定になっている。


「.NET TIPS」のインデックス

.NET TIPS

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。