質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

Q&A

3回答

5798閲覧

Windowsのcmd.exeから特定のファイルをVisual Studio(2008)で開きたい

rapan931

総合スコア13

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

0グッド

0クリップ

投稿2017/06/15 09:40

質問内容

Windowsのcmd.exeから特定のファイルをVisual Studio(2008)で開きたいのですが、
実現方法が分かりません。すみませんが助けていただきたいです。

環境

Windows 7
Microsoft Visual C++ 2008 Express Edition

VIM - Vi IMproved 8.0 (2016 Sep 12, compiled May 2 2017 12:56:41)
MS-Windows 64 ビット GUI 版
適用済パッチ: 1-596
Modified by koron.kaoriya@gmail.com

具体的に困っていること

Vimで開いているバッファーを起動済みのVisual Studio(2008)で開きたいです。

調べてみたところ、visual_studio.vimというプラグインを入れれば
vimで開いているバッファーを起動済みのVisual Studioで開けるようなのですが、
visual_studio.vimはpython依存のようで、仕事の都合上pythonが導入できない
私には使用できません。

(cmd.exeからの起動方法がわかればVim scriptの:executeを使用して、どうにかなるのかな。と考えています)

お手数をおかけしますが、ご確認をお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

こちらを使ってみて下さい。

https://github.com/mattn/vim-vsopen

python 非依存です。Vim でファイルを開いた状態で :VSOpen とすると Visual Studio で開きます。
作りたてホヤホヤなので動かない可能性があります。

投稿2017/07/03 02:50

編集2017/07/04 04:25
mattn

総合スコア5030

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rapan931

2017/07/05 04:35

