Ответ 1
Здесь vim wiki для компиляции с javac.
Я родом из фона Eclipse, но я люблю Vim как текстовый редактор. В настоящее время я экспериментирую с Vim как Java IDE. В настоящее время я делаю это для компиляции:
! javac MyClass.java
за которым следует
! java -cp . MyClass
Если у меня есть ошибки компиляции, я должен вернуться к выходу компилятора с помощью !
и вручную перейти к каждой строке, вызвавшей ошибку. И как только я начинаю добавлять другие классы, мне приходится составлять каждый из них отдельно.
Там должен быть более эффективный путь, чем это. Под моим текущим неэффективным рабочим процессом Vim я могу быстрее сделать материал в графической среде IDE, которая превосходит цель использования Vim для меня.
Я хотел бы иметь возможность вводить что-то вроде :compile
в классе, содержащем мой основной метод, для компиляции всех моих источников и представления списка сообщений об ошибках. Что бы вы порекомендовали?
Связанный, но не имеющий отношения ко мне лично:
Обновить. Мой ответ на этот вопрос отправлен как отдельный ответ.
Здесь vim wiki для компиляции с javac.
По просьбе я отправил свой вынос из этого вопроса в качестве отдельного ответа.
Вот как я использовал все советы.
Добавьте это в ~/.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
отобразите F5 в файле .vimrc, чтобы автоматизировать сборку
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
С помощью Makefile вы можете использовать некоторые общие вещи:
JAVAFILES=$(wildcard *.java)
mytarget: $(JAVAFILES)
javac $^
С другой стороны, вы, вероятно, отлично сделали бы
:compiler javac
:se makeprg=javac\ **/*.java
:make
:copen
Сопоставьте некоторые клавиши с :cnext
и :cprevious
, чтобы быстро перемещаться по ошибкам.
Используйте :colder
/:cnewer
, чтобы вернуться к более ранним/поздним спискам быстрого исправления. Quickfix будет помнить, где в стек быстрого исправления вы были для определенного списка fastfix.