3

このコマンドを使用します:!g++ % -g -lm && a.exe & pause 結果は新しいコマンド プロンプトに表示されます。gvim7.3 を使用しています。VIM で結果を同じウィンドウ (水平分割) に表示するにはどうすればよいですか? 前もって感謝します。

4

3 に答える 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 に答える