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

166

我发现了一个很棒的ctrlp.vim插件,它是我之前使用过的Command-T插件的一个好替代品。我不喜欢Command-T的原因是它在启动vim后第一次调用时需要大约20-30秒来重新扫描文件。

CtrlP的速度更快,但它似乎不会自动重新扫描新创建的文件。我应该如何手动触发重新扫描?

谢谢!


3
在文档中已经非常清楚地回答了这个问题。 - Mark Wilden
5个回答

300

根据文档

<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缓存中,则它会自动显示匹配项。


110
请注意,这必须在CTRL-P模式下完成。 因此,1.按下ctrl-p 2.按下F5 - David Kay
2
几乎对我有用,我看到它在更新,但它找不到新添加的文件。 - xer0x
1
@xer0x 确保你在正确的CWD中。在使用NERDTree时我也遇到了同样的问题。 - jsbeckr
9
补充一下,你在编辑文件时无法搜索自己的文件。 - Daryll Santos

67

正如Jeet所说,你可以按下F5刷新,但如果这不起作用,你可以运行:CtrlPClearCache,这就是F5应该要运行的命令。

来自文档

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


我已将GNU screen窗口映射到我的Fn键,所以这非常完美 - 谢谢! - LeonardChallis

11

我在 .vimrc 文件中添加了以下代码,用于关闭 ctrlp 缓存:

g:ctrlp_use_caching = 0


这可能是对原问题最好、最准确的答案,特别是当你使用需要替代修饰键才能访问功能行的计算机时(我在看你,苹果...)。 - Devon Kiss
我喜欢这个答案,即使没有缓存,CTRP已经足够快了,可以使用Ag来提高速度。 - Nhan Tran

6
如果您希望,可以在保存时自动清除缓存,这样它将被强制刷新以便下次使用。 将此放入您的vimrc文件中(由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

3

我知道这是一个老问题,但是它非常简单,所以必须评论一下。 把这个放在你的.vimrc文件中。

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

这将刷新缓存,然后调用CtrlP。再也不会出现文件丢失的情况了。

4
为什么不直接通过 g:ctrlp_use_caching 禁用缓存呢? - Martin Tournoij

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接