Vim에서 자동 완성 후 미리보기 창을 어떻게 자동으로 제거합니까?


91

나는 omnifunc=pythoncomplete. 단어 (예 :)를 자동 완성 할 때 os.<something>예상대로 적합한 클래스 멤버 및 함수 목록과 선택한 멤버 또는 함수에 대한 문서가있는 스크래치 버퍼 미리보기 창을 얻습니다. 이것은 훌륭하지만 원하는 기능을 선택하면 미리보기 창이 남아 있습니다.

을 사용하여 제거 할 수 :pc있지만 이클립스라는 함수를 선택한 후 자동으로 사라지기를 원합니다. 나는 놀았 completeopt지만 아무 소용이 없습니다.


8
좋은 질문-바보 버퍼를 열어 두었 기 때문에 omnicomplete 사용을 중단했습니다.
Wayne Werner

답변:


106

vimrc에 다음을 입력하십시오.

" If you prefer the Omni-Completion tip window to close when a selection is
" made, these lines close it on movement in insert mode or when leaving
" insert mode
autocmd CursorMovedI * if pumvisible() == 0|pclose|endif
autocmd InsertLeave * if pumvisible() == 0|pclose|endif

2
이것은 나를 위해 명령 편집 창을 깨는 것 같습니다 (q : 또는 q /). 나는 또 다른 검사를 추가했다 : && bufname ( "%")! = "[Command Line]"두 줄
Ben

2
@ 벤 : 와우는 어떻게 게시하기 전에 당신의 코멘트를 보지 못했다 이 질문을 . 내가 거기에서 가져온 대답은 변경이었다 pclosesilent! pclose.
idbrii

1
gotgenes와 pydave 모두에게 감사드립니다. 당신의 트릭은 완벽하게 작동합니다!
Lubulos

73

이미 받아 들여진 답변이 있지만이 문제가있는 모든 플러그인에서 작동하는 문서에서 직접 찾았습니다.

autocmd CompleteDone * pclose

15
CompleteDone버전 7.4에서 추가되었습니다. 이 방법은 CursorMovedI/ InsertLeave접근 방식 보다 선호되어야합니다 .
Peter Rincker 2015 년

7
@PeterRincker 완료시 창이 닫히지 않는 것이 좋습니다 (인수를 입력 할 때 문서를보고 싶기 때문입니다). 따라서이 InsertLeave줄을 사용합니다 .
DBedrenko 2015

19

슈퍼 탭 플러그인이 설치되어있는 경우라는 옵션이 supertab-closepreviewonpopupclose있습니다.

.vimrc에 다음을 입력하십시오.

let g:SuperTabClosePreviewOnPopupClose = 1

16
YouCompleteMe 플러그인에 ag : ycm_autoclose_preview_window_after_insertion 옵션이 있다는 힌트이기 때문에이 답변을 찬성합니다.
duleshi

@duleshi 정확히 내가 찾던 것!
Andy Hayden 2014

@AndyHayden 기꺼이 도와 드릴 수 있습니다! 그것이 내가 코멘트를 남긴 것입니다!
duleshi

감사합니다 @duleshi 그게 바로 제가 필요했던 것입니다!
David Woods

9

자동으로 닫는 방법을 모르겠지만 입력 할 수 있습니다.

: pclose

스크래치 미리보기를 수동으로 닫습니다.


1

다음 매핑을 던져 특정 키가 미리보기 창을 닫도록 할 수 있습니다.

inoremap <space> <C-O>:wincmd z<CR><space>
inoremap ( <C-O>:wincmd z<CR>(
inoremap ) <C-O>:wincmd z<CR>)
inoremap , <C-O>:wincmd z<CR>,
inoremap <CR> <C-O>:wincmd z<CR><CR>
inoremap <esc> <esc>:wincmd z<CR>

삽입 모드에서 완료되면 자동 명령을 사용하여 미리보기 창을 닫을 수도 있습니다.

augroup GoAwayPreviewWindow
autocmd! InsertLeave * wincmd z
augroup end

1

이 질문이 매우 오래되었다는 것을 알고 있지만 "깨끗한"솔루션을 찾고 며칠 후에 작업을 수행하는 CompleteDone 자동 기능을 찾았습니다.

au CompleteDone * pclose

0

다음에서 입력 할 수 있습니다 .vimrc.

set completeopt-=preview

더 설명 해주시 겠어요?
Wtower

1
이것은 실제로 질문에 대한 답이 아닙니다. 이것은 미리보기 창이 팝업되는 것을 방지하고 완료 후에도 닫히지 않습니다. OP는 "completeopt"도 시도했다고 말했습니다.
nerdwaller
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.