Медленная производительность на CtrlP, это не работает, чтобы игнорировать некоторые папки
Я попытался проигнорировать vendor
, добавив следующий параметр в .vimrc
и я запустил ctrlP
, набрав ff
map ff :CtrlP<.><cr>
Однако он все еще пытался индексировать все файлы в папке zeus
, включая папку vendor
.
![enter image description here]()
Но после завершения индекса я все еще могу NOT
искать файлы под vendor
,
![enter image description here]()
Почему 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
![enter image description here]()
Вот мой .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"
Ответы
Ответ 1
Вот несколько советов, которые должны определенно ускорить ctrlp:
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 native globpath()
apis для поиска файлов, это значительно улучшит скорость его сканирования, если вы не хотите использовать ag
, вы можете даже используйте обычный старый grep
, и он все равно должен быть значительно быстрее. Проверьте :h 'g:ctrlp_user_command'
для более подробной информации.
Ответ 2
Как я объяснил здесь, если вы наберете :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
.
Ответ 3
Последнее средство быстрого запуска
Я попробовал все, что нашел в разных местах, чтобы улучшить скорость индексирования моего ctrlp, но ничего не помогло.
В конце я решил:
let g:ctrlp_clear_cache_on_exit = 0
Сохраняет кеш ctrlp после закрытия VIM, поэтому следующий запуск будет быстрым. И вы можете обновить кеш вручную, нажав F5 в любое время.
Ответ 4
Нашел этот бит, оглядываясь на промежутки, и он мгновенно выполнил индексацию и поиск файлов.
let g:ctrlp_user_command = ['.git/', 'git ls-files --cached --others --exclude-standard %s']
Я не совсем понимаю, что здесь происходит, поэтому, если у кого-то есть немного больше знаний, чтобы проанализировать это, я бы хотел узнать, что происходит за кулисами.