Nhảy từ thẻ định nghĩa hàm sang thẻ nguyên mẫu


7

Theo tôi hiểu thì Vim có hỗ trợ tích hợp cho các thẻ ( ctagstrong trường hợp này)

Bây giờ tôi có một tệp tiêu đề C nguồn và C chung. Tệp tiêu đề có void foo(void);và tệp nguồn có void foo(void) { /* */ }.

Bây giờ khi tôi ở trong tệp nguồn, tôi có thể sử dụng :tags foo, nó sẽ chuyển sang định nghĩa hàm trong tệp nguồn. Nhưng nếu tôi sử dụng :tnextbây giờ, nó sẽ không chuyển đến khai báo hàm trong tệp tiêu đề.

Tôi cảm thấy như thế này nên bằng cách nào đó có thể. Là nó?


1
(làm thế nào) bạn đã chạy ctags? Ngoài ra, xem :h gD.
VanLaser

Tôi vừa chạy ctags -R, đó là sai lầm
hg Diesel

Câu trả lời:


6

Được rồi tôi đã làm nó:

Tất cả phải làm với ctags: Đầu tiên tạo hai tệp được gọi foo.cfoo.hđể kiểm tra nó: Trong foo.hghi xuống:

int bar(void);

Trong foo.cghi xuống:

int bar(void) { /* */ }

Và trong thư mục chứa hai tệp đó, thực thi:

ctags --list-kinds

Bạn nhận được một danh sách dài các ngôn ngữ với các loại thẻ. Tìm C. Lưu ý dòng sau:

nguyên mẫu hàm p [tắt]

Tôi sẽ gọi nó là khai báo chức năng nhưng dù sao. Vì vậy, bạn cần kích hoạt thẻ cho các nguyên mẫu chức năng khi thực hiện ctags. Bạn làm điều đó bằng cách gọi:

ctags -R --c-kinds=+p

Lưu ý rằng điều tương tự áp dụng cho bất kỳ ngôn ngữ nào khác, ví dụ:

ctags -R --java-kinds=+l

Bây giờ bạn có thể mở foo.c( vim foo.c) và nhập :tag bar. Nó sẽ cho bạn thấy định nghĩa hàm. Nhập :tnextvà bạn sẽ nhảy vào foo.hkhai báo bar.

Tuy nhiên cũng lưu ý rằng ctagskhông quan tâm đến tính đúng đắn. Ví dụ: khai barbáo thậm chí không thể áp dụng cho định nghĩa bar, vì tôi không bao gồm tệp tiêu đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.