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
@ 벤 : 와우는 어떻게 게시하기 전에 당신의 코멘트를 보지 못했다 이 질문을 . 내가 거기에서 가져온 대답은 변경이었다 pclose에 silent! 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.