2016-03-31 8 views
0

私はvimで編集しているCファイルをコンパイルして実行するコマンドを持っています。どうしたらいいですか?ファイル名に.cがあるため、以下は動作しません。私は:!make && ./filenameを使用している場合vimでコンパイルして実行するには?

:map <leader>m :!make && ./% 

私はあまりにも垂直分割ウィンドウで溶液を見てみたいと思いますので、出力を移動する方法がわかりません。

答えて

0

あなたのシェルエスケープ:map <leader>m :!make && ./%は、処理するMakefileを検索するmakeプログラムを呼び出します。 Makefileのレシピは、プログラムのコンパイル方法と、最終実行可能ファイルの名前の記述方法です(省略された場合はデフォルトでa.outになります)。 編集中のファイル名(%)は、希望の実行可能ファイル名と同じ接頭辞を持つ可能性がありますが、これは保証されていません。

.PHONY: all 

all: executablename runlog 

executablename: executablename.c 
     cc -o executablename executablename.c 

runlog: executablename 
     ./executablename >runlog 
:自動コンパイル後に実行され、一時ファイルにあなたの実行可能ファイルの出力をリダイレクトし、例えばされたMakefileのレシピを書き、コンパイル、実行、およびスプリット・ウィンドウにプログラムの出力を編集するには

8つのインデントスペースは、Makefileが機能するためにタブに置き換える必要があることに注意してください。

リファレンスあなたのマッピングに一時ファイル:^MはCtrl +戻るを入力してから茎 :map <leader>m :!make^M:sp runlog^M

+0

リーダーのショートカットで保存された時間は、余分なファイルを削除するのに費やされます。 –

+0

Makefile内のシェルリダイレクト_> runlog_が毎回_runlog_を上書きするため、このファイルを削除する必要はありません。ファイルが気になる場合は、_/tmp/runlog_cleaned_up_by_system_にリダイレクトするか、Makefileのきれいなレシピに削除を追加してください。私はリーダーのマッピング(通常のマッピングと比較して)で時間を節約するというあなたの意図を理解していないだけでなく、私の理解のリーダーには、あなた自身のマッピングのための便利な名前空間です。 – 149

+0

同じMakefileでコンパイルするために別のプログラムを用意しなければならないとどうしたらいいですか?ファイル名から.filetypeを除いた名前を使用する方法はありませんか? –

関連する問題