IT story

Vim의 자동 완성

hot-time 2020. 4. 6. 08:12
반응형

Vim의 자동 완성


간단히 말해서, 내가 찾고 있어요 작업 Vim 편집기에 대한 자동 완성 기능입니다. 나는 한 전에 주장 이 빔이 완전히 리눅스에서 IDE를 대체하고 확실히 사실이지만, 그것은 하나 개의 중요한 기능이 부족 : 자동 완성.

Ctrl+ N, Exuberant Ctags 통합 , Taglist , cppcompleteOmniCppComplete 에 대해 알고 있습니다. 아아, 이것들 중 어느 것도 "자동 완성 기능"에 대한 나의 설명에 맞지 않습니다.

  • CtrlN철자법을 잊어 버린 경우 + 는 잘 작동합니다 ( class또는) while. 오 잘
  • Ctags 는 기초를 제공하지만 많은 단점이 있습니다.
  • TaglistCtags 래퍼 일 뿐이 므로 대부분의 단점을 상속합니다 ( 선언 나열 하는 데는 효과적 임 ).
  • cppcomplete 는 약속 한대로 작동하지 않으며, 내가 잘못한 것을 알 수 없거나 올바르게 작동하고 제한이 설계에 따른 것인지 여부를 알 수 없습니다.
  • OmniCppCompletecppcomplete 와 같은 문제가있는 것 같습니다. 즉, 자동 완성이 제대로 작동하지 않습니다. 또한 tags파일을 다시 한 번 수동으로 업데이트해야합니다.

최신의 완전한 IDE조차도 C ++ 코드 완성을 제공하지 못한다는 사실을 알고 있습니다. 그렇기 때문에 지금까지이 분야에서 Vim의 부족을 받아 들였습니다. 그러나 기본적인 코드 완성 수준은 그리 많이 요구되지 않으며 실제로 생산적인 사용법에 필요하다고 생각합니다. 그래서 나는 적어도 다음을 달성 할 수있는 것을 찾고 있습니다.

  • 구문 인식 . cppcomplete 약속 (그러나 나에게 제공하지는 않음), 다음의 정확한 범위 인식 자동 완성 :

    variableName.abc
    variableName->abc
    typeName::abc
    

    그리고 실제로 다른 것은 전혀 쓸모가 없습니다.

  • 구성 가능성 . 소스 파일의 위치와 스크립트가 자동 완성 정보를 얻는 위치를 (쉽게) 지정해야합니다. 실제로 필자는 디렉토리에 필요한 포함 경로를 지정하는 Makefile을 가지고 있습니다. Eclipse는 그 안에있는 정보를 해석 할 수 있습니다. Vim 스크립트도 왜 그렇지 않습니까?

  • 최신 . 파일에서 무언가를 변경하자마자 자동 완성이 이것을 반영하기를 원합니다. 수동으로 트리거하고 싶지 않습니다ctags (또는 비슷한 것을). 또한, 변경해야 증분 나는 완전히 그냥 하나 개의 파일 변경 한 경우 즉, 받아 들일 수 에 대한 ctags전체 디렉토리 트리를 (거대 할 수있는) 재 구문 분석을.

내가 잊었나요? 자유롭게 업데이트하십시오.

나는 많은 구성 및 / 또는 땜질에 익숙하지만 솔루션을 처음부터 프로그래밍하고 싶지 않으며 Vim 스크립트를 디버깅하는 데 좋지 않습니다.

마지막으로, Java 및 C #과 비슷한 것을 원하지만 ctags코드 파일을 구문 분석하고 Java와 C # 모두 색인을 작성 해야하는 사전 컴파일 된 거대한 프레임 워크가 있습니다. 불행하게도, IDE없이 .NET을 개발 하는 것은 C ++보다 훨씬 더 PITA입니다.


YouCompleteMe를 사용해보십시오 . 시맨틱 C / C ++ / Objective-C 완성 기능을 제공하는 libclang 인터페이스를 통해 Clang을 사용합니다. clang_complete와 비슷하지만 훨씬 더 빠르며 퍼지 매칭이 가능합니다.

위의 내용 외에도 YCM은 C #, Python, Go, TypeScript 등의 시맨틱 완성 기능을 제공합니다. 또한 시맨틱 지원이없는 언어의 경우 시맨틱 기반의 식별자 기반 완성 기능도 제공합니다.


컴파일러사용하여 C ++ 프로젝트에 대한 코드 완성을 제공 하는 clang_complete있습니다. 이 플러그인에 대한 문제 해결 힌트 가있는 또 다른 질문 이 있습니다.clang

플러그인은 프로젝트가 컴파일되는 한 상당히 잘 작동하는 것처럼 보이지만 대규모 프로젝트의 경우 태그 목록을 생성하기 위해 전체 컴파일을 시도하기 때문에 엄청나게 느립니다.


요청에 따라 여기에 내가 언급 한 의견이 있습니다.

이것 좀 봐 :

MacOSX에서 monodevelop를 사용하려는 경우이 링크 가 도움이됩니다.

행운과 행복한 코딩.


방금 Eclim 프로젝트 다른 질문에 연결되어 있음을 발견했습니다 . 이것은 적어도 Java 통합의 경우 유망한 것으로 보입니다.


나는 파티에 조금 늦었지만 autocomplpop 가 도움이 될 수 있습니다.


intellisense와 같은 것을 찾고 있습니까?

insevim이이 문제를 해결하는 것 같습니다.

여기 스크린 샷으로 연결


누군가 code_complete를 언급 했습니까?

그러나 당신은 ctags를 좋아하지 않았으므로 이것은 아마도 당신이 찾고있는 것이 아닐 것입니다 ...

참고 URL : https://stackoverflow.com/questions/1115876/autocompletion-in-vim

반응형