Ctrl-n tamamlanması “dahil edilen dosyayı taramak” için uzun zaman alıyor


16

Vim becerilerimi geliştiriyorum ve Ctrl-n komutunu kullanarak tamamlanıyorum. Perl'de programlıyorum. Ekleme modunda olduğumda ve Ctrl-n tuşuna bastığımda, terminalin altındaki "Dahil edilen dosya taranıyor" olduğunu ve perl dağıtım dizinlerindeki dosyaları taradığı anlaşılıyor. Bu işlemin tamamlanması birkaç saniye sürebilir. Bu yorum dahil ben dahil paketleri ile yaptığı gibi görünüyor:

#use Moose;

Bu özelliğin herhangi bir değeri olması için bu satırları silmeliyim. Bir şey mi kaçırıyorum?

Perl-destek eklentisini kullanıyorum.


let g:ctrlp_custom_ignore = { 'dir': '^/usr/' } let g:ctrln_custom_ignore = { 'dir': '^/usr/' }
.Vimrc'de

Yanıtlar:


14

Varsayılan olarak, C-nveya tuşuna bastığınızda C-pVim, tamamlama menüsünü dolduracak adayları bulmak için çeşitli kaynakların içine bakar.

Bu kaynaklar arabellek-yerel 'complete'seçeneğiyle yapılandırılabilir .

Bu seçeneğin değeri, virgülle ayrılmış bir bayrak listesidir. Her bayrağın kendi anlamı vardır :h 'cpt:

.   scan the current buffer ('wrapscan' is ignored)
w   scan buffers from other windows
b   scan other loaded buffers that are in the buffer list
u   scan the unloaded buffers that are in the buffer list
U   scan the buffers that are not in the buffer list
k   scan the files given with the 'dictionary' option
kspell  use the currently active spell checking |spell|
k{dict} scan the file {dict}.  Several "k" flags can be given, patterns are valid too.  For example:  
        :set cpt=k/usr/dict/*,k~/spanish
s   scan the files given with the 'thesaurus' option
s{tsr}  scan the file {tsr}.  Several "s" flags can be given, patterns are valid too.
i   scan current and included files
d   scan current and included files for defined name or macro |i_CTRL-X_CTRL-D|
]   tag completion
t   same as "]"

Varsayılan olarak, değeri .,w,b,u,t,i:

   1. the current buffer
   2. buffers in other windows
   3. other loaded buffers
   4. unloaded buffers
   5. tags
   6. included files

Birlikte verilen dosyaları taramanın çok uzun sürdüğünü fark ederseniz i, 'cpt'seçeneği seçenekten kaldırmayı deneyebilirsiniz .

Genel değerden kaldırmak istiyorsanız, varsayılan olarak tüm arabellekleri etkilemek için aşağıdakilere yazabilirsiniz vimrc:

setglobal complete-=i

Aynı şeyi yapmak istiyorsanız, ancak yalnızca perldosyalar için, içine bir autocmd kurabilirsiniz vimrc:

augroup PerlSettings
    autocmd!
    autocmd FileType perl setlocal complete-=i
augroup END

Ya da daha iyisi, örneğin içine ~/.vim/after/ftplugin/perl.vimyazacağınız bir dosya türü eklentisi oluşturabilirsiniz :

setlocal complete-=i

'complete'Seçeneğinizin geçerli küresel ve yerel değerlerinin ne olduğunu ve en son nerede ayarlandıklarını kontrol etmek için şu komutları kullanabilirsiniz:

verbose setglobal complete?
verbose setlocal complete?

Veya daha kısa:

verb setg cpt?
verb setl cpt?

İlgilendiğiniz tek kaynak geçerli arabellekse, kullanmak yerine, C-nkullanabilirsiniz C-x C-n. Daha :h i_^x^nfazla bilgi için bakınız .


1
Belirli yollardaki dosyalarda anahtar kelimeleri hariç tutmanın bir yolu var mı?
StevieD

Vim, 'complete'"dahil edilen dosyalar" dan bahsediyor, ancak bunun ne anlama geldiğiyle ilgili daha fazla ayrıntıya bağlantı vermiyor. Öyleyse okuyun :he include-search. Orada, 'include'seçeneğin bunun ne anlama geldiğini tanımladığını ve 'path'arama için kullanıldığını görebilirsiniz. Bunlar, tüm özelliği açıp kapatmaktan daha iyi özelleştirme yapmak için kullanışlıdır.
jwd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.