回答ありがとうございます。また、プラグインの提供ありがとうございます! 対応が遅くなってしまいましたが、試してみました。 &packpath/*/start配下にvim-vsopenを配置して:VSOpenを実行したところ、vsopen.vimの一行目は自分の環境ではうまく動かなかったので、手元で以下に修正しました。 let g:vsopen_script = expand('<sfile>:p:r:gs!\\!/!') . '.vbs' 上記、修正後はvsopen.vbsがうまく見つけられるようになったようなのですが、次はvbs側でエラーが 発生してしまいました。 行: 1 文字: 1 エラー: ActiveXコンポーネントはオブジェクトを作成できません。: 'GetObject' コード: 800A01AD ソース: Microsoft VBScript 実行時エラー vbs側のエラーですが、こちら私の環境がExpress Editionのせいか、GetObject("", "VisualStudio.DTE")がうまくいってないようです。試しにGetObject("", "VCExpress.DTE")に変更しても同じエラーが表示されてしまいました。。解決方法わかりますでしょうか? お手数をおかけしますが、ご確認をお願いいたします。
mattn

2017/07/05 04:39

WDExpress.DTE で試して貰えますか?
mattn

2017/07/05 04:40

もしそれで動くようならプラグイン側に手をいれます。
rapan931

2017/07/05 05:00

WDExpress.DTE で試してみましたが、VisualStudio.DTEの時と状況変わらずでした。。
rapan931

2017/07/05 05:09

試してみましたが、VWDExpressでも状況変わらずです。。
mattn

2017/07/05 05:10

だめかー。残念。ありがとうございました。
rapan931

2017/07/05 05:16

いえ、調査とプラグインの作成ありがとうございました!
guest

0

以下はVS2017のものですが、devenv.exeにパスを通して開きたいファイルを引数を渡しで上げれば、
プロジェクトやソリューション以外の単一のファイルも開けると思います。

2017では適当なファイルを指定したら開けました。

Microsoft Visual Studio 2017 バージョン 15.0.26430.12. Copyright (C) Microsoft Corp. All rights reserved. 使い方: devenv [solutionfile | projectfile | anyfile.ext] [switches] devenv の最初の引数は通常ソリューション ファイルまたはプロジェクト ファイルです 。 それ以外のファイルでも、 エディターで自動的に開くように最初の引数にそのファイル を指定することも できます。プロジェクト ファイルを指定すると、IDE は、プロジェクト ファイルの親デ ィレク トリにある、プロジェクト ファイルと同じベース名を持つ .sln ファイルを探します。 そのような .sln ファイルが存在しない場合は、 IDE は、プロジェクトを参照する 単一の .sln ファイルを探します。そのような単一の .sln ファイルが存在しない場合は 、 プロジェクト ファイルと同じベース名を含む 既定の .sln ファイル名と共に保存されていないソリューションを作成します。 コマンド ラインでのビルド: devenv solutionfile.sln /build [ solutionconfig ] [ /project projectnameorfile [ /projectconfig name ] ] 使用できるコマンド ラインのスイッチ: /Build 指定されたソリューション構成でソリューションまたはプロジェクトを ビルドします。例: "Debug" 複数のプラットフォームが可能な場合は、構成名を引用符で囲み、 プラットフォーム名を入れます。例: "Debug|Win32" /Clean ビルド出力を削除します。 /Command IDE を開始してコマンドを実行します。 /Deploy ビルドしてから指定されたソリューション構成を配置します。 /Edit このアプリケーションの実行されているインスタンス内の指定 されたファイルを開きます。実行されているインスタンスがない場 合、簡易ウィンドウ レイアウトで新しいインスタンスを開きます。 /LCID IDE の既定の言語を UI に設定します。 /Log トラブルシューティングのため、指定されたファイルに IDE 動作のロ グを記録します。 /NoVSIP VSIP テスト用の VSIP 開発者ライセンス キーを無効にします。 /Out 指定されたファイルにビルド ログを書き込みます。 /Project ビルド、クリーン、または配置するプロジェクトを指定します。 /Build、/Rebuild、/Clean または /Deploy と共に使用します。 /ProjectConfig ソリューション構成で指定されたプロジェクト構成をオーバーライド します。例: ""Debug"" 複数のプラットフォームが可能な場合は、構成名を引用符で囲み、 プラットフォーム名を入れます。例: ""Debug|Win32"" /Project と共に使用します。 /Rebuild クリーンを実行してから指定された構成でソリューションまたはプロジ ェクトを ビルドします。 /ResetSettings IDE の既定の設定を復元し、オプションで指定された VSSettings ファイルにリセットします。 /ResetSkipPkgs VsPackages に追加された SkipLoading タグすべてをクリアします。 /Run 指定されたソリューションをコンパイルし実行します。 /RunExit 指定されたソリューションをコンパイルし実行してから IDE を終了し ます。 /SafeMode 最低限の Windows を読み込んで、IDE をセーフ モードで起動します。 /Upgrade プロジェクト、またはソリューションとその中のプロジェクトすべてを アップグ レードします。これらのファイルのバックアップは必要に応じて作成さ れます。 バックアップ処理に関する詳細については、Visual Studio 変換ウィザ ード についてのヘルプを参照してください。 製品固有のスイッチ: /debugexe 指定されたデバッグ対象の実行ファイルを開きます。コマンド ライン の 残りの部分は、この実行ファイルに引数として渡されます。 /diff 2 つのファイルを比較します。4 つのパラメーターを受け取ります: ソース ファイル、ターゲット ファイル、ソース表示名 (省略可能)、 ターゲット表示名 (省略可能) /TfsLink チーム エクスプローラーを開き、指定の成果物 URI が登録 されている場合はそのビューアーを起動します。 /useenv VC++ のビルドの IDE パスではなく、 PATH、INCLUDE、LIBPATH、および LIB 環境変数を使用します。 コマンド ラインからデバッガーをアタッチするには、次を使用してください: VsJITDebugger.exe -p <pid>

追記

2008 Expressは未確認ですが、

指定したソリューションとその中の指定したファイルを新規のIDEで開く(指定したソリューションが既に開かれている場合、新規にIDEを開いてテキストファイルとして.slnファイルを開き、既存のIDEで指定したファイルを開く)
devenv <フルパス>\***.sln <フルパス>\***.cpp

開かれているIDEに指定したファイルがあったらそのIDE内で開く(開いているIDEが複数ある場合は未確認です)
devenv <フルパス>\***.cpp /edit

VCExpressは機能限定版でVCも2008と古いバージョンなので、もしかしたら/editコマンドが無いかもしれません(コマンドラインのヘルプにも載ってないみたいですし)。

あと、devenv(VCExpress)をコマンドラインから拡張子付きで実行する場合はdevenv.comの方が良いかもしれません。
.exeの方はIDE本体のGUIアプリケーションで.comは、.exeとコマンドラインのやり取りを行なうインターフェイスの様な感じになっているので。

投稿2017/06/15 10:53

編集2017/06/16 01:55
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rapan931

2017/06/16 00:00 編集

回答ありがとうございます。 Express Edition のためか、devenv.exeはなかったです。ただ、VCExpress.exeというものはありました。(https://stackoverflow.com/questions/7818543/no-devenv-file-in-microsoft-visual-express-10) 試しにVCExpress.exe <ファイル名>をcmd.exeから実行したのですが、Visual Studioの簡易エディターが開いてしまいました。。 起動している(slnファイルを読み込んでいる)Visual Studioで開きたかったのですが、 実現方法わかりますでしょうか?VCExpress.exeのヘルプを以下に記載します。 ================== 使い方: vcexpress [solutionfile | projectfile | anyfile.ext] [switches] devenv の最初の引数は通常ソリューション ファイルまたはプロジェクト ファイルです。 それ以外のファイルでも、エディタで自動的に開くように最初の引数にそのファイルを指定することも できます。プロジェクト ファイルを指定すると、IDE は、プロジェクト ファイルの親ディレク トリにある、プロジェクト ファイルと同じベース名を持つ .sln ファイルを探します。 そのような .sln ファイルが存在しない場合は、IDE は、プロジェクトを参照する 単一の .sln ファイルを探します。そのような単一ファイルが存在しない場合は、 プロジェクト ファイルと同じベース名を含む 既定の .sln ファイル名と共に保存されていないソリューションを作成します。 コマンド ラインでのビルド: devenv solutionfile.sln /build solutionconfig [ /project projectnameorfile [ /projectconfig name ] ] 使用できるコマンド ラインのスイッチ: /Log トラブルシューティングのため、指定されたファイルに IDE 動作のログを記録します。 /ResetSettings IDE の既定の設定を復元し、オプションで指定された VSSettings ファイルにリセットします。 /SafeMode 最小数のウィンドウを読み込んで、IDE をセーフ モードで起動します。 製品固有のスイッチ: /debugexe デバッグするように指定された実行ファイルを開きます。 コマンド ラインの残りの部分は この実行ファイルにその引数として渡されます。 /useenv VC++ のビルドの IDE パスではなく、 PATH、INCLUDE、LIBPATH、および LIB 環境変数を使用します。 コマンド ラインからデバッガをアタッチするには、次を使用してください: VsJITDebugger.exe -p <pid> ==================
rapan931

2017/06/16 02:38

情報の追記ありがとうございます。 > devenv <フルパス>\***.sln <フルパス>\***.cpp こちらについてはVCExpressで実行することができました! > devenv <フルパス>\***.cpp /edit まさに行いたいことはこちらなのですが、推測されているとおりVCExpressには/editはないため、VCExpressでは実行できませんでした。。以下エラーメッセージが表示されてしまいます。 コマンド ラインが無効です。不明なスイッチ: edit
guest

0

explorer.exeにファイルを渡して上げると、そのファイルに関連づいたプログラムで起動できます。

投稿2017/06/15 09:44

rbtnn

総合スコア57

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rapan931

2017/06/15 10:01 編集

回答ありがとうございます。 ただ、基本的にはソースを書く際にgvim.exeを使用しているので、explorer.exe <ファイル>で実行すると、gvimで起動してしまい、期待する動作ではなかったです。。 (gvimで開いているファイルに、ブレークポイントを張りたい時など、たまにgvimで開いているファイルをVisual studioで開くことがあって。。)
rbtnn

2017/06/15 10:17

それはたぶん、そのファイルの関連付けがVimになっているからで、Visual Studioに関連付けをすればいけるんじゃないかと…
rapan931

2017/06/15 10:24 編集

すみません。私の説明が不足していました。 関連付けはvimから変えたくはありません。(基本的にはvimでソースをいじっているので) ただvimで開いていているファイルをvimのコマンドでどうにかしてVisual Studioで開きなおしたいのです。 Visual Studioで開いているファイルをvimで開く。という機能については実現できているのですが、逆ができなくて。。 参考: http://nanasi.jp/articles/howto/coding/vim_vs_net_cmd.html
rbtnn

2017/06/15 10:24

デバッグしたいのであれば、たぶんそのファイルをVSで開けたとしても、実行出来ないのではないかと思うのですが… どうなんでしょう?
rapan931

2017/06/15 10:38 編集

すみません。おっしゃっていることが余り理解できていません。。。 ただ、以下のようなワークフローが非常に多くて、vimで開いているファイルを Visual Studioで開きたくなったのです。 1. xxxxファイルをVisual Studioで開きたい。 2. vimの:Unite file_mruを使ってxxxxファイル見つける & ファイルのパスコピー 3. Visual Studioに移動して、手順2でコピーしたファイルのパスを使ってファイルを開く 手順3が簡略できればいいなーという思いからの質問でした。
rapan931

2017/06/16 00:03

> > デバッグしたいのであれば、たぶんそのファイルをVSで開けたとしても、実行出来ないのではないかと思うのですが… > すみません。おっしゃっていることが余り理解できていません。。。 理解できました。 lunateaさんの回答にも書いたのですが、起動している(slnファイルを読み込んでいる)Visual Studioで開きたいのですが、簡易エディタみたいなところで開いてしまいますね。。 実現難しそうな感じですかね。。
退会済みユーザー

退会済みユーザー

2017/06/16 00:57

VSのIDEでソリューションを開いた状態で、vimでソリューション内のファイルを編集→単一のファイルを新規のIDE上に開くのではなく、ソリューションを開いたのと同じIDEに、編集内容を反映させた上で表示したいということでしょうか?
rapan931

2017/06/16 01:14

> ソリューションを開いたのと同じIDEに、編集内容を反映させた上で表示したいということでしょうか? 説明が足りておらずすみません。yesです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問