VIM ctrlp.vim plugin: วิธีการสแกนไฟล์ซ้ำอีกครั้ง?


152

ฉันเจอปลั๊กอิน ctrlp.vim ที่ยอดเยี่ยมแล้ว มันเป็นทางเลือกที่ดีสำหรับปลั๊กอิน Command-Tที่ฉันเคยใช้มาก่อน สิ่งที่ฉันไม่ชอบเกี่ยวกับ Command-T คือมันจะใช้เวลาประมาณ 20-30 วินาทีในการสแกนไฟล์อีกครั้งเมื่อมีการเรียกใช้เป็นครั้งแรกหลังจากที่เริ่มต้นเป็นกลุ่ม

CtrlP ทำงานได้เร็วขึ้นมาก แต่ดูเหมือนจะไม่สแกนใหม่สำหรับไฟล์ที่สร้างขึ้นใหม่โดยอัตโนมัติ ฉันจะเรียกการสแกนซ้ำด้วยตนเองได้อย่างไร

ขอบคุณ!


3
คำตอบนี้ชัดเจนมากในเอกสารประกอบ
ทำเครื่องหมาย Wilden

คำตอบ:


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

1
เกือบทำงานสำหรับฉันฉันเห็นมันอัปเดต แต่ก็ไม่ได้หาไฟล์ที่เพิ่มเข้ามาใหม่
xer0x

1
@ xer0x ตรวจสอบให้แน่ใจว่าคุณอยู่ใน CWD ที่ถูกต้อง พบปัญหาเดียวกันขณะใช้ NERDTree
jsbeckr

9
เพียงเพิ่มคุณไม่สามารถค้นหาไฟล์ของคุณเองในขณะที่คุณกำลังแก้ไข
Daryll Santos

58

ในฐานะที่เป็นJeetบอกว่าคุณสามารถกดF5แต่ถ้าไม่ได้ทำงานคุณสามารถเรียกใช้:CtrlPClearCacheซึ่งเป็นสิ่งที่F5ควรจะทำงาน

จากเอกสารประกอบ

: CtrlPClearCache
ล้างแคชสำหรับไดเรกทอรีการทำงานปัจจุบัน เช่นเดียวกับการกดภายใน CtrlP
หากต้องการเปิดใช้งานหรือปิดใช้งานการแคชให้ใช้ | g: ctrlp_use_caching | ตัวเลือก


ฉันมีหน้าต่างหน้าจอ GNU ที่แมปกับแป้น Fn ของฉันดังนั้นนี่จึงสมบูรณ์แบบ - ขอบคุณ!
LeonardChallis

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

4

ฉันเพิ่มสิ่งนี้ลงใน. vimrc ซึ่งจะปิดการแคช ctrlp

g:ctrlp_use_caching = 0


นี่อาจเป็นคำตอบที่ดีที่สุดและถูกต้องที่สุดสำหรับคำถามต้นฉบับ โดยเฉพาะอย่างยิ่งถ้าคุณอยู่ในคอมพิวเตอร์ (ฉันกำลังมองคุณ Apple .. ) ซึ่งแถวฟังก์ชั่นต้องการคีย์ตัวปรับเปลี่ยนสำรองเพื่อเข้าถึง
Devon Kiss

ฉันชอบคำตอบนี้แม้ไม่มีแคช ctrp เร็วพอแล้วสามารถใช้ Ag เพื่อเร่งความเร็วได้
Nhan Tran

2

ฉันรู้ว่านี่เป็นคำถามเก่า แต่มันง่ายมากที่ฉันต้องแสดงความคิดเห็น ใส่สิ่งนี้ใน. vimrc ของคุณ

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

การทำเช่นนี้จะรีเฟรชแคชแล้วโทรไปที่ CtrlP ไม่มีไฟล์ที่หายไปอีก


2
ทำไมไม่เพียงปิดการใช้งานแคชด้วยg:ctrlp_use_caching?
Martin Tournoij
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.