[英]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.