2011-11-25 34 views
5

tôi tạo ra thẻ của tôi (cởi mở Ctags 5.9 ~ svn20110310) như thế này:Tôi làm cách nào để thẻ vim nhảy thông minh như OmniCppComplete?

ctags --c++-kinds=+p --fields=+iaS --extra=+q -L ctags.files 

Tôi có khoảng cấu trúc lớp này: (. Mã là từ Aquaria's open source release)

class RenderObject 
{ 
    InterpolatedVector offset; 
}; 

class Quad : public RenderObject 
{ 
}; 

class KeyframeWidget : public Quad 
{ 
    void shiftRight() 
    { 
     if (!offset.isInterpolating()) 
      offset.interpolateTo(Vector(offset.x+80, 0), 0.1, 0, 0, 0); 
    } 
}; 

Nếu tôi thẻ nhảy trên offset (Ctrl - ]), sau đó tôi nhận được danh sách mỗi offset trong codebase của tôi. Sau khi tôi nhập offset. vào cuối shiftRight(), OmniCppComplete bắt đầu cung cấp các lần hoàn thành chỉ cho InterpolatedVector.

Làm cách nào để thẻ của tôi nhảy như thông minh như OmniCppComplete?

Có phải việc nhảy thẻ không sử dụng bất kỳ ngữ cảnh nào, vì vậy chúng chỉ biết tên biểu tượng? (Có phải chính xác giống như :tag <C-r><C-w><CR>?) Có phương án thay thế nào khiến chúng nhận biết ngữ cảnh không?

Trả lời

2

Gần đây, tôi đã bắt đầu sử dụng plugin SmartTag cho Vim & tìm thấy nó rất tốt khi sử dụng thông tin theo ngữ cảnh từ mã C++ xung quanh để tìm đúng thẻ.

Bạn có thể tải nó ở đây:

https://github.com/MarcWeber/SmartTag

Để có thể sử dụng nó với Ctrl-] bạn sẽ cần phải sử dụng một thông cáo Vim với các bản vá tagfunc áp dụng. Nó ở đây:

http://llorens.visualserver.org/vim73-tagfunc.zip

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