Wykonanie Ctrl-n zajmuje dużo czasu na „skanowanie dołączonego pliku”

16

Odświeżam swoje umiejętności vima i bawię się ukończeniem za pomocą polecenia Ctrl-n. Programuję w Perlu. Kiedy jestem w trybie wstawiania i wciskam Ctrl-n, na dole terminala pojawia się komunikat „Skanowanie dołączonego pliku” i wygląda na to, że skanuje pliki w katalogach dystrybucyjnych Perla. Może to potrwać kilka sekund, zanim się skończy. Wygląda na to, że robi to z pakietami, które dołączam, które są komentowane:

#use Moose;

Więc muszę usunąć te wiersze, aby ta funkcja miała jakąkolwiek wartość. Czy coś brakuje?

Korzystam z wtyczki obsługującej perl.

StevieD
źródło
Próbowałem czegoś takiego w .vimrc, ale miało to wpływ na:let g:ctrlp_custom_ignore = { 'dir': '^/usr/' } let g:ctrln_custom_ignore = { 'dir': '^/usr/' }
StevieD

Odpowiedzi:

14

Domyślnie, kiedy naciskasz C-nlub C-p, Vim przegląda różne źródła w poszukiwaniu kandydatów, którzy wypełnią menu ukończenia.

Te źródła można skonfigurować za pomocą opcji bufora lokalnego 'complete'.

Wartością tej opcji jest rozdzielona przecinkami lista flag. Każda flaga ma swoje własne znaczenie opisane w :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 "]"

Domyślnie jego wartością jest .,w,b,u,t,i, co oznacza:

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

Jeśli okaże się, że skanowanie dołączonych plików zajmuje zbyt dużo czasu, możesz spróbować usunąć iflagę z 'cpt'opcji.

Jeśli chcesz usunąć go z wartości globalnej, aby domyślnie wpływać na wszystkie bufory, napisz vimrc:

setglobal complete-=i

Jeśli chcesz zrobić to samo, ale tylko dla perlplików, możesz zainstalować autocmd wewnątrz vimrc:

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

Lub lepiej, możesz utworzyć wtyczkę typu pliku, na przykład w ~/.vim/after/ftplugin/perl.vim, w której po prostu napiszesz:

setlocal complete-=i

Aby sprawdzić, jakie są bieżące globalne i lokalne wartości twojej 'complete'opcji oraz gdzie były ostatnio ustawione, możesz użyć tych poleceń:

verbose setglobal complete?
verbose setlocal complete?

Lub krócej:

verb setg cpt?
verb setl cpt?

Jeśli jedynym źródłem, które Cię interesuje, jest bieżący bufor, zamiast tego C-nmożesz użyć C-x C-n. Zobacz :h i_^x^nwięcej informacji.

użytkownik9433424
źródło
1
Czy istnieje sposób wykluczenia słów kluczowych w plikach na określonych ścieżkach?
StevieD,
Dokumenty Vima 'complete'wspominają o „dołączonych plikach”, ale nie zawierają linków do bardziej szczegółowych informacji o tym, co to oznacza. Więc czytaj :he include-search. Tam możesz zobaczyć, że 'include'opcja określa, co to znaczy, i 'path'jest używana do wyszukiwania. Są one przydatne do dokładniejszego dostosowywania niż tylko włączanie / wyłączanie całej funkcji.
jwd