간단히 말해서, 내가 찾고 있어요 작업 Vim 편집기에 대한 자동 완성 기능입니다. 나는 한 전에 주장 이 빔이 완전히 리눅스에서 IDE를 대체하고 확실히 사실이지만, 그것은 하나 개의 중요한 기능이 부족 : 자동 완성.
Ctrl+ N, Exuberant Ctags 통합 , Taglist , cppcomplete 및 OmniCppComplete 에 대해 알고 있습니다. 아아, 이것들 중 어느 것도 "자동 완성 기능"에 대한 나의 설명과 맞지 않습니다.
- CtrlN철자법을 잊어 버린 경우 + 는 잘 작동합니다 (
class
또는)while
. 오 잘 - Ctags 는 기초를 제공하지만 많은 단점이 있습니다.
- Taglist 는 Ctags 래퍼 일 뿐이 므로 대부분의 단점을 상속합니다 ( 선언 을 나열 하는 데는 효과적 임 ).
- cppcomplete 는 약속 한대로 작동하지 않으며, 내가 잘못한 것을 파악할 수 없거나 올바르게 작동하고 제한이 설계에 따른 것인지 여부를 알 수 없습니다.
- OmniCppComplete 는 cppcomplete 와 동일한 문제가있는 것 같습니다. 즉 자동 완성이 제대로 작동하지 않습니다. 또한
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보다 훨씬 더 큽니다.
clang_complete
기술적으로 가장 건전하지만 결과 캐싱 부족 및 부분 컴파일로 인해 엄청나게 느립니다. 일부는 복잡하고 시간 소모적 인 설정이 필요하기 때문에 모든 답변을 시도하지는 않았다는 것을 인정해야합니다. clang이 마침내 개발자가 C ++ 소스에서 AST를 빌드 할 수있게되었으므로 사용 가능한 플러그인을 위해 숨을 참을 것입니다 (지금까지는 C ++에 대한 무료 무료 파서가 없었습니다).
clang_complete
최근에 시도한 적이 있습니까? libclang
이제 캐싱과 함께 사용할 수 있으므로 더 빨라야합니다.
formatted like this
.)
sh
(내 라이브러리에 있음을 의미)로 시작하고 내 클래스의 약어를 따릅니다. 예를 들어shP
위한Parser
클래스입니다. 그런 다음shP
CTRL + p (또는 원하는 경우 CTRL + n)를 작성하고 클래스 멤버를 마지막 사용에서 처음으로 (또는 CTRL + n 인 경우 첫 번째에서 마지막으로) 가져 오면됩니다.