programing tip

Vim : 자동 완성을 더 스마트하게 만들기

itbloger 2020. 10. 25. 11:43
반응형

Vim : 자동 완성을 더 스마트하게 만들기


Vim에서 자동 완성 기능을 사용하기 위해 ctags, taglist 등을 사용합니다. 그러나 Visual Studio intellisense 또는 Eclipse 자동 완성에 비해 매우 제한적입니다. Vim을 다음과 같이 조정할 수 있는지 궁금합니다.

  1. 때마다 자동 완성을 표시합니다. 또는-> 입력됩니다. 그러나 변수가 될 수있는 일부 텍스트 이후에만 (예 : 숫자 뒤에 자동 완성을 표시하지 마십시오).

  2. (를 입력하면 함수 매개 변수를 표시합니다.

  3. 일부가 이후 모든 문자를 삭제하면 자동 완성 목록 제거를 중지합니다. 또는-> : 변수 이름을 입력 할 때를 누릅니다. 또는-> 특정 회원을 검색하기 위해. 또는->하지만 이렇게하면 Vim이 자동 완성 목록을 숨 깁니다. Esc 키를 누르지 않는 한 계속 표시하고 싶습니다.

  4. 관련 자동 완성 표시 : 변수를 입력하고 ^ 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를 사용하지 않았습니다!

추신 : UltiSnipsTagbar ( 그리고 UndoTree 를 좋아 한다면 )를 추가로 사용하는 것이 좋습니다. vim을 완벽한 IDE로 만드는 이유는 무엇입니까?

참고 URL : https://stackoverflow.com/questions/4583394/vim-making-auto-completion-smarter

반응형