Fuzzy find ภายในไฟล์ใน Vim


21

ฉันชอบที่จะใช้ปลั๊กอิน Command-T ใน Vim เพื่อค้นหาชื่อไฟล์ที่คลุมเครือ ฉันชอบมันมากจนฉันเริ่มที่จะต้องการทำการค้นหาฟัสซีเดียวกันสำหรับสตริงที่กำหนดเองภายในบัฟเฟอร์แบบเปิด

ตัวอย่างเช่นหากฉันแก้ไขไฟล์ CSS ที่มีตัวเลือกชอบ#support-main .question .answer-ratingฉันสามารถพิมพ์/support-main .questionเพื่อค้นหาบรรทัดนั้นได้ในขณะนี้

ฉันต้องการที่จะสามารถเรียกใช้ตัวค้นหาฟัซซี่และพิมพ์สิ่งที่ต้องการsupmaiqueค้นหาบรรทัดเดียวกันนั้น (ในกลุ่มอื่น ๆ ) ฉันรู้ว่าฉันสามารถพิมพ์/sup.*mai.*queเพื่อเอฟเฟกต์เดียวกันได้ แต่การพิมพ์การ.*หยุดพักสมาธิของฉัน

มีวิธีทำเช่นนี้หรือไม่?

คำตอบ:


23

มีส่วนขยาย "บรรทัด" ในปลั๊กอิน Ctrl-P ล่าสุดสำหรับกลุ่ม ( ctrlp ) ซึ่งสามารถทำการค้นหาบรรทัดแบบคลุมเครือ คุณต้องเปิดใช้งานส่วนขยายด้วยตนเอง นี่คือการกำหนดค่าของฉันใน.vimrc:

let g:ctrlp_map = '<c-p>'
let g:ctrlp_cmd = 'CtrlPLastMode'
let g:ctrlp_extensions = ['buffertag', 'tag', 'line', 'dir']

หลังจากนั้นคุณกดCtrl-pเพื่อนำเมนูจากนั้นกดCtrl-fหลาย ๆ ครั้งจนกระทั่งโหมดบรรทัดเปิดอยู่ พิมพ์สตริงฟัซซี่ของคุณตอนนี้:

ป้อนคำอธิบายรูปภาพที่นี่

อัพเดท 27 กุมภาพันธ์ 2557

โซลูชันทางเลือกที่ฉันกำลังใช้ตัวเองจะใช้Unite เพื่อที่จะทำการค้นหาสายฟัซซี่คุณจำเป็นต้องปรับการรวมกันเล็กน้อย:

call unite#filters#matcher_default#use(['matcher_fuzzy'])
call unite#filters#sorter_default#use(['sorter_rank'])
call unite#custom#source('file,file/new,buffer,file_rec,line', 'matchers', 'matcher_fuzzy')
nnoremap <C-k> :<C-u>Unite -buffer-name=search -start-insert line<cr>

ตอนนี้กดCtrl-kและพิมพ์:

ป้อนคำอธิบายรูปภาพที่นี่

โดยวิธีการรวมกันยังสามารถทำการค้นหาไฟล์เลือนตามชื่อ

อัพเดท 03 ส.ค. 2559

อีกวิธีหนึ่งในการค้นหาสายคือการใช้fzfพร้อมกับการประกอบเสียงเรียกปลั๊กอิน ดูคำแนะนำการติดตั้งได้ที่นี่: https://github.com/junegunn/fzf.vim#installation

หลังจากคุณติดตั้งทั้ง fzf และ fzf.vim แล้วคุณสามารถใช้:BLinesเพื่อค้นหาบรรทัดในบัฟเฟอร์ปัจจุบัน:

ตัวอย่างผลลัพธ์

คุณอาจสังเกตเห็นว่ามันไม่ได้หมายความว่าการค้นหาคลุมเครืออย่างแน่นอนว่าฉันต้องใช้ช่องว่าง สิ่งนี้อาจไม่ได้ผลสำหรับคุณ


เพิ่ม unite เป็นโซลูชันทางเลือก
baltazar

เพิ่ม fzf เป็นโซลูชันทางเลือก
baltazar

1

ไม่ตรงกับสิ่งที่คุณต้องการ แต่ด้วยset incsearchรูปแบบของคุณจะถูกจับคู่ในขณะที่คุณพิมพ์ มันไม่ใช่การจับคู่ที่คลุมเครือจริงๆ แต่ความรู้สึกนั้นคล้ายคลึงกันมาก


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