Vim의 자동 완성


258

오랫동안 "훈련"을 한 후에 마침내 Vim으로 전환했습니다. 하지만 자동 완성에 문제가 있습니다. 입력하는 동안 어떻게 코드 제안을 할 수 있습니까?

나는 보통 PHP, Ruby, HTML, C 및 CSS를 개발합니다.

답변:


143

입력 할 때 AutoComplPop 과 같은 플러그인을 사용하여 자동 코드 완성 을 얻을 수 있습니다 .

2015 편집 : 나는 개인적으로 지금 YouCompleteMe를 사용 합니다.


10
이것은 적극 권장됩니다. CX CO, CP 또는 CN을 입력하지 않아도됩니다.
Amjith

나는 이것을 시도했지만 작동하지 않는 것 같습니다. 아마 다른 스크립트와 충돌이있을 수 있습니다.
diegocstn

1
~ / .vim의 지정된 디렉토리에 파일을 넣습니까?
michaelmichael

1
@dieguitoweb ACP는 기본적으로 모든 파일 형식에서 작동하지 않습니다. JavaScript, ActionScript 및 PHP에서 작동하도록하려면 "해킹"해야합니다. 여기에 내가 어떻게하는지 설명합니다. 그리고 여기 PHP에 대한 또 다른 힌트가 있습니다.
romainl

이제는 작동합니다 :) 모든 파일이 이미 올바른 디렉토리에 있습니다. 많은 감사
diegocstn

438

삽입 모드에서 단어 제안 목록을 보려면 Ctrl- N를 사용하십시오 . :help i_CTRL-N이 기능에 대한 Vim의 설명서를 보려면 입력 하십시오.

다음 은 Python 사전을 Vim으로 가져 오는 예입니다.


15
감사합니다.하지만 <ctrl + N>을 누르지 않고이 목록을 자동으로 만들려면 어떻게해야합니까?
diegocstn

5
그것이 마이클 마이클이 그가 언급 한 플러그인으로 당신에게 말한 것입니다. 또한 SuperTab을 볼 수도 있습니다.
projecktzero

4
CSS 지원을 위해 .vimrc에 'set iskeyword + =-'를 추가하여 내장 자동 완성에 대시를 추가하십시오.
mahalie

3
이것은 가장 포괄적이고 원시적 인 방법입니다 :-)
Srikant

5
@ Hi-Angel '자동'부분은 단어 완성을위한 옵션을 자동으로 결정하고 옵션 선택시 단어를 자동으로 경쟁한다는 것입니다.
CJBS


11

내장에서 시작할 수 있습니다 omnifunc 설정 .

그냥 넣어 :

filetype plugin on
au FileType php setl ofu=phpcomplete#CompletePHP
au FileType ruby,eruby setl ofu=rubycomplete#Complete
au FileType html,xhtml setl ofu=htmlcomplete#CompleteTags
au FileType c setl ofu=ccomplete#CompleteCpp
au FileType css setl ofu=csscomplete#CompleteCSS

당신의 하단에 .vimrc입력 한 다음 <Ctrl-X><Ctrl-O>삽입 모드.

나는 항상이 CSS 완성에 의존합니다.


무슨 setl뜻입니까? 감사.
qed

알았어. setlocal을 의미한다. 그런데 왜 여기서 로컬로 설정해야합니까?
qed

동일한 버퍼에서 다른 파일을 열 때 어떻게 성가 신지 살펴보십시오.
ernix

2
@ernix 링크에서 : Vim의 버퍼는 ... 파일의 열린 인스턴스입니다. 버퍼, 창 및 탭에 대해 알고 있습니다. 하지만 같은 버퍼에서 다른 파일을 여는 방법을 모르겠습니다. 파일을 열 때 항상 새 버퍼에서 열리고 해당 버퍼를 버퍼 목록에 추가하는 것 같습니다. 빠른 수정 목록과 같은 버퍼가 사용되는 다른 방법이 있다는 것을 알고 있지만 버퍼에 있는 파일을 변경 하는 방법에 대해서는 몰랐습니다 . :h buffers: 버퍼는 편집을 위해 메모리에로드 된 파일입니다. 즉, 나는 3 개월 동안 Vim을 심각하게 사용했습니다. 그리고 분명히 교정에 개방되어 있습니다.
JakeD

1
@JakeD 아 그래. 네가 옳아. 나는 잘못된 길을 의미하는 "인스턴스"를 가져 갔다. 다른 PID를 가진 프로세스에 대해 이야기하고 있다고 오해했습니다. 미안, 내가 한 말을 잊어 버려
ernix


6

나는 최근에 NeoVim 의 전자 기반 프론트 엔드 인 OniVim 이라는 프로젝트를 발견했습니다. 이 언어는 기본적으로 NeoVim을 감싸는 래퍼이기 때문에 vim의 강력한 힘을 가지고 있습니다. GUI가 귀하의 요구를 충족시키지 못하면 귀하의 처분에 따라. 아직 초기 개발 단계에 있지만 빠르게 개선되고 있으며 실제로 활발한 커뮤니티가 있습니다. 나는 10 년 이상 vim을 사용하고 몇 주 전에 Oni에 테스트 드라이브를 제공하기 시작했으며 여기에 몇 가지 버그가 있지만 내 방식으로는 얻지 못했습니다. 여전히 vim-finger를 받고있는 새로운 vim 사용자에게 강력히 추천합니다!

여기에 이미지 설명을 입력하십시오

OniVim : https://www.onivim.io/


32
나에게 vim의 전체 요점은 터미널을 사용하는 것입니다 ... 전자 응용 프로그램을 사용하려면 vim 확장과 함께 vscode를 사용하겠습니다 ..
Mohamed Benkedadra

2
그러나 그것은 정말로 당신에게 Vim의 모든 힘을 줄 것입니까? 검색 및 교체 패턴 시스템의 열렬한 팬이되었는데, vim-emulation 플러그인이 그것을 지원한다면 유쾌하게 놀라게 될 것입니다.
SilverWolf-복원 Monica Monica

3

나는 약 반 년 동안 neocomplcache 를 사용 했습니다. 모든 버퍼에서 단어 캐시를 수집 한 다음 자동 완성을 위해 제공하는 플러그인입니다.

이전 링크의 프로젝트 페이지에는 다양한 스크린 샷이 있습니다. Neocomplcache에는 다양한 구성 옵션이 있으며 프로젝트 페이지에도 기본 예제가 있습니다.

더 깊이가 필요하다면 내 vimrc 에서 관련 섹션을 볼 수 있습니다 -단어 neocomplcache를 검색하십시오.


1

여기 링크입니다 ! PHP 용.

일부 PHP 함수를 작성하는 동안 Ctrl + x를 누른 다음 Ctrl + o 키를 누르십시오.

튜토리얼을위한 Oseems Solutions 덕분에



0

PHP, 들어 파다완Deoplete 가있는 에서 강력한 PHP 자동 완성 기능을 제공하는 훌륭한 솔루션입니다. 나는 많은 것을 시도했고 Padawan은 매력처럼 작동합니다!

Vim의 경우 Neocomplete 를 사용할 수 있습니다 대신 를 .

누군가 관심이 있다면 Vim PHP IDE 를 만드는 방법에 대한 기사를 썼습니다 . 물론 Padawan은 그 일부입니다.


0

다른 옵션은 coc.nvim 입니다.

실제로 빠르고 빠르고 VScode와 동일한 자동 완성 기능을 사용하므로 완성도가 뛰어납니다. 보푸라기 기능도 있습니다. 버그가있을 수 있음을 보여줍니다. 다양한 언어를 지원합니다.

설정하고 구성하는 데 약간의 시간이 걸릴 수 있지만 vim을위한 최고의 자동 완성 엔진입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.