Нечітка знахідка у файлі у Vim


21

Я люблю використовувати плагін Command-T у Vim, щоб робити нечіткі пошуки імен файлів. Мені це так подобається, що я почав хотіти робити ті ж нечіткі пошуки довільних рядків у відкритому буфері.

Наприклад, якщо я редагую CSS-файл, який містить селектор типу #support-main .question .answer-rating, я зараз можу ввести, /support-main .questionщоб знайти цей рядок.

Я хотів би мати можливість викликати нечіткий пошук і просто набрати щось на зразок, supmaiqueщоб знайти ту саму лінію (серед інших). Я знаю, що можу набрати /sup.*mai.*queтой же ефект, але введення тексту .*'' порушує мою концентрацію ''.

Чи є спосіб це зробити?

Відповіді:


23

В останньому плагіні Ctrl-P для vim ( ctrlp ) є розширення "line", яке може робити нечіткий пошук рядків. Розширення потрібно включити вручну. Ось моя конфігурація в .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 лютого 2014 року

Альтернативним рішенням, яке я зараз використовую, було б використовувати об'єднатися . Для того, щоб здійснити нечіткий пошук рядків, потрібно трохи налаштувати об'єднання:

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 серпня 2016 року

Ще одним способом пошуку рядків є використання fzf разом із супровідним плагіном vim . Дивіться інструкції з установки тут: https://github.com/junegunn/fzf.vim#installation

Після того як ви встановили і fzf, і fzf.vim, ви можете використовувати :BLinesдля пошуку рядки в поточному буфері:

Вибірка зразка

Можливо, ви помітили, що це не зовсім нечіткий пошук, що означає, що мені потрібно використовувати пробіли. Це може не спрацювати.


Додано об'єднання як альтернативне рішення.
балтазар

Додано fzf як альтернативне рішення.
балтазар

1

Не зовсім те, що ви хочете, але з set incsearchмалюнком узгоджується під час введення. Це насправді нечітке узгодження, але відчуття подібні.


Ага, так. incsearchце чудово, але не те, що я шукаю.
adamesque
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.