このコマンドを使用します:!g++ % -g -lm && a.exe & pause 結果は新しいコマンド プロンプトに表示されます。gvim7.3 を使用しています。VIM で結果を同じウィンドウ (水平分割) に表示するにはどうすればよいですか? 前もって感謝します。
3 に答える
2
:make then:copenがトリックを実行する必要があります。:ccloseを使用してウィンドウを閉じることもできます。
于 2012-06-02T00:10:51.563 に答える
1
これを試して:
:new +r\ !g++\ #\ -g\ -lm
これにより、新しい「ウィンドウ」が開き、g++ コマンドの出力が読み込まれます。新しいバッファに切り替えるため、% の代わりに # を使用する必要があることに注意してください。
&& を機能させる方法がわからないので、コンパイルして実行するスクリプトを作成するだけです。
ファイルを保存せずにそのウィンドウを閉じることができるように、「set nomod」も実行することをお勧めします。
于 2012-06-02T00:20:16.990 に答える
0
my から、.vimrc
あなたが望むものと同様の機能。私は gvim ではなく vim を使用しているので、作業ディレクトリには同じ規則が使用されていることを願っています。filetype
自動コマンドを機能させるには、プラグインを使用する必要があります(関数が呼び出します<F6>
ので、注意してください)。コンパイル エラーが発生した場合、これはクイックフィックス モードに切り替わります。また、入力ファイルが存在する状態でプログラムを実行します(その機能を削除する方法は明らかです)。非常に進行中の作業なので、コメントは大歓迎です!
function! MakeAndRun()
w
let progName = expand('%:r')
if filereadable(progName . '.in')
let shCmd = 'time ./' . progName . ' < ' . progName . '.in 2>&1'
else
let shCmd = 'time ./' . progName . ' 2>&1'
endif
execute "normal \<F6>"
call setqflist([])
redraw | echo 'Compiling ' . progName
silent! belowright new Run\ results
setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap nonumber
autocmd WinEnter <buffer> if winnr('$') == 1 | :q! | endif
execute 'silent %! make ' . progName
if v:shell_error
setlocal buftype=quickfix
cbuffer
execute 'wincmd p'
setlocal statusline=%qRun\ results
else
resize 4
redraw | echo 'Running program...<CTRL-C> to abort'
execute 'silent $read !'. shCmd
endif
normal gg
execute 'resize ' . min([12, line('$')+1])
execute 'wincmd p'
endfunction
autocmd FileType cpp nnoremap <buffer> <F5> :call MakeAndRun()<CR>
autocmd FileType cpp nnoremap <buffer> <silent> <F6> :if bufexists('Run results')\
\| execute bufwinnr('^Run results$') . 'wincmd w'\
\| :q!\
\| endif<CR>
autocmd FileType cpp imap <buffer> <F5> <C-O><F5>
autocmd FileType cpp imap <buffer> <F6> <C-O><F6>
于 2012-06-02T03:40:51.090 に答える