VimでCプログラムをコンパイルするが、現在のディレクトリにコンパイルしない方法は?

VimでCプログラムをコンパイルするが、現在のディレクトリにコンパイルしない方法は?

だから私がしばらくVimで使ってきたコマンドは次のようになります:

map <F10> :w<CR> :!clear; make %<<CR> :!./%<<CR>

ファイルの現在の名前を取得してコンパイルして実行します。しかし、これは私のディレクトリを汚染し、それをgithubにアップロードするには、アップロードする前に拡張子のないすべてのファイルを削除する必要があります。

私がやりたいことは、それらをすべて次のようにコンパイルすることです。ゴミ箱ディレクトリなので、コマンドを次のように修正してみました。

map <F10> :w<CR> :!clear; make -C bin %<<CR> :!./bin/%<<CR>

コマンドがディレクトリを変更していることがわかりますが、-Cエラーが発生して動作しません。

*** no rule to make target '17'. Stop. 

このコマンドを機能させるにはどうすればよいですか?

map <F10> :w<CR> :!clear; make -C bin %<<CR> :!./bin/%<<CR>

ベストアンサー1

:makeVimのコマンドとオペレーティングシステムの実行可能ファイルを混同していますmake(1)。 Vimのコマンドラインに入力すると、makeVimのコマンドが実行されます:make。これの効果の1つは、Vimのoptionsで定義されているオペレーティングシステムコマンドを実行することですmakeprg

これでmakeprgデフォルト値があるため、makeオペレーティングシステムのコマンドmake(1)も実行されます。ただし、Vimのコマンドは:makeオプションを受け入れないため、-C binVimのコマンドラインを渡してもVimが実行されているわけではありませんmake -C bin。実行されるオペレーティングシステムのコマンドを変更するには、次の手順を実行する必要があります。

let &makeprg = 'make -C /path/to/bin'

その後、Vimでそれを実行すると:makeOSコマンドが実行されますmake -C /path/to/bin

しかし、コメントで指摘したように、この問題を処理するためのより良い方法は、最初から問題を回避し、関係のないすべてのファイルを.gitignore。 Gitリポジトリ。

おすすめ記事