Câu trả lời cho câu hỏi trực tiếp của bạn giống như @EvergreenTree đã đăng. Tuy nhiên tôi cảm thấy như bạn đang thiếu một số công cụ tích hợp Vim để xây dựng / biên dịch / linting dự án. Đáng chú ý nhất :make
và danh sách quickfix.
Những gì sử dụng :make
có được chúng tôi?
Việc sử dụng :make
cho phép bạn thu thập các lỗi của mình vào một danh sách được gọi là danh sách quickfix. Sử dụng quickfix, bạn có thể điều hướng giữa các lỗi trong tệp của mình, vì vậy bạn sẽ chuyển ngay đến nơi trình biên dịch nói lỗi là (tiện dụng phải không?).
:làm
Chạy :make
sẽ thực hiện chương trình make 'makeprg'
. Sau đó phân tích đầu ra với 'errorformat'
và đặt từng mục vào danh sách quickfix.
Thông thường 'makeprg'
mặc định cho make
lệnh chạy a Makefile
. Tuy nhiên, bạn có thể thay đổi 'makeprg'
thông qua :compiler
lệnh hoặc đặt trực tiếp.
Bạn cũng có thể truyền thêm đối số cho :make
. ví dụ:make clean
Lưu ý: chạy :make
thường sẽ hiển thị đầu ra của lệnh ở dưới cùng của màn hình với lời nhắc yêu cầu nhấn enter. Chỉ cần nhấn enter là tất cả đầu ra sẽ có sẵn trong danh sách quickfix. Bạn có thể ngăn chặn điều này thông qua :silent
, ví dụ :silent make
.
Một lệnh tùy chỉnh phổ biến cho một chế độ im lặng là:
command -nargs=* -bar Smake silent make <args> <bar> cwindow
danh sách quickfix
Sau khi bạn chạy :make
danh sách quickfix của bạn sẽ giữ đầu ra của trình biên dịch.
Sử dụng lệnh sau để điều hướng danh sách quickfix.
:copen
để mở cửa sổ quickfix
:cclose
để đóng cửa sổ quickfix
:cnext
/ :cprev
để chuyển sang mục tiếp theo / trước
:cc
để in ra ở phía dưới lỗi hiện tại hoặc :cc 3
hiển thị một lỗi cụ thể trong ví dụ 3 này
Cá nhân tôi sử dụng Tim Pope không yếu đuối plugin để điều hướng các danh sách QuickFix.
Còn việc chạy :make
tự động và âm thầm thì sao?
Bạn có thể làm điều này với một :autocmd
giống như bạn ở đâu.
augroup auto_make
autocmd!
autocmd BufWritePost * silent make
autocmd QuickFixCmdPost *make* cwindow
augroup END
Như một phần thưởng tôi đã thêm vào khi mở cửa sổ quickfix thông qua :cwindow
nếu có bất kỳ lỗi nào.
Lưu ý: Nên cụ thể hơn với mẫu tệp đó trên BufWritePost
autocmd để các tệp không liên quan không được xây dựng.
Có nhiều hơn nữa không?!
Điều này chỉ sử dụng một vài lệnh dựng sẵn của Vim cộng với một vài autocmd để thuyết phục. Tất nhiên có các plugin và công cụ có thể hỗ trợ bạn
- Dispatch.vim có thể được sử dụng để chạy các
:make
công việc không đồng bộ.
- Syntastic kiểm tra cú pháp Plugin nộp sau
:write
.
- Ale.vim (Công cụ Lint không đồng bộ) là một plugin để cung cấp linting trong NeoVim và Vim 8 trong khi bạn chỉnh sửa các tệp văn bản của mình.
- Unimpaired.vim giúp quản lý danh sách quickfix dễ dàng.
- Đồng bằng cũ Makefiles. Trừ khi bạn
./script.sh
rất phức tạp, bạn có thể muốn xem xét sử dụng make. Nó có thể mở rộng quy mô thực hiện nhiều nhiệm vụ sau này và là một công cụ xây dựng phổ biến.
- Bạn có thể sử dụng Vim Awesome để tìm kiếm nhiều plugin có thể giúp ích.
Phần kết luận
Cá nhân tôi tích hợp :make
và quickfix vào quy trình làm việc của riêng tôi. Tôi tin rằng việc nắm bắt đầu ra của quá trình xây dựng của bạn và nắm bắt các lỗi sẽ rất đáng để đầu tư. Là một phần thưởng bổ sung, bạn có thể sẽ trở nên thoải mái hơn với danh sách quickfix và có thể sử dụng danh sách cho các ứng dụng khác như thế nào :grep
.
Để được trợ giúp thêm xem:
:h :make
:h quickfix
:h 'makeprg'
:h 'errorformat'
:h :compiler
:h :copen
:h :cwindow
:h :cnext
:h :cc