30

基本的に私が欲しいのは、現在編集中の C、C++、または Python プログラムを [コンパイルして] 実行できる vim のキーボード ショートカットです。擬似コード:

when a shortcut key is pressed:
    if current_extension == 'c' then
        shell: gcc this_filename.c -o this_filename_without_extension
        if retcode == 0 then shell: ./this_filename_without_extension
    else if current_extension == 'cpp' then
        shell: g++ this_filename.cpp -o this_filename_without_extension
    if retcode == 0 then shell: ./this_filename_without_extension
    else if current_extension == 'py' then
        shell: python this_filename.py
    end if
end key

私は少し多くを求めているかもしれませんが、これが可能であればそれが大好きです!

4

6 に答える 6

41

このようなものがうまくいくでしょう。<F4>そのマップまたは保存したいファイルタイプのautocmdを作成し、プログラムをコンパイルして実行します。exec を使用して文字列を作成し、shellescape を使用してファイル名をエスケープします。

autocmd filetype python nnoremap <F4> :w <bar> exec '!python '.shellescape('%')<CR>
autocmd filetype c nnoremap <F4> :w <bar> exec '!gcc '.shellescape('%').' -o '.shellescape('%:r').' && ./'.shellescape('%:r')<CR>
autocmd filetype cpp nnoremap <F4> :w <bar> exec '!g++ '.shellescape('%').' -o '.shellescape('%:r').' && ./'.shellescape('%:r')<CR>

%現在のバッファファイル名です。%:r拡張子なしのバッファファイル名

于 2013-08-18T06:15:10.903 に答える
1

これは私の地図です。実際に機能し、任意の言語に更新できます。

" <!----------------------------" gcc compile C files----------------------------------------!>
autocmd filetype c nnoremap <Leader>c :w <CR>:!gcc % -o %:r && ./%:r<CR>

" <!----------------------------" java compile files----------------------------------------!>
autocmd filetype java nnoremap <Leader>c :w <CR>:!javac % :r&& java %:r<CR>
" <!----------------------------" php compile files----------------------------------------!>
autocmd filetype php nnoremap <Leader>c :w <CR>:!clear && php  %<CR>

あなたがvimのこれらのファイルの1つである場合は、通常モードで実行してください:

<leader>c
于 2015-05-19T11:05:56.167 に答える