2012-06-14 20 views
6

Tôi muốn có thể xây dựng và chạy mã Go từ bên trong vim với quyền truy cập vào cửa sổ quickfix nếu có lỗi biên dịch.Vim makeprg và errorformat cho Go

Để đạt được một cái gì đó gần với Java tôi đã thêm dòng sau vào vimrc của tôi:

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

Tôi có hiện sau cho Go trong vimrc của tôi:

autocmd Filetype go set makeprg=go\ run 

gì tôi có thể phải làm cho :make (hoặc :make %) hành động như nó sẽ cho một chương trình 'ol C tốt với báo cáo lỗi khá và đầu ra bên dưới bộ đệm?

+0

Những gì bạn cần là một tệp trình biên dịch cho 'ant' ... đã có một trong số đó. Bạn đã thử Google chưa? Ngoài ra còn có hướng dẫn sử dụng vim như một IDE cho Java; cấu hình phải giống nhau, ngoại trừ bạn đang sử dụng cú pháp golang. – kprobst

+1

Theo như tôi biết kiến ​​chỉ dành cho Java, không phải Go (không liên quan đến Java, không sử dụng JVM, v.v.). Tôi chỉ sử dụng Java làm ví dụ về những gì tôi đã làm cho một ngôn ngữ khác. – lyallcooper

+1

Khi tôi cố gắng tạo một dòng 'errorformat' cho NAnt ... và đã từ bỏ. Nó quá phức tạp và khó kiểm tra lặp đi lặp lại, giống như nhiều cơ sở kịch bản của vim. Tôi thích vim, nhưng có một số điều bực bội, đặc biệt là vì tôi biết nó có thể được thực hiện. Nó chỉ là quá khó khăn và không đủ ví dụ về các công cụ mới hơn, không thuộc Unixy. – kprobst

Trả lời

3

Đối với trường hợp thư mục làm việc hiện tại của bạn bao gồm một chương trình đơn lẻ hoặc thư viện, sau hoạt động tốt với Vim:

autocmd Filetype go set makeprg=go\ build 

Đối với trường hợp có chỉ là một tập tin bạn muốn biên dịch, tôi ghi đè này với :

:set makeprg=go\ build\ hello.go 

Có thể tìm thấy thêm tại số vim-golang của jnwhiteh.

+0

Nhưng điều gì về báo cáo lỗi và cửa sổ quickfix? – lyallcooper

+0

Oh và những gì tôi làm chỉ là có một lệnh riêng biệt gọi ': make%' rồi mở cửa sổ quickfix bằng ': copen', thường được ánh xạ tới một khóa như F7. ('bản đồ : tạo% : copen '). – lyallcooper