Нечітка знахідка у файлі у 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.