Vim : 자동 완성을 더 스마트하게 만들기
Vim에서 자동 완성 기능을 사용하기 위해 ctags, taglist 등을 사용합니다. 그러나 Visual Studio intellisense 또는 Eclipse 자동 완성에 비해 매우 제한적입니다. Vim을 다음과 같이 조정할 수 있는지 궁금합니다.
때마다 자동 완성을 표시합니다. 또는-> 입력됩니다. 그러나 변수가 될 수있는 일부 텍스트 이후에만 (예 : 숫자 뒤에 자동 완성을 표시하지 마십시오).
(를 입력하면 함수 매개 변수를 표시합니다.
일부가 이후 모든 문자를 삭제하면 자동 완성 목록 제거를 중지합니다. 또는-> : 변수 이름을 입력 할 때를 누릅니다. 또는-> 특정 회원을 검색하기 위해. 또는->하지만 이렇게하면 Vim이 자동 완성 목록을 숨 깁니다. Esc 키를 누르지 않는 한 계속 표시하고 싶습니다.
관련 자동 완성 표시 : 변수를 입력하고 ^ X ^ O를 누르면 일반적으로 ctags 파일의 모든 태그가 표시됩니다. 변수와 관련된 태그 만 표시하고 싶습니다.
도와 주셔서 감사합니다.
편집 : 어떤 사람들은이 질문에 투표하지만 아무도 대답을 알지 못하는 것 같습니다. 따라서 완전한 답을 제공 할 필요가 없다는 것을 언급하고 싶었습니다. 언급 된 요점에 대한 부분적인 답변도 좋을 것입니다.
AutoComplPop 이 필요합니다.
(1) C ++ 또는 C로 작업 할 때 clang complete
정말 좋은 옵션입니다.
키를 눌렀을 때 vim이 특정 동작을 트리거하도록하려면 키를 함수에 매핑해야합니다.
예를 들어 모드 .
에서 완료 유형을 호출 하도록 키를 매핑 INSERT
하려면 다음을 수행해야합니다.
:inoremap <expr> <buffer> . MyFunction()
그런 다음 함수는 호출 된 컨텍스트를 평가하고 사용자에게 적절한 답변을 제시해야합니다.
편집 : 이것이 clang complete
@honk가 언급 한 방식의 기초입니다 .
omnifunc의 동작을 사용자의 필요에 맞게 사용자 정의 할 수 있는지 확실하지 않지만 내 경험상 너무 멀리 가지 않았습니다. @Mikhail이 말했듯이 실제로는 코드를 어느 정도 해석하거나 실행하는 것을 의미하는 것들을 추적해야합니다.
저는 매일 vim을 사용하는데,이 작업을 수행 할 수있는 기존 스크립트를 알지 못합니다. 이 작업을 수행하려면 클래스를 이해하고 변수를 추적해야합니다. someObject->
즉, VIM은 변수 someObject
가 어떤 클래스인지 알고 해당 클래스 내에서 메서드 / 변수를 검색 할 수 있습니다.
vim 용 스크립트를 작성하는 것은 상대적으로 쉽습니다. 여러분이 언급 한 것처럼 아직 아무도 이것에 대해 대답하지 않았습니다. 나로부터 찬성 투표.
나는 당신이 찾고 있고 유망한 플러그인을 발견 한 것과 동일한 기능을 갖고 싶습니다.
https://github.com/Shougo/neocomplcache 는 새로운 autocomplpop이 될 수있는 것처럼 보이며 초기 평가판에서 꽤 잘 작동하는 것 같습니다 ... 이제 스칼라와 함께 작동하도록 옴니 완성을 구성합니다
최근에 YouCompleteMe를 발견 했으며 Visual Studio 자동 완성 도구와 유사하게 작동합니다. 여기에서 데모를 볼 수 있습니다.
https://www.youtube.com/watch?v=YuMyHAHF0xs
어쨌든 YouCompleteMe (YCM)를 추천 합니다. 그것은 경로 완성, 외부 완성 엔진과의 통합뿐만 아니라 현재 파일의 식별자의 (퍼지) 일치를 제공합니다.
ad 1)
eclipse의 의미 적 완성이 마음에 들면 eclim 을 사용 하여 vim을 eclipse와 통합하십시오. (대체적으로 YCM에 다른 의미 엔진을 사용)
ad 2)
이 두 가지는 잘 어울립니다. btw., : YCM은 최근에 완료된 함수의 함수 정의 (= 매개 변수 목록)도 제공 할 수 있습니다!
ad 3)
이것이 YCM이하는 일입니다.
ad 4)
그게 무슨 뜻인지 잘 모르겠습니다. ctags를 사용하지 않았습니다!
추신 : UltiSnips 및 Tagbar ( 그리고 UndoTree 를 좋아 한다면 )를 추가로 사용하는 것이 좋습니다. vim을 완벽한 IDE로 만드는 이유는 무엇입니까?
참고 URL : https://stackoverflow.com/questions/4583394/vim-making-auto-completion-smarter
'programing tip' 카테고리의 다른 글
바퀴를 재발 명하지 않고 REST API 보안 (0) | 2020.10.25 |
---|---|
Dockerfile에서 VOLUME의 목적은 무엇입니까 (0) | 2020.10.25 |
Maven : 저장소 요소가 distributionManagement 내부의 POM에 지정되지 않았습니다. (0) | 2020.10.25 |
Google API 인텔 x86 아톰과 Google Play 인텔 x86 아톰 시스템 이미지의 차이점 (0) | 2020.10.25 |
C # 컴파일러가 다른 기본 클래스에서 파생 될 때 "유형이 통합 될 수있다"고 불평하는 이유는 무엇입니까? (0) | 2020.10.25 |