2013-08-06 43 views
5

Tôi thường thấy mình đọc mã C khác phát triển của chứa biểu thức nhưvim: hiển thị các loại C tổng hợp (struct/đoàn) thành viên, ngay cả khi lồng

ptr->member1.member2[i].another_member.final_member = 42; 

và cần phải tìm hiểu những gì loại final_member là. Thông thường những gì tôi làm là để theo dõi chuỗi các loại bằng cách sử dụng thẻ C, bắt đầu từ tuyên bố của ptr và đào theo cách của tôi vào chuỗi các thành viên. Điều này là cồng kềnh và thường tôi bị mắc kẹt ở đâu đó gãi đầu, tự hỏi bản thân mình "Thành viên tiếp theo trong chuỗi là gì?" Để làm cho vấn đề tồi tệ hơn, một grep đơn giản cho final_member trong cây nguồn biến quá nhiều xác thực sai do tên được sử dụng lại trong nhiều cấu trúc.

Có cách nào giúp vim trả lời trực tiếp cho tôi không? Tôi sẵn sàng cài đặt bất kỳ plugin nào và thậm chí nhập một vài ký tự trong khi con trỏ nằm trên final_member hoặc chọn toàn bộ biểu thức :-) Các giải pháp không phải GUI được ưu tiên.

+0

đây là C++ '->' phải – aaronman

+3

@aaronman Không, C, kể từ khi K & R :-) – Jens

+0

Huh Tôi mặc dù C không có toán tử '->', đoán nó là – aaronman

Trả lời

0

Tôi thực sự khuyên bạn nên sử dụng plugin clang_complete (hoặc một số plugin khác được hỗ trợ bởi clang) để hoàn thành. Nó sẽ cung cấp cho bạn tinh khiết hoàn thành mã C/C++/Objective-C bằng trình biên dịch thực, không phải phương pháp xấu xí bằng thẻ. Mỗi mục trong menu hoàn thành cũng có loại trường (đó là những gì bạn đang tìm kiếm)

Omnicppcomplete thất bại thường xuyên trên biểu thức phức tạp. Clang hoạt động tốt, vì nó là trình biên dịch thực sự tuyệt vời.

+0

OK, tôi đã cài đặt nó. Các hoàn thành có thể có sau khi một '->' hoặc '.' làm hiển thị kiểu. Nhưng điều này có thể được thực hiện để hiển thị loại thậm chí không thực sự hoàn thành, tức là khi tên thành viên đã hoàn thành, hãy nói, bằng cách gọi một hàm? – Jens

+0

Bạn nên đặt con trỏ ở cuối tên hàm và nhấn Ctrl + X Ctrl + U. Điều này thực sự sẽ hiển thị menu hoàn thành với menuitem duy nhất. –

+0

Được rồi, tôi đã thực hiện ánh xạ cho chế độ lệnh: 'map T hei '. Nhưng điều này đặt tôi vào chế độ chèn (nếu tôi nối thêm ' 'thì popup sẽ biến mất sau một giây). Có cách nào để hiển thị hoàn thành từ bên trong chế độ lệnh và làm cho nó biến mất với sự kiện báo chí quan trọng tiếp theo? – Jens

2

Nếu tôi đang làm việc trên một dự án có nhiều cấu trúc lồng nhau tôi thêm preview vào tùy chọn completeopt.

Kết hợp với plugin omnicppcomplete tuyệt vời, một cửa sổ trầy xước nhỏ bật lên nếu bạn chọn một mục nhập trong menu hoàn thành. Cửa sổ trầy xước đó hiển thị một số thuộc tính của thẻ đã chọn. Trong số những thứ khác, nó chứa mẫu tìm kiếm cho thẻ trong trường hợp thành viên struct thường chứa kiểu dữ liệu của nó.

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