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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Vim

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

Q&A

解決済

2回答

3413閲覧

vim-quickrunでC++ファイルが実行できない

terai

総合スコア15

Vim

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

0グッド

0クリップ

投稿2017/01/21 16:23

編集2017/01/21 23:39

###前提・実現したいこと
Vimプラグインのvim-quickrunを使って、C++のプログラムを実行させたいです。
しかしエラーが出てしまい実行できません。何か設定に問題があるのでしょうか。
###発生している問題・エラーメッセージ
次のようなエラーメッセージが出て実行できません。

'"D:\dev\hello"' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。

###該当のソースコード
実行させようとしていたC++のプログラムは以下です。

cpp

1/* hello.cpp */ 2#include <iostream> 3 4int 5main(int argc, char* argv[]) { 6 std::cout << "hello" << std::endl; 7 return 0; 8}

###試したこと
別の言語はどうだろうと思い、試しに次のようなCプログラムに対して実行してみたところ、これはうまく動きました。

C

1#include <stdio.h> 2 3int 4main(int argc, char* argv[]) { 5 printf("hello\n"); 6 return 0; 7}

###補足情報(言語/FW/ツール等のバージョンなど)

  • OS: Windows 10 64bit
  • Vimバージョン: 8.0.134
  • C++コンパイラ: msys2のmingw-w64-x86_64-clang++
  • PATH: C:\Program Files\Vim;C:\msys64\mingw64\bin;C:\msys64\usr\bin\;C:\Windows\System32

C:\Program FIles\Vimに上記のバージョンのVimが置いてあります。

作業手順:
1. cmd.exe上からvim hello.cppを実行してファイルを開く
2. vim-quickrunを実行のために、\rをタイプする

_vimrcは以下です。

VimL

1let g:quickrun_config={ 2 \ '_': { 3 \ 'hook/output_encode/encoding': 'cp932', 4 \ }} 5 6set runtimepath+=~/vimfiles/vim-quickrun 7filetype plugin indent on 8syntax enable 9

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

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

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

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

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

guest

回答2

0

ベストアンサー

あなたが期待しているプログラム(コンパイラ)を、quickrun.vim が使っていないのだと思います。
:QuickRun -debug x のように quickrun を実行すると、g:x に実行情報が格納されます。:echo g:x.commands で、実際に実行されているコマンドを確認してみてください。期待通りでない場合、quickrun の設定が必要です。設定方法については別途 help などを参照してみてください。

投稿2017/01/22 14:35

thinca

総合スコア1864

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

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

terai

2017/01/23 04:08 編集

ご回答有り難うございます。 実行した結果は、 ```['"C:\msys64\mingw64\bin\clang++.EXE" "C:\dev\hello.cpp" -o "C:\dev\hello"', '"C:\dev\hello" ']``` となっていました。 また、うまく行っていたC言語の方は、 ```['"C:\msys64\mingw64\bin\gcc.EXE" "C:\dev\hello.c" -o "C:\dev\hello"', '"C:\dev\hello" ']``` となっていました。 得られたコマンドをcmd.exe上で実行したところ、gcc.EXEの方は、"hello.exe"が、 clang++.EXEの方は"hello"という実行ファイルができていました。 clang++.EXEのときに拡張子".exe"がつかないのが原因のように思っています。 また、vim-quickrunはC++ファイルコンパイルに際して、 Windowsでも".exe"をつけないのがデフォルトのようであるので、 試しに、g:quickrun_configを、 ``` let g:quickrun_config={ \ '_': { \ 'hook/output_encode/encoding': 'cp932', \ }, \ 'cpp': { \ 'exec': ['%c %o %s -o %s:p:r.exe', '%s:p:r %a'], \ }} ``` と".exe"付きのファイルを指定するとうまく動きました。 ありがとうございました。
guest

0

あてずっぽうになってしまうかもしれませんが。shellslash を設定されておられないでしょうか。shellslash を設定している場合、shell オプション含めてすべて UNIX 環境でそろえなければなりません。それが出来ない場合は noshellslash を設定して下さい。

投稿2017/01/21 17:25

mattn

総合スコア5030

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

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

terai

2017/01/21 23:48 編集

ご回答ありがとうございます。 質問文中の_vimrcの一行目に"set noshellslash"を付け加えてみましたところ、同様の結果となってしまいました。 _vimrcは上記の内容のまま使っています。 他に付け加えるべき情報等があればご教示いただけると幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問