2010-02-22 21 views
5

tôi đã cài đặt vim 7.2 và ctags 5.8 và tạo tệp thẻ bằng "ctags -R/foopath".Cố gắng đi đến định nghĩa lớp/chức năng trong vim

Tôi có nhiều phương pháp được gọi là với cùng một tên ở một số lớp học, vì vậy nếu tôi đặt con trỏ vào một sự kêu gọi chức năng và tôi thực hiện ": tag" nó cho thấy đầu tiên các thẻ được liệt kê. Nếu tôi thực hiện ": tn" nhiều lần, tôi cuối cùng cũng tìm được phương pháp ..

Vì vậy, câu hỏi của tôi là: có cách nào để hiển thị trực tiếp đường dẫn ở đâu là lớp chứa đúng phương pháp tôi đang gọi ?

Trả lời

3

:tselect tagname sẽ cung cấp cho bạn danh sách các thẻ phù hợp và bạn có thể nhập số thẻ bạn muốn.

:stselect tagname sẽ chia cửa sổ trước.

Bạn cũng có thể đặt con trỏ trên một từ và nhập g] để nhận danh sách các thẻ khớp với từ đó.

<CTRL-W>] sẽ chia cửa sổ và chuyển đến thẻ đầu tiên khớp với từ bên dưới con trỏ.

<CTRL-W>g] sẽ chia cửa sổ và cung cấp cho bạn danh sách kết quả phù hợp.

+0

Cảm ơn Dave, nhưng tôi nghĩ bạn không hiểu tôi hoặc có thể tôi đã không giải thích đúng. Để xem: hãy tưởng tượng tôi đã gắn thẻ một số lớp (class1, class2, class3, v.v.) có phương thức foo(). Nếu tôi có mã này: $ class3_object = new class3(); class3_object-> foo(); Tôi muốn chuyển _directly_ sang thẻ tương ứng với lớp 3, vì đó là lớp của đối tượng "class3_object". Javi – ziiweb

0

Bạn có thể đọc dữ liệu thô từ thẻ vào bộ đệm với danh sách thẻ(). Sau đó, bạn có thể tìm kiếm trong bộ đệm cho các tiêu chí khác mà bạn quan tâm, bao gồm tên lớp và các phần của thư mục tệp.

Vì vậy, để có một tìm kiếm tinh tế hơn cho "mytag" try:

:new | put =taglist(\"^mytag$\") 

Để có được thông tin mới nhất, hãy chắc chắn để sử dụng Exuberant Ctags.

Sau khi bạn tìm kiếm dữ liệu mà bạn muốn, bạn sẽ thấy tên tập tin kết hợp với thẻ bắt đầu bằng 'filename': và văn bản dòng bắt đầu bằng 'cmd':.

Đưa nó trong một hàm với một số mã để làm đẹp và xử lý bộ đệm đúng cách:

" List information about matching tags in a buffer 
function! BrowseTags(tagStr) 
    new [Tag Brower] 
    setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap 

    put =taglist(a:tagStr) 

    " Beautify it a little 
    normal 1G 
    while search('^{', 'W') 
    call setline(".", split(getline("."), "\\(\\(}$\\)\\|\\('\\w\\+':\\)\\)\\@=")) 
    endw 
    normal 1G 
endfunc 

Bạn có thể sử dụng gọi BrowseTags ("^ myTag $") để chạy các chức năng cho một chính xác phù hợp với myTag hoặc sử dụng một số cụm từ thông dụng để nhận các kết quả tương tự.

Mặc dù tôi chưa bao giờ bận tâm làm điều đó, nhưng không quá khó để viết các lệnh khác nhau tự động hóa các tác vụ phổ biến nhất của bạn mà không cần mở bộ đệm.

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