簡體   English   中英

在Vim中更有效地編譯Java代碼

[英]Compiling Java code in Vim more efficiently

我來自Eclipse背景,但我喜歡Vim作為文本編輯器。 我目前正在嘗試將Vim作為Java IDE。 目前我這樣編譯:

! javac MyClass.java

其次是

! java -cp . MyClass

如果我有編譯錯誤,我必須回到編譯輸出使用! 並手動跳轉到產生錯誤的每一行。 一旦我開始添加其他類,我就必須分別編譯它們。

必須有一種比這更有效的方法。 在我目前效率低下的Vim工作流程中,我可以在圖形IDE中更快地完成工作,這比我使用Vim的目的更好。

我希望能夠輸入類似的東西:compile在包含我的main方法的類中編譯來編譯我的所有源代碼,並顯示錯誤消息的分屏列表。 你會推薦什么?


相關,但與我個人無關


更新 :我從這個問題中得到的結論是作為一個單獨的答案發布的。

根據要求,我已經將這個問題作為一個單獨的答案發布了。


這是我如何使用每個人的建議。

快速完成編譯錯誤

將其添加到~/.vimrc

autocmd Filetype java set makeprg=javac\ %
set errorformat=%A%f:%l:\ %m,%-Z%p^,%-C%.%#
map <F9> :make<Return>:copen<Return>
map <F10> :cprevious<Return>
map <F11> :cnext<Return>

F9編譯,F10 / F11循環錯誤。

如果你不在java類中使用任何包,那么

//compile
:!javac %

//run
:!java -cp %:p:h %:t:r

映射.vimrc文件中的F5以自動化構建

map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
if &filetype == 'c'
exec "!gcc % -o %<"
exec "!time ./%<"
elseif &filetype == 'cpp'
exec "!g++ % -o %<"
exec "!time ./%<"
elseif &filetype == 'java'
exec "!javac %"
exec "!time java -cp %:p:h %:t:r"
elseif &filetype == 'sh'
exec "!time bash %"
elseif &filetype == 'python'
exec "!time python2.7 %"
elseif &filetype == 'html'
exec "!firefox % &"
elseif &filetype == 'go'
exec "!go build %<"
exec "!time go run %"
elseif &filetype == 'mkd'
exec "!~/.vim/markdown.pl % > %.html &"
exec "!firefox %.html &"
endif
endfunc

這里是用於使用javac進行編譯的vim wiki文章。

使用Makefile,您可以使用一些非常通用的東西:

JAVAFILES=$(wildcard *.java)

mytarget: $(JAVAFILES)
    javac $^

另一方面,你可能會做得很好

:compiler javac
:se makeprg=javac\ **/*.java
:make
:copen

將一些鍵映射到:cnext:cprevious快速導航錯誤。

使用:colder / :cnewer返回早期/晚期的quickfix列表。 Quickfix將記住quickfix堆棧中特定quickfix列表的位置。

如果你運行linux(使用bash),這是我的設置:編譯並運行你的主文件類只需在你的vimrc文件中包含它

nnoremap <leader>ac :cd %:p:h <CR> :! javac %:t<CR> :! java %:t:r<CR>

讓我向您介紹此代碼的工作原理。 當您按下前導鍵后跟a和c(\\ ac)時,代碼將更改為在vim中打開的當前文件的目錄(可能是您的主要文件)。 然后,代碼編譯yourfile.java(%:t)。 最后,代碼運行你的主文件yourfile(%:t:r)。 <CR>代表回車,相當於回車。 這種方法也適用於開發具有多個類的項目,因為您可以在上面的行中添加更多代碼,以便在運行main之前編譯其他類。

暫無
暫無

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

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