【问题标题】:VIM ctrlp.vim plugin: how to rescan files?VIM ctrlp.vim 插件:如何重新扫描文件?
【发布时间】:2024-01-16 16:41:01
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 这在文档中回答得非常清楚。

标签: vim plugins


【解决方案1】:

来自documentation

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

【讨论】:

  • 请注意,这必须在 CTRL-P 模式下完成。所以,1.ctrl-p 2.F5
  • 几乎对我有用,我看到它正在更新,但它没有找到新添加的文件
  • @xer0x 确保您处于正确的 CWD 中。使用 NERDTree 时遇到同样的问题。
  • 只是添加,您当前正在编辑文件时无法搜索自己的文件。
【解决方案2】:

正如Jeet 所说,您可以按F5,但如果这不起作用,您可以随时运行:CtrlPClearCache,这是应该运行的F5

来自documentation

:CtrlPClearCache
刷新当前工作目录的缓存。同按&lt;F5&gt; 在 CtrlP 内。
要启用或禁用缓存,请使用 |g:ctrlp_use_caching|选项。

【讨论】:

  • 我有 GNU 屏幕窗口映射到我的 Fn 键,所以这是完美的 - 谢谢!
【解决方案3】:

我将此添加到 .vimrc 中,它会关闭 ctrlp 缓存

g:ctrlp_use_caching = 0

【讨论】:

  • 这可能是对原始问题的最佳和最准确的答案。尤其是如果您使用的是计算机(我正在查看您的 Apple..),其中功能行需要备用修饰键才能访问。
  • 我喜欢这个答案,即使没有缓存,ctrp已经足够快了,可以使用Ag来提高速度
【解决方案4】:

如果需要,您可以在保存时自动破坏缓存,以便下次使用时强制刷新。

Put this in your 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

不幸的是,没有办法在后台自动保持缓存的新鲜度。

【讨论】:

  • 保存似乎有点贵。是否有可能触发创建新文件?
【解决方案5】:

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

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

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

【讨论】:

  • 为什么不用g:ctrlp_use_caching 禁用缓存?