2010-06-23 25 views
86

omnifunc=pythoncomplete kullanıyorum. Bir sözcüğü otomatik olarak tamamladığınızda (ör. os.<something>), beklendiği gibi uygun sınıf üyeleri ve işlevlerinin yanı sıra seçili üye veya işlevle ilgili belgeleri içeren bir önbellek önizleme penceresinin listesini alırım. Bu harika, ama istediğim işlevi seçtikten sonra önizleme penceresi kalır.Vim'de otomatik tamamlamadan sonra önizleme penceresini otomatik olarak nasıl kaldırırsınız?

:pc ile ondan kurtulabilirim, ancak işlevimi seçtikten sonra otomatik olarak kaybolmasını istiyorum, bir Eclipse. completeopt ile oynadım ama boşuna.

+5

iyi soru - Bu aptal arabellek açık bıraktığı için omnicomplete kullanmayı bıraktım. –

cevap

100

:

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> 

Ayrıca ekleme modunda bitince önizleme penceresini kapatmak için autocommands kullanabilirsiniz Supertab eklentisi yüklü, supertab-closepreviewonpopupclose adında bir seçenek var.

sizin .vimrc aşağıdaki koyun:

let g:SuperTabClosePreviewOnPopupClose = 1 
+0

Bir çekicilik gibi çalıştım. Teşekkürler! –

+2

Bu, benim için düzenleme penceresini kırıyor gibi görünüyor (q: or q /). Ben başka bir çek ekledi:! && bufname ("%") = "[Komut Satırı]" iki hattın – Ben

+2

@Ben için: woah [Bu soruya] göndermeden önce yorumunu görmedik nasıl (http://stackoverflow.com/ q/11733388/79125). Buradan aldığım cevap 'pclose''yu' sessiz 'olarak değiştirdi! pclose'. – idbrii

1

Bazı anahtarların önizleme penceresini kapatmaya çalışmasını sağlamak için aşağıdaki eşleştirmeleri atabilirsiniz.

" 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 
17

Eğer varsa: vimrc aşağıdaki koy

augroup GoAwayPreviewWindow 
autocmd! InsertLeave * wincmd z 
augroup end 
+15

Ben bu cevabı upvote. – duleshi

+0

@duleshi tam olarak aradığım şey! –

+0

@AndyHayden Glad Yardım edebilirim! Yorum için böyle bir şey bıraktım! – duleshi

7

otomatik olarak kapatmak için nasıl bilmiyorum ama

yazabilirsiniz: kapatmak için

pclose Elle çizilmiş önizleme.

60

Zaten kabul edilmiş bir yanıt olsa da, bunu doğrudan bu sorunla karşılaşan herhangi bir eklenti için çalışacak olan dokümanlardan buldum.

autocmd CompleteDone * pclose 
+11

'CompleteDone' sürüm 7.4 ilave edildi.Bu yöntem, 'CursorMovedI'/'InsertLeave 'yaklaşımına göre tercih edilmelidir. –

+7

@PeterRincker Pencereyi tamamlanmamayı tercih ederim (çünkü argümanlarda yazdığım gibi belgeleri görmek istiyorum), bu yüzden InsertLeave satırını kullanacağım. – DBedrenko

2

Ben bu soruyu çok eski olduğunu biliyorum ama bir "temiz" çözüm arama gün sonra ben sadece işi yapar CompleteDone autofunction bulundu: Sen o yazabilirsiniz

au CompleteDone * pclose 
0

.vimrc:

set completeopt-=preview 
+0

Cou daha fazla açıklamak ister misiniz lütfen? – Wtower

+1

Bu aslında soruyu yanıtlamıyor. Bu, önizleme penceresinin tamamlandıktan sonra işten atılmayacak şekilde önyükleme yapmasını engelliyor. OP'nin "tamamlamayı" da denediğini söylediğine dikkat edin. – nerdwaller

İlgili konular