簡體   English   中英

Vim鍵映射可針對Java和C代碼進行編譯和運行

[英]Vim key mapping compile and run for Java and C code

這是我的.vimrc中的行的樣子:

autocmd FileType python nnoremap <buffer> <F9> :exec '!python' shellescape(%)<cr>
autocmd FileType java nnoremap <buffer> <F9> :exec '!javac' shellescape(%) && '!java' shellescape(%:r)<cr>
autocmd FileType c,cpp nnoremap <buffer> <F9> :exec '!gcc' shellescape(%) && './a.out'<cr>

Python映射執行良好。 Java映射可以編譯,但是不會運行。 我不確定我的語法是否正確。 我不知道地圖的C版本是怎么回事...它不斷顯示以下消息:

"error: Class names, 'test.C,test', are only accepted if annotation processing is explicitly requested"

有人知道發生了什么嗎?

您是對的,語法略有錯誤(對於所有語法!)。 如果您打算發出兩個:! 呼叫,這些必須由|分隔| (在映射中轉義的<Bar> ),而不是&&

autocmd FileType java nnoremap <buffer> <F9> :exec '!javac' shellescape(%) <Bar> exec '!java' shellescape(%:r)<cr>

但是最好通過一個調用來做到這一點: &&必須加引號,以便它由:!啟動的shell求值:! ,而不是Vim:

autocmd FileType java nnoremap <buffer> <F9> :exec '!javac' shellescape(%) '&& java' shellescape(%:r)<cr>

此外,特殊%關鍵字僅在命令行中直接識別,而在:execute表達式中使用時則無法識別。 您需要使用expand()包裝它。 哦, shellescape()應該再收到一個額外的標志,以確保:! 逃跑。

autocmd FileType java nnoremap <buffer> <F9> :exec '!javac' shellescape(expand('%'), 1) '&& java' shellescape(expand('%:r'), 1)<cr>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM