VIM ctrlp.vim插件:如何重新扫描文件?


152

我遇到了很棒的ctrlp.vim插件。它是我以前使用过的Command-T插件的很好的替代品。我对Command-T不满意的是,在启动vim之后首次调用它时,重新扫描文件大约需要20-30秒。

CtrlP的运行速度快得多,但它似乎不会自动重新扫描新创建的文件。如何手动触发重新扫描?

谢谢!


3
在文档中可以很清楚地回答。
Mark Wilden

Answers:


283

文档中

<F5>
  - Refresh the match window and purge the cache for the current directory.
  - Remove deleted files from MRU list.

假设您已经处于ctrl-p模式。请注意,您可以在查询中间按F5,即可以键入一些字符,发现它与最近更新的文件不匹配,然后按F5立即刷新。如果文件刚刚添加到ctrl-p缓存中,它将自动为您显示匹配项。


105
请注意,这必须在CTRL-P模式下完成。所以1. ctrl-p2.F5
David Kay 2012年

1
几乎对我
有用

1
@ xer0x确保您使用的是正确的CWD。使用NERDTree时遇到了相同的问题。
jsbeckr

9
只是要添加,您当前无法在编辑文件时搜索自己的文件。
Daryll Santos 2014年

58

正如Jeet所说,您可以按,F5但如果不起作用,则可以始终运行:CtrlPClearCache,这就是F5应该运行。

文档中

:CtrlPClearCache
刷新当前工作目录的缓存。与在CtrlP中按下相同。
要启用或禁用缓存,请使用| g:ctrlp_use_caching |。选项。


我有GNU屏幕窗口映射到我的Fn键,所以这很完美-谢谢!
LeonardChallis

6

如果需要,可以在发生保存时自动清除缓存,因此在下次使用时将被强制刷新。

把它放在你的vimrc(credit docwhat)中:

" CtrlP auto cache clearing.
" ----------------------------------------------------------------------------
function! SetupCtrlP()
  if exists("g:loaded_ctrlp") && g:loaded_ctrlp
    augroup CtrlPExtension
      autocmd!
      autocmd FocusGained  * CtrlPClearCache
      autocmd BufWritePost * CtrlPClearCache
    augroup END
  endif
endfunction
if has("autocmd")
  autocmd VimEnter * :call SetupCtrlP()
endif

不幸的是,无法自动在后台使缓存保持最新状态。


2
保存似乎有点昂贵。是否有可能触发创建新文件?
Alex Moore-Niemi 2015年

4

我将其添加到.vimrc中,以关闭ctrlp缓存

g:ctrlp_use_caching = 0


这可能是对原始问题的最好,最准确的答案。尤其是如果您使用的是计算机(我正在看着您的Apple ..),则功能行需要备用的修改键才能访问。
德文·基斯

我喜欢这个答案,即使没有缓存,ctrp也已经足够快,可以使用Ag来提高速度
Nhan Tran

2

我知道这是一个古老的问题,但是它很简单,我不得不评论。把它放在你的.vimrc中

:nnoremap <c-p> :CtrlPClearCache<bar>CtrlP<cr>

这将刷新缓存,然后调用CtrlP。不再丢失文件。


2
为什么不只禁用with g:ctrlp_use_caching
马丁·图尔诺伊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.