Plugin VIM ctrlp.vim: làm thế nào để quét lại các tập tin?


152

Tôi đã đi qua các plugin ctrlp.vim tuyệt vời . Nó là một thay thế tốt cho plugin Command-T mà tôi đã sử dụng trước đây. Điều tôi không thích ở Command-T là sẽ mất khoảng 20-30 giây để quét lại các tệp khi nó được gọi lần đầu tiên sau khi bắt đầu vim.

CtrlP hoạt động nhanh hơn rất nhiều nhưng dường như nó không tự động quét lại các tệp mới tạo. Làm thế nào tôi nên kích hoạt quét lại bằng tay?

Cảm ơn!


3
Điều này được trả lời rất rõ ràng trong tài liệu.
Mark Wilden

Câu trả lời:


283

Từ tài liệu :

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

Điều này giả sử bạn đang ở chế độ ctrl-p. Lưu ý rằng bạn có thể nhấn F5 ở giữa truy vấn, nghĩa là bạn có thể nhập một vài ký tự, thấy nó không khớp với tệp được cập nhật gần đây và nhấn F5 để làm mới ngay sau đó. Nó sẽ tự động hiển thị cho bạn trận đấu nếu tệp vừa được thêm vào bộ đệm ctrl-p.


105
Lưu ý rằng điều này phải được thực hiện trong khi ở chế độ CTRL-P. Vì vậy, 1. ctrl-p2.F5
David Kay

1
Hầu như hoạt động với tôi, tôi thấy nó đang cập nhật nhưng nó không tìm thấy các tệp mới được thêm vào
xer0x

1
@ xer0x Đảm bảo rằng bạn đang ở trong CWD chính xác. Có vấn đề tương tự trong khi sử dụng NERDTree.
jsbeckr

9
Chỉ cần thêm, bạn không thể tìm kiếm tệp của riêng mình trong khi bạn đang chỉnh sửa nó.
Daryll Santos

58

Như Jeet nói bạn có thể nhấn F5nhưng nếu nó không hoạt động, bạn luôn có thể chạy :CtrlPClearCache, đó là thứ F5được cho là chạy.

Từ tài liệu

: CtrlPClearCache
Xóa bộ đệm cho thư mục làm việc hiện tại. Giống như nhấn bên trong CtrlP.
Để bật hoặc tắt bộ đệm, sử dụng | g: ctrlp_use_caching | Lựa chọn.


Tôi có các cửa sổ màn hình GNU được ánh xạ tới các phím Fn của mình để nó hoàn hảo - cảm ơn!
LeonardChallis

6

Nếu bạn muốn, bạn có thể tự động phá vỡ bộ đệm khi lưu xảy ra, do đó nó sẽ buộc phải làm mới trong lần sử dụng tiếp theo.

Đặt cái này trong vimrc của bạn (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

Thật không may, không có cách nào để tự động giữ bộ đệm trong nền.


2
tiết kiệm có vẻ đắt tiền Có một kích hoạt có thể để tạo một tập tin mới?
Alex Moore-Niemi

4

Tôi đã thêm cái này vào .vimrc để tắt bộ nhớ đệm ctrlp

g:ctrlp_use_caching = 0


Đây có lẽ là câu trả lời tốt nhất và chính xác nhất cho câu hỏi ban đầu. Đặc biệt nếu bạn đang ở trên máy tính (tôi đang nhìn bạn Apple ..) nơi hàng chức năng cần một phím bổ trợ thay thế để truy cập.
Devon Kiss

Tôi thích câu trả lời này, ngay cả khi không có bộ nhớ cache, ctrp đã đủ nhanh, có thể sử dụng Ag để tăng tốc độ
Nhân Trần

2

Tôi biết đây là một câu hỏi cũ, nhưng nó đơn giản đến mức tôi phải bình luận. Đặt cái này trong .vimrc của bạn

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

Điều này sẽ làm mới bộ đệm và sau đó gọi CtrlP. Không còn thiếu tập tin.


2
Tại sao không chỉ vô hiệu hóa bộ nhớ đệm với g:ctrlp_use_caching?
Martin Tournoij
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.