Как работает сопоставление ido flex?

Может кто-нибудь объяснить на примере, что делает ido-enable-flex-matching по сравнению с обычным ido?

И можно ли использовать гибкое сопоставление при работе с файлами в дополнение к буферам? (и требует ли это каких-либо дополнительных настроек?)


person Cedric Martin    schedule 27.11.2013    source источник
comment
Альтернативой является github.com/lewang/flx, который также работает с ido, но использует более сложные (с намерение быть более полезным) сопоставление правил. Скринкаст показывает, как это работает (и, кстати, подтверждает ответ Дрю на ваш вопрос).   -  person phils    schedule 27.11.2013


Ответы (2)


Не глядя на код, я могу догадаться, потому что эффект тот же, что это делается одинаково Icicles: добавьте .* после каждого введенного символа, кроме последнего, и используйте string-match, чтобы сопоставить полученное регулярное выражение с кандидатами.

Например: Ввод: abc. Обрабатывается как регулярное выражение: a.*b.*c. Или похожие. Все, что нужно сделать, это сопоставить каждый из символов в вашем вводе с кандидатом, но также разрешить, возможно, другие символы-кандидаты между последовательными символами вашего ввода. Это своего рода «нечеткое» сопоставление бедняка. Дополнительная информация, включая сравнение с другими подходами нечеткого сопоставления.

person Drew    schedule 27.11.2013

Из записи руководства Emacs по Flexible Matching:

Гибкое сопоставление подразумевает, что любой элемент, который просто содержит все введенные символы в указанной последовательности, будет совпадать.

Например, если у вас есть четыре файла альфа, бета, гамма и дельта, ввод «аа» будет соответствовать альфа и гамма, а «еа» — бета и дельта. Если сопоставление префиксов также активно, «aa» соответствует только альфа-каналу, а «ea» не соответствует никаким файлам.

Сопоставление Flex можно использовать при работе с файлами и буферами. Если вы добавите (setq ido-enable-flex-matching t) и (setq ido-everywhere t) в свой файл .emacs, вы должны быть готовы к файлам и буферам. Чтобы использовать ido в других местах, ознакомьтесь с пакетом ido-ubiquitous.

person edbedbe    schedule 04.06.2015