Низкая производительность на CtrlP, он не работает, чтобы игнорировать некоторые папки

Я пытался игнорировать vendor добавив следующую настройку в .vimrcи я начинаю ctrlP набрав ff

map ff :CtrlP<.><cr>

Тем не менее, он все еще пытался проиндексировать все файлы под zeus папка в том числе vendor папка.

введите описание изображения здесь

Но после окончания индекса я все еще могу NOT искать файлы в vendor,

введите описание изображения здесь

Почему CtrlP занять много времени для индексации?

129 "add ctrlp.vim setting
130 ""
131 set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*/vendor/*,*/\.git/*
132 let g:ctrlp_custom_ignore = 'tmp$\|\.git$\|\.hg$\|\.svn$\|.rvm$|.bundle$\|vendor'
133 let g:ctrlp_working_path_mode = 'ra'
134 let g:ctrlp_match_window_bottom=1
135 let g:ctrlp_max_height=25
136 let g:ctrlp_match_window_reversed=0
137 let g:ctrlp_mruf_max=500
138 let g:ctrlp_follow_symlinks=1
139 let g:ctrlp_clear_cache_on_exit=0

введите описание изображения здесь

Вот мой .vimrcЯ думал, что могут быть некоторые настройки, противоречащие друг другу

hi  Comment  ctermfg=6

"make vim save and load the folding of the document each time it loads"
""also places the cursor in the last place that it was left."
au BufWinLeave *.* mkview
au BufWinEnter *.* silent loadview


"function SetCafeOptions()
    "CoffeeCompile
    ":set nonu
    ":res -24
    ":res +24
"endfunction

set encoding=utf-8 
set fileencoding=utf-8 

colorscheme elflord            
set smartindent
set tabstop=4
set expandtab  
set shiftwidth=4

"make it autoreload
set autoread 

"auto move it last time the position you viewed
"make vim save and load the folding of the document each time it loads"
""also places the cursor in the last place that it was left."

"try to set show ansi color
if &term=="ansi" 
    set t_Co=0 
endif

"set expandtab

filetype on

if has("cscope")
    set csprg=/usr/bin/cscope
    set csto=0
    set cst
    set nocsverb
    " add any database in current directory
    if filereadable("cscope.out")
        cs add cscope.out
        " else add database pointed to by environment
    elseif $CSCOPE_DB != ""
        cs add $CSCOPE_DB
    endif
    set csverb
    set cscopetag
    set cscopequickfix=s-,g-,c-,d-,t-,e-,f-,i-
endif

"let Tlist can close windows at one time
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Ctags_Cmd = '/usr/local/bin/ctags'

" Key map
" Presee F4 and you can open the NERDTree
nnoremap <silent> <F4> :NERDTree<CR>  
"nnoremap <silent> <F3> :!/usr/bin/env python %<CR>
" Show function List with Tlist 
nnoremap <F12> :TlistToggle<CR>

" Map ctrl+q to ctrlw+ctrlw
"
"nnoremap <silent> <C-q>  :<C-w><C-w>

"switch in splitted window
map <c-d> <c-w>l
map <c-a> <c-w>h

"set highlight
set hlsearch

"set autocomplet 
"autocmd BufNewFile,BufRead *.html.erb set filetype=html.eruby
autocmd BufNewFile,BufRead *.html.erb set filetype=erb.html.eruby
filetype plugin indent on

"auto import python template
autocmd bufnewfile *.py 0r ~/common_lib/python_lib/tmpl.py


map ff :CtrlP<.><cr>
"set NerdTreeSize
let g:NERDTreeWinSize=12
let g:NERDTreeIgnore=['\.vim$', '\~$', '\vendor$']
"auto close the nerdtress window whe you open new file
"let g:ctrlp_dont_split = 'nerdtree'

set nocompatible " explictly get out of vi-compatible mode

set background=dark " we plan to use a dark background

syntax on " syntax highlighting on

set number " turn on line numbers

set ruler "always show current position along the bottom

set incsearch " do highlight as you type you search phrase

set ignorecase " case insensitive by default

set smartcase " if there are caps, go case-sensitive


"Rope vim
"let $PYTHONPATH .= ":~/install/ropehg/rope:~/install/ropehg/ropemode:~/install/ropehg/ropevim"
"source ~/install/ropehg/ropevim/ropevim.vim
"let g:pymode_rope_goto_def_newwin = "new"
"let ropevim_vim_completion=1
"Use Ctrl + ] . to autocomple
inoremap <C-]> <C-R>=RopeCodeAssistInsertMode()<CR>
map <leader>j :RopeGotoDefinition<CR>
map <leader>r :RopeRename<CR>

" Load the whole plugin
 let g:pymode = 1
" Load run code plugin
 let g:pymode_run = 1

"add ctrlp.vim setting
""
set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*/vendor/*,*/\.git/*
let g:ctrlp_custom_ignore = 'tmp$\|\.git$\|\.hg$\|\.svn$\|.rvm$|.bundle$\|vendor'
let g:ctrlp_working_path_mode = 0
let g:ctrlp_match_window_bottom=1
let g:ctrlp_max_height=25
let g:ctrlp_match_window_reversed=0
let g:ctrlp_mruf_max=500
let g:ctrlp_follow_symlinks=1
let g:ctrlp_clear_cache_on_exit=0


"Vundle
 set rtp+=~/.vim/bundle/vundle/
 call vundle#rc()
 Bundle 'gmarik/vundle'
 Bundle 'tpope/vim-surround'
 Bundle 'Raimondi/delimitMate'
"coffee script"
 Bundle 'kchmck/vim-coffee-script'
 Bundle 'ack.vim'
 Bundle 'matchit.zip'
 Bundle 'kien/ctrlp.vim'
 "Markdown"
 "Bundle 'plasticboy/vim-markdown'
 ""Vim-scripts repo
 "Bundle 'The-NERD-Commenter'
 Bundle 'pep8'
 ""Bundle 'AutoClose'
 Bundle 'desert-warm-256'
 Bundle 'https://github.com/altercation/vim-colors-solarized.git'
 filetype plugin indent on

 nmap <leader>a <Esc>:Ack ""

 "folding code
 nnoremap <space> za
 vnoremap <space> zf

" pep8
let g:pep8_map='<leader>8'

"coffee script"
call pathogen#infect()



let Tlist_Use_Right_Window   = 1

"autocmd BufEnter * if &filetype == "" | setlocal ft=python | endif

"markdown https://github.com/plasticboy/vim-markdown/wiki"
"let g:vim_markdown_folding_disabled=1

"auto exec ruby and coffee script with F5 , remeber to save file before launching
autocmd FileType python map <leader>p :!python %<cr>
autocmd FileType ruby,rb map <leader>5 :w!<cr>:!ruby %<cr>
autocmd FileType * map <leader>e :qa!<cr>

"set extension .god as a Ruby file"
"au BufNewFile,BufRead *.god set filetype=ruby

"autocmd FileType coffee nmap <F5> :CoffeeCompile<cr>
"autocmd FileType coffee map <F5> :call SetCafeOptions()<cr>

"so ~/.vim/snippets/support_functions.vim

set re=1

autocmd Filetype gitcommit setlocal spell textwidth=72


 " enable per-project .vimrc files
   set exrc
 "   " Only execute safe per-project vimrc commands
     set secure"

4 ответа

Вот несколько советов, которые определенно должны ускорить Ctrl:

let g:ctrlp_cache_dir = $HOME . '/.cache/ctrlp'
if executable('ag')
  let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'
endif

В приведенном выше примере первый параметр указывает ctrlp сохранять кеш в заданном месте, поэтому при повторном запуске vim он будет читать оттуда и загружать кеш (намного быстрее).

Вторая опция настраивает ctrlp для использования ag (the_silver_searcher) вместо нативного vim globpath() API для поиска файлов, это значительно улучшит скорость сканирования, если вы не хотите использовать ag, вы можете даже использовать старый добрый grep и все равно должно быть значительно быстрее. Проверьте :h 'g:ctrlp_user_command' Больше подробностей.

Последнее средство для быстрого запуска

Я перепробовал все, что нашел в разных местах, чтобы улучшить скорость индексации моего ctrlp, но ничего не помогло. В конце концов, я согласился с этим:

let g:ctrlp_clear_cache_on_exit = 0

Он сохраняет кэш Ctrlp после закрытия VIM, поэтому следующий запуск будет быстрым. И вы можете обновить кэш вручную, нажав F5 в любое время.

Как я объяснил здесь, если вы введете :help ctrlp-options и прочитав немного, вы найдете:

Примечание #1: по умолчанию wildignore и g:ctrlp_custom_ignore применяются только тогда, когда globpath() используется для сканирования файлов, поэтому эти параметры не применяются, когда используется команда, определенная с помощью g:ctrlp_user_command.

Таким образом, вам может понадобиться unlet g:ctrlp_user_command (возможно, для команды по умолчанию) для фактического использования wildignore, Например, в вашем ~/.vimrc, добавлять:

if exists("g:ctrl_user_command")
  unlet g:ctrlp_user_command
endif
set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*/vendor/*,*/\.git/*
...

После этого вам нужно обновить ctrlp кеш: в Vim нажмите F5 в ctrlp режим или запустить :CtrlPClearAllCachesили удалите каталог кеша прямо в вашей оболочке:

rm -r ~/.cache/ctrlp/      # On Linux

Что касается индексации (которая кажется вашей проблемой), она должна следовать вашим правилам игнорирования. Вы можете проверить проиндексированные файлы в ~/.cache/ctrlp/%path%to%your%project%folder.txt,

Нашел этот бит при просмотре веб-страниц, и это сделало индексацию и поиск файлов мгновенными.

let g:ctrlp_user_command = ['.git/', 'git ls-files --cached --others  --exclude-standard %s']

Я не до конца понимаю, что здесь происходит, поэтому, если у кого-то будет немного больше знаний, чтобы разобраться в этом, я бы хотел знать, что происходит за кулисами.

Если у вас есть ripgrep (rg) установлен, вы можете использовать его с CtrlP. Это намного быстрее, чем поиск файлов по умолчанию. Это заклинание, необходимое для работы:

if executable('rg')
  let g:ctrlp_user_command = 'rg %s --files --color=never --glob ""'
  let g:ctrlp_use_caching = 0
endif

ч / т Эллиот Джексон

Другие вопросы по тегам