vim에서 자동 완성 C / C ++

자동 완성 은 C / C ++ 언어와 같은 다양한 유형의 프로그래밍 언어로 작업하는 프로그래머에게 유용한 기능입니다. Vim 편집기Windows 또는 Linux 에서이 기능을 제공합니다. Vim 에서 C / C ++의 자동 완성 은 이전 에 태그저장 한 파일에서 입력 한 단어를 검색합니다. 사용자는 시스템의 하드웨어 구성 요소 (예 : 키보드)의 도움으로 저장된 태그를 살펴 보는 프로세스를 시작 하는 데 필요한 키구성 합니다. 그러나 이해가되지 않는 단어를 열어 두는 것이 현명합니다.

  • 설치
  • 구성
  • 용도
  • 모래밭

이 튜토리얼은 Linux에서 Vim을 실행하는 사람들을 대상으로합니다. 자동 완성 기능은 Linux 사용자에게 익숙한 기능이지만 때로는 상황에 맞지 않는 단어를 제안 할 수도 있습니다. 예를 들어 코드의 특정 지점에서 메소드가 예상되는 경우 자동 완성 기능이 제안 할 수 있으므로 프로그래밍 할 때 좌절 할 수 있습니다.

 클래스 plop () {protected : int plopons; public : plop () {} void plopez () {}}; int main () {plop p; 피. // <- Ctrl P proposera successivement : plopez, plop ... 포루에 대한 포로 풋 포로 폰 리턴 0; } 

ctags에 기반한 플러그인 Vim을 사용하면 단어가 사용 된 문맥을 고려할 수있는보다 지능적인 자동 완성을 만들 수 있습니다.

설치

우리는 ctags를 설치하는 것으로 시작합니다. 예를 들어, 데비안 또는 데비안 기반 배포판 (우분투, xandros 등) :

 sudo aptitude update sudo aptitude 안전 업그레이드 sudo aptitude install exuberant-ctags 

또한 자동 완료를 위해 Vim 플러그인을 복구합니다.

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

우리는 ~ /에서 자기 완성에 관한 모든 것을 다할 것입니다. 정력:

 mkdir -p ~ / .vim / tags mv omnicpp * zip ~ / .vim cd ~ / .vim unzip omnicpp * zip cd - 

Ctags는 헤더 QT, OpenGL, SDL의 문제를 고려할 수 있습니다. 그러나 STL의 경우 여기에서 헤더를 검색해야합니다.

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

압축 파일을 풀고 STL에서 태그를 만듭니다.

 tar xjvf cpp_src.tar.bz2 ctags -R --c ++ - 종류 = + p - 필드 = + iaS --extra = + q - 언어 force = C ++ cpp_src && mv tags ~ / .vim / tags / stl 

이제 설치된 라이브러리에 대한 태그가 생성됩니다 (라이브러리가 다른 위치에 설치된 경우). 예를 들어 OpenGL, SDL, QT 라이브러리에서는 다음 세 명령을 입력하면됩니다.

기음

 / usr / include / GL / && mv tags ~ / .vim / tags / gl ctags - / usr / include 태그는 / usr / / usr / include / SDL / && mv 태그 ~ / .vim / tags / sdl ctags -R --c ++ - 종류 = + p - 필드 = + iaS - -c ++ - types = + p --fields = + iaS --extra = + q --language-force = C ++ / usr / include / qt4 / && mv tags ~ / .vim / tags / qt4 

구성

이제 vim에게 플러그인 파일과 다른 태그를로드하도록 지시해야합니다. 이렇게하려면 단순히 ~ / 파일의 끝에 추가하십시오. 다음 행을 Vimrc :

 "pre-requirements tags set nocp filetype plugin on"태그 추가 - 여기에 추가 태그 추가 또는 사용하지 않은 주석 처리 설정 태그 + = ~ / .vim / tags / stl set tags + = ~ / .vim / tags / gl set tags + = ~ / .vim / tags / sdl set tags + = ~ / .vim / tags / qt4 "CTRL + F12로 자신의 프로젝트의 태그를 빌드하십시오"map :! ctags -R --c ++ - kinds = + p --fields = + iaS - -extra = + q. noremap :! ctags -R --c ++ - kinds = + p --fields = + iaS --extra = + q. inoremap :! ctags -R --c ++ - kinds = + p --fields = + iaS --extra = + q. "OmniCppComplete는 OmniCpp_MayCompleteArt = 1이 OmniCpp_MayCompleteArt = 1이 OmniCpp_MayCompleteScope = 1이되도록합시다. OmniCpp_DefaultNamespaces = ["std ", "_GLIBCXX_STD "]"자동으로 팝업 메뉴를 열고 닫습니다. au CursorMovedI, InsertLeave * if pumvisible () == 0 | 침묵하십시오! pclose | endif set completeopt = menuone, 메뉴, 가장 길게, 미리보기 

일부 파일에 대해서만 태그가 생성 된 경우 해당 행의 맨 앞에 추가하여 다른 태그에 주석을 달아보십시오. 예를 들어 우리가 ~ /.vim/tags/gl과 ~ / .vim / tags / sdl을 생성하지 않았다면 :

 태그를 설정 + = ~ / .vim / tags / stl "set tags + = ~ / .vim / tags / gl"set 태그 + = ~ / .vim / tags / sdl 태그 설정 + = ~ / .vim / tags / qt4 

파일을 저장하고 vim을 시작하여 ~ /에 대한 변경 사항을 반영하면됩니다. Vimrc.

용도

이전에 태그가 붙은 모든 것들 (예 :이 튜토리얼의 STL, QT, SDL 및 OpenGL 태그)은 이미 자동 완성에서 사용할 수 있습니다. ctrl p 또는 n을 누르기 만하면됩니다. 목록이 나타나면 화살표를 사용하여 좋은 제안을 강조 표시하고 Enter 키를 누릅니다.

그러나 완전히 완료되지 않았습니다. 개발중인 프로젝트에 특정한 기호 (변수, 함수, 유형 ...)의 태그를 다시 생성해야합니다. 그러면 태그 파일이 다시 생성됩니다. 물론 프로젝트의 심볼을 추가, 삭제 또는 변경할 때마다 파일이 최신 상태가되도록 새로 고칩니다.

꽤 일반적인 것처럼 키보드의 키를 매핑하여 ctag 프로세스를 트리거하는 것이 좋습니다. 필자가 준 예제 파일 ~ / .Vimrc에서 F12 키를 눌러이를 확인할 수 있습니다.

모래밭

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

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

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

이전 기사 다음 기사

톱 팁