在Vim中更有效地编译Java代码

Pie*_*ter 22 java vim

我来自Eclipse背景,但我喜欢Vim作为文本编辑器.我目前正在尝试将Vim作为Java IDE.目前我这样编译:

! javac MyClass.java
Run Code Online (Sandbox Code Playgroud)

其次是

! java -cp . MyClass
Run Code Online (Sandbox Code Playgroud)

如果我有编译错误,我必须回到编译器输出!并手动跳转到产生错误的每一行.一旦我开始添加其他类,我就必须分别编译它们.

必须有一种比这更有效的方法.根据我目前的低效率的Vim的工作流程,我可以得到的东西在图形IDE,它胜过使用议会为我的目的更快地完成.

我希望能够输入类似于:compile包含我的main方法的类来编译我的所有源代码,并显示错误消息的分屏列表.你会推荐什么?


相关,但与我个人无关:


更新:我从这个问题中得到的结论是作为一个单独的答案发布的.

Pie*_*ter 13

根据要求,我已经将这个问题作为一个单独的答案发布了.


这是我如何使用每个人的建议.

快速完成编译错误

将此添加到~/.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>
Run Code Online (Sandbox Code Playgroud)

F9编译,F10/F11循环错误.


rek*_*nyz 8

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

//compile
:!javac %

//run
:!java -cp %:p:h %:t:r
Run Code Online (Sandbox Code Playgroud)

映射.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
Run Code Online (Sandbox Code Playgroud)


jam*_*pag 6

这里是用于使用javac进行编译的vim wiki文章.