Quá trình hoàn tất Ctrl-n mất nhiều thời gian để quét tập tin kèm theo


15

Tôi đang cải thiện các kỹ năng vim của mình và giải quyết vấn đề hoàn thành bằng cách sử dụng lệnh Ctrl-n. Tôi đang lập trình ở Perl. Khi tôi ở chế độ chèn và nhấn Ctrl-n, tôi nhận được một thông báo rằng đó là "Quét tệp bao gồm" ở dưới cùng của thiết bị đầu cuối và có vẻ như đó là quét các tệp trong thư mục phân phối perl. Điều này có thể mất vài giây trước khi nó kết thúc. Có vẻ như nó làm điều này với các gói tôi bao gồm được nhận xét:

#use Moose;

Vì vậy, tôi phải xóa các dòng này để tính năng này có giá trị bất kỳ. Tui bỏ lỡ điều gì vậy?

Tôi đang sử dụng plugin hỗ trợ perl.


Tôi đã thử một cái gì đó như thế này trong .vimrc nhưng nó đã có hiệu lực:let g:ctrlp_custom_ignore = { 'dir': '^/usr/' } let g:ctrln_custom_ignore = { 'dir': '^/usr/' }
StevieD

Câu trả lời:


13

Theo mặc định, khi bạn nhấn C-nhoặc C-p, Vim nhìn vào các nguồn khác nhau để tìm ứng viên sẽ điền vào menu hoàn thành.

Những nguồn này có thể được cấu hình với 'complete'tùy chọn đệm cục bộ .

Giá trị của tùy chọn này là danh sách các cờ được phân tách bằng dấu phẩy. Mỗi cờ có ý nghĩa riêng được mô tả trong :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 "]"

Theo mặc định, giá trị của nó là .,w,b,u,t,i, có nghĩa là:

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

Nếu bạn thấy rằng việc quét các tệp được bao gồm mất quá nhiều thời gian, bạn có thể thử xóa icờ khỏi 'cpt'tùy chọn.

Nếu bạn muốn xóa nó khỏi giá trị toàn cầu, để ảnh hưởng đến tất cả các bộ đệm theo mặc định, bạn sẽ viết vào vimrc:

setglobal complete-=i

Nếu bạn muốn làm điều tương tự, nhưng chỉ đối với perlcác tệp, bạn có thể cài đặt một autocmd bên trong vimrc:

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

Hoặc tốt hơn, bạn có thể tạo một plugin filetype, ví dụ ~/.vim/after/ftplugin/perl.vim, trong đó bạn chỉ cần viết:

setlocal complete-=i

Để kiểm tra xem các giá trị toàn cầu và cục bộ hiện tại của 'complete'tùy chọn của bạn là gì và nơi chúng được đặt lần cuối, bạn có thể sử dụng các lệnh sau:

verbose setglobal complete?
verbose setlocal complete?

Hoặc ngắn hơn:

verb setg cpt?
verb setl cpt?

Nếu nguồn duy nhất mà bạn quan tâm là bộ đệm hiện tại, thì, thay vì sử dụng C-n, bạn có thể sử dụng C-x C-n. Xem :h i_^x^nđể biết thêm.


1
Có cách nào để loại trừ từ khóa trong các tệp trong các đường dẫn nhất định không?
StevieD

Các tài liệu Vim 'complete'đề cập đến "các tệp được bao gồm", nhưng không liên kết đến nhiều chi tiết hơn về ý nghĩa của nó. Vì vậy, đọc :he include-search. Ở đó, bạn có thể thấy 'include'tùy chọn xác định điều đó có nghĩa là gì và 'path'được sử dụng để tìm kiếm. Đây là hữu ích để thực hiện tùy chỉnh tốt hơn so với chỉ bật / tắt toàn bộ tính năng.
jwd
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.