Tự động hoàn thành C / C + + trong vim

Tự động hoàn thành là tính năng tuyệt vời cho các lập trình viên làm việc trên nhiều loại ngôn ngữ lập trình khác nhau như ngôn ngữ C / C + +. Trình chỉnh sửa Vim cung cấp tính năng này trong Windows hoặc Linux . Tự động hoàn thành C / C + + trong Vim tìm kiếm các từ được nhập từ một tệp đã lưu các thẻ trước đó trong đó. Người dùng, với sự trợ giúp của thành phần phần cứng của hệ thống - tức là bàn phím, sẽ cấu hình một phím để bắt đầu quá trình xem qua các thẻ được lưu trữ. Tuy nhiên, sẽ là khôn ngoan để giữ một mắt mở cho bất kỳ từ nào không có ý nghĩa.

  • Cài đặt
  • Cấu hình
  • Sử dụng
  • Liên kết

Hướng dẫn này nhằm vào những người chạy Vim trên Linux. Tự động hoàn thành là một chức năng quen thuộc với người dùng Linux, tuy nhiên đôi khi nó có thể gợi ý những từ không có ý nghĩa trong ngữ cảnh. Điều này có thể gây khó chịu khi lập trình, vì Tự động hoàn thành có thể đề xuất, ví dụ, một loại khi một phương thức được mong đợi tại thời điểm đó trong mã.

 lớp plop () {bảo vệ: int plopons; công khai: plop () {} void plopez () {}}; int main () {plop p; tr. // <- Ctrl P đề xuất kế tiếp: plopez, plop ... alors que c'est forcément plopons return 0; } 

Một plugin, dựa trên ctags Vim cho phép bạn tạo Tự động hoàn thành thông minh hơn có thể tính đến bối cảnh sử dụng một từ.

Cài đặt

Chúng tôi bắt đầu bằng cách cài đặt ctags. Ví dụ: trong các bản phân phối dựa trên Debian hoặc Debian (ubfox, xandros, v.v.):

 sudo aptitude update sudo aptitude an toàn nâng cấp sudo aptitude cài đặt exuberant-ctags 

Nó cũng phục hồi plugin Vim để tự động hoàn thành:

//www.vim.org/scripts/script.php?script_id=1520

Chúng tôi sẽ làm mọi thứ liên quan đến việc tự hoàn thành trong ~ /. Vim:

 mkdir -p ~ / .vim / tags mv omnicpp * zip ~ / .vim cd ~ / .vim giải nén omnicpp * zip cd - 

Ctags có thể xem xét vấn đề của các tiêu đề QT, OpenGL, SDL. Tuy nhiên, đối với STL, bạn phải truy xuất các tiêu đề "đơn giản" tại đây:

//www.vim.org/scripts/script.php?script_id=2353

Nó giải nén tệp lưu trữ và tạo các thẻ từ STL:

 tar xjvf cpp_src.tar.bz2 ctags -R --c ++ - các loại 

Bây giờ nó tạo các thẻ cho các thư viện được cài đặt (sẽ được điều chỉnh nếu các thư viện được cài đặt ở nơi khác). Ví dụ: trong các thư viện OpenGL, SDL và QT, chỉ cần nhập ba lệnh sau:

c

 tags -R --c ++ - kind = + p --fields = + iaS --extra = + q --lingu-force = C ++ / usr / include / GL / && mv tags ~ / .vim / tags / gl ctags - R --c ++ - kind = + p --fields = + iaS --extra = + q --lingu-force = C ++ / usr / include / SDL / && mv tags ~ / .vim / tags / sdl ctags -R - -c ++ - kind = + p --fields = + iaS --extra = + q --lingu-force = C ++ / usr / include / qt4 / && mv tags ~ / .vim / tags / qt4 

Cấu hình

Bây giờ chúng ta phải nói với vim để tải các tệp plugin và các thẻ khác nhau. Để làm điều này, chỉ cần thêm vào cuối tệp ~ /. Vimrc các dòng sau:

 "Thẻ prérequis đặt plugin nocp filetype trên" cấu hình thẻ - thêm thẻ bổ sung tại đây hoặc nhận xét những thẻ không sử dụng đặt thẻ + = ~ / .vim / tags / stl set tags + = ~ / .vim / tags / gl set tags + = ~ / .vim / tags / sdl đặt thẻ + = ~ / .vim / tags / qt4 "xây dựng thẻ của dự án của riêng bạn với bản đồ CTRL + F12" :! ctags -R --c ++ - kind = + p --fields = + iaS - -extra = + q. noremap :! ctags -R --c ++ - kind = + p --fields = + iaS --extra = + q. inoremap :! ctags -R --c ++ - kind = + p --fields = + iaS --extra = + q. "OmniCppComplete let OmniCpp_NamespaceSearch = 1 let OmniCpp_GlobalScopeSearch = 1 let OmniCpp_ShowAccess = 1 let OmniCpp_ CthonMovedI, insertLeave * nếu pumvisible () == 0 | im lặng! pclose | endif set xongeopt = menuone, menu, dài nhất, xem trước 

Nếu các thẻ chỉ được tạo cho một số tệp, hãy nhận xét khác bằng cách thêm vào đầu dòng. Ví dụ: nếu chúng tôi chưa tạo ~ /.vim/tags/gl và ~ / .vim / tags / sdl:

 đặt thẻ + = ~ / .vim / tags / stl "đặt thẻ + = ~ / .vim / tags / gl" đặt thẻ + = ~ / .vim / tags / sdl đặt thẻ + = ~ / .vim / tags / qt4 

Chúng ta chỉ cần lưu tệp và (lại) bắt đầu vim để chúng phản ánh các thay đổi thành ~ /. Vimrc.

Sử dụng

Mọi thứ đã được gắn thẻ trước đó (tức là trong thẻ hướng dẫn này STL, QT, SDL và OpenGL) đã có sẵn trong quá trình hoàn thành tự động. Đơn giản chỉ cần nhấn ctrl p hoặc n. Khi danh sách xuất hiện, bạn có thể sử dụng các mũi tên để tô sáng đề xuất tốt và nhấn enter.

Tuy nhiên, nó vẫn chưa hoàn thành. Nó sẽ tạo lại các thẻ của các ký hiệu (biến, hàm, loại ...) cụ thể cho dự án đang được phát triển. Điều này sẽ một lần nữa tạo ra một tập tin thẻ. Và tất nhiên, nó sẽ làm mới tệp mỗi khi bạn thêm, xóa hoặc thay đổi một biểu tượng của dự án để nó hiện tại.

Vì khá phổ biến, bạn nên ánh xạ một phím trên bàn phím để kích hoạt quá trình ctags. Trong tệp ví dụ ~ / .Vimrc mà tôi đã cung cấp, điều này được đảm bảo bằng cách nhấn F12.

Liên kết

//vim.wikia.com/wiki/C++_code_completion

//www.vim.org/scripts/script.php?script_id=1520

//www.vim.org/scripts/script.php?script_id=2353

Bài TrướC TiếP Theo Bài ViếT

Lên Trên LờI Khuyên