2012-06-14 2 views
6

Chciałbym móc zbudować i uruchomić kod Go z poziomu vima z dostępem do okna quickfix, jeśli wystąpią błędy kompilacji.Vim makeprg i errorformat dla Go

Aby osiągnąć coś podobnego do tego z Java I dodaje następujące do mojego .vimrc:

autocmd Filetype java set makeprg=ant\ -find\ build.xml 
autocmd Filetype java set efm=%A\ %#[javac]\ %f:%l:\ %m,%-Z\ %#[javac]\ %p^,%-C%.%# 

Mam następujący obecnie dla idź w moim .vimrc:

autocmd Filetype go set makeprg=go\ run 

co mogę musisz zrobić :make (lub :make %) zachowywać się tak, jakby był to dobry program "ol C" z ładnym raportowaniem błędów i wyjściem poniżej bufora?

+0

Potrzebny jest plik kompilatora dla 'ant' ... musi już istnieć. Czy próbowałeś Google? Istnieją również przewodniki dotyczące używania vima jako IDE dla Javy; konfiguracja powinna być taka sama, poza tym, że używasz składni golang. – kprobst

+1

O ile wiem, ant jest tylko dla Javy, nie Go (która nie ma związku z Javą, nie używa JVM itp.). Używałem Javy jako przykładu tego, co zrobiłem dla innego języka. – lyallcooper

+1

Kiedyś próbowałem utworzyć linię 'errorformat' dla NAnt ... i poddałem się. Jest zbyt tajemniczy i trudny do przetestowania iteracyjnie, podobnie jak większość skryptów Vima. Uwielbiam vima, ale są pewne rzeczy, które są frustrujące, szczególnie dlatego, że wiem, że można to zrobić. To zbyt trudne i niewystarczające przykłady nowszych, nie-unikowych rzeczy. – kprobst

Odpowiedz

3

W przypadkach, gdzie jest twój bieżący katalog roboczy składa się z jednego programu lub biblioteki, następujące współpracuje z Vima:

autocmd Filetype go set makeprg=go\ build 

W przypadkach, gdy istnieje tylko jeden plik, który chcesz skompilować, zastąpić to z :

:set makeprg=go\ build\ hello.go 

Więcej można znaleźć na stronie jnwhiteh's vim-golang.

+0

Ale co z raportowaniem błędów i oknem quickfix? – lyallcooper

+0

Och, a także, co robię, to po prostu oddzielne polecenie, które wywołuje ': make%', a następnie otwiera okno quickfix z ': copen', zwykle odwzorowane na klucz taki jak F7. ('map : make% : copen '). – lyallcooper