Penyelesaian Ctrl-n membutuhkan waktu lama untuk “memindai file yang disertakan”

15

Saya meningkatkan keterampilan vim saya dan mengutak-atik penyelesaian dengan menggunakan perintah Ctrl-n. Saya pemrograman di Perl. Ketika saya dalam mode insert dan menekan Ctrl-n, saya mendapatkan pesan bahwa itu adalah "Memindai file yang disertakan" di bagian bawah terminal dan sepertinya memindai file dalam direktori distribusi perl. Ini bisa memakan waktu beberapa detik sebelum selesai. Sepertinya ini dilakukan dengan paket yang saya sertakan yang berkomentar:

#use Moose;

Jadi saya harus menghapus garis-garis ini agar fitur ini bernilai apa pun. Apakah saya melewatkan sesuatu?

Saya menggunakan plugin perl-support.

StevieD
sumber
Saya mencoba sesuatu seperti ini di .vimrc tetapi berpengaruh:let g:ctrlp_custom_ignore = { 'dir': '^/usr/' } let g:ctrln_custom_ignore = { 'dir': '^/usr/' }
StevieD

Jawaban:

13

Secara default, ketika Anda menekan C-natau C-p, Vim mencari di dalam berbagai sumber untuk menemukan kandidat yang akan mengisi menu penyelesaian.

Sumber-sumber ini dapat dikonfigurasi dengan opsi buffer-local 'complete'.

Nilai opsi ini adalah daftar tanda yang dipisahkan koma. Setiap bendera memiliki artinya sendiri yang dijelaskan dalam :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 "]"

Secara default, nilainya adalah .,w,b,u,t,i, yang berarti:

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

Jika Anda menemukan bahwa memindai file-file yang disertakan membutuhkan terlalu banyak waktu, Anda dapat mencoba menghapus iflag dari 'cpt'opsi.

Jika Anda ingin menghapusnya dari nilai global, untuk memengaruhi semua buffer secara default, Anda akan menulis di vimrc:

setglobal complete-=i

Jika Anda ingin melakukan hal yang sama, tetapi hanya untuk perlfile, Anda dapat menginstal autocmd di dalam vimrc:

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

Atau lebih baik, Anda bisa membuat plugin tipe file, misalnya di ~/.vim/after/ftplugin/perl.vim, di mana Anda cukup menulis:

setlocal complete-=i

Untuk memeriksa apa nilai global dan lokal saat ini dari 'complete'opsi Anda , dan di mana nilai-nilai itu ditetapkan terakhir, Anda bisa menggunakan perintah ini:

verbose setglobal complete?
verbose setlocal complete?

Atau lebih pendek:

verb setg cpt?
verb setl cpt?

Jika satu-satunya sumber yang Anda minati adalah buffer saat ini, maka, alih-alih menggunakan C-n, Anda bisa menggunakan C-x C-n. Lihat :h i_^x^nuntuk info lebih lanjut.

pengguna9433424
sumber
1
Apakah ada cara untuk mengecualikan kata kunci dalam file di jalur tertentu?
StevieD
Dokumen Vim untuk 'complete'menyebutkan "file yang disertakan", tetapi jangan menautkan ke rincian lebih lanjut tentang apa artinya itu. Jadi, baca :he include-search. Di sana, Anda dapat melihat bahwa 'include'opsi menentukan apa artinya itu, dan 'path'digunakan untuk pencarian. Ini berguna untuk melakukan penyesuaian yang lebih baik daripada hanya mengaktifkan / menonaktifkan seluruh fitur.
jwd