2010-03-12 28 views
12

Khi thực hiện: thực hiện từ vim, sau khi thực hiện xong, nó sẽ tự động nhảy vào tệp có lỗi. Có cách nào để tránh điều nàyvim: tự động chuyển sang tệp đầu tiên có lỗi

EDIT

này được usecase tôi muốn đạt được Tôi muốn: làm để thực hiện sau đó phát nhanh để mở nhưng các tập tin hiện tại mà tôi đang làm việc trên không nên được chuyển sang một với lỗi

với các thiết lập mặc định sau: làm cho thực hiện quicklist sẽ mở ra và các tập tin hiện tại cũng thay đổi

Trả lời

13

Bạn có thể chạy :make! | copen, sẽ đặt con trỏ của bạn trong danh sách quickfix thay vì thay đổi bộ đệm hiện tại. Bạn có thể làm điều này dễ dàng hơn bằng cách đặt command Mymake make! | copen vào trong .vimrc của bạn, vì vậy bạn chỉ phải chạy :Mymake để thực hiện việc này. Lưu ý rằng khi chọn lỗi từ danh sách quickfix, chúng sẽ cuộn bộ đệm với tệp đã mở thay vì thay đổi cửa sổ hiện tại nếu có thể và bạn có thể mở tệp trong cửa sổ mới bằng <C-w> Enter.

+0

Tôi ngạc nhiên rằng điều này đã được chấp nhận - trong khi tất nhiên 'copen' theo định nghĩa kích hoạt danh sách lỗi, nếu': make! 'Thay đổi tệp đang mở, nó vẫn sẽ thay đổi. – Cascabel

+1

@ Jefromi Tôi không biết ý bạn là gì. Câu trả lời của riêng bạn nói rằng ': make!' Hiện _not_ thay đổi tệp đang mở. –

21

Từ các tài liệu:

 
    7. If [!] is not given the first error is jumped to. 

Vì vậy, chỉ cần gọi nó là :make!.

+0

ngay cả với tùy chọn này, nó đã nhảy vào tệp. –

+0

Tôi vừa thử nghiệm trên vim 7.1 bằng cách sử dụng ': make! 'Đã không chuyển sang lỗi đầu tiên, tôi vẫn ở trên cùng một vị trí trong tệp nơi tôi mở - lỗi nằm trong tệp khác nhau – stefanB

+0

Có cách nào để định cấu hình không nó đảo ngược hành vi bình thường? Vì vậy: thực hiện những gì: làm cho! bình thường và ngược lại? Lý tưởng nhất trên các hàm quickfix khác nhau như: grep,: Ack,: Ag. – William

1

Nó có thể không phải là giải pháp sạch nhất, nhưng thiết lập các errorformat thành một chuỗi rỗng nên làm các trick, tức là.

:set errorformat="" 

Điều đó sẽ giữ cho nó không khớp với chuỗi lỗi trình biên dịch.

+0

Điều này cho tôi thông báo lỗi "E378: 'errorformat' không chứa mẫu". Tuy nhiên, thiết lập nó thành một cái gì đó mà không phù hợp (tôi sử dụng "!" Như một bài kiểm tra nhanh chóng bây giờ) dường như làm việc. –

Các vấn đề liên quan