Фильтры файлов Notepad ++

Мне было интересно, можно ли указать исключения в фильтрах файлов в функции «Найти в файлах» Notepad ++.

Например, следующий код заменит Dog на Cat во всех файлах.

Найди что: Собака

Заменить на: Кот

Фильтры: *. *

Я бы хотел заменить Dog на Cat во всех файлах, кроме файлов .sh.

Это возможно?


person Denis Sadowski    schedule 02.02.2010    source источник


Ответы (2)


Думаю, что-то вроде «отрицательного селектора» в Notepad ++ не существует.

Я быстро просмотрел исходный код 5.6.6 и похоже, что механизм выбора файлов сводится к функции с именем getMatchedFilenames(), которая рекурсивно проходит через все файлы ниже определенного каталога, которая, в свою очередь, вызывает следующую функцию, чтобы увидеть, соответствует ли имя файла шаблону:

bool Notepad_plus::matchInList(const TCHAR *fileName, const vector<generic_string> & patterns)
{
    for (size_t i = 0 ; i < patterns.size() ; i++)
    {
        if (PathMatchSpec(fileName, patterns[i].c_str()))
            return true;
    }
    return false;
}

Насколько я могу определить, PathMatchSpec делает не допускать отрицательных селекторов.

Однако можно ввести список положительных фильтров. Если бы вы могли сделать этот список достаточно длинным, чтобы включить в него все расширения в вашем каталоге, кроме .sh, вы тоже там.

Удачи!

person littlegreen    schedule 02.02.2010
comment
Используйте PathMatchSpec, чтобы исключить шаблон соответствия файла, если шаблон начинается со знака минус, например. Для этого потребуются, скажем, две переменные типа bool: matched и excluded. Метод не будет иметь возврата из цикла. Окончательный возврат будет! Исключен && сопоставлен - person Rbjz; 15.10.2012