LuaFAR Search
-
- Posts: 6834
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
LuaFAR Search
Latest post of the previous page:
Неудачное название опции "Файл как строка" вводит в заблуждение. Плагин не читает все файлы одним куском, чтобы не затыкаться на очень больших файлах. Он читает кусками в несколько мегабайт, с перекрытием кусков. Этот алгоритм может не найти некоторые вхождения, если их длина больше размера перекрытия.
Для замены алгоритм с перекрытием кусков применять нельзя, ибо возможны некорректные замены, что можно трактовать как потерю данных. Единственное лечение здесь - действительно читать весь файл одним куском. Реализовать это не очень сложно, но сложно красиво обрабатывать ситуации, когда памяти не хватает. На данный момент замена из панелей - построчная. Может как-нибудь что-нибудь придумаю.
LuaFAR Search
Shmuel, файл может вообще не содержать переводов строки, тогда что? будет затык? да пусть лучше обработка такого большого текста на несколько мегабайт затянется немного, но работа будет выполнена. Я так считаю. Может добавить параметр с которым плагин будет считывать весь файл целиком и обрабатывать его как одну строку? а что из этого выйдет ... зависнет фар или просто долго будет работать операция это уже проблема пользователя, как бы знает что делает, и какого размера у него файлы.
Случайности не случайны.
-
- Posts: 6834
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
LuaFAR Search
Как раз наоборот, файл будет корректно обработан, если памяти хватит.
Вы меня не поняли. Под большими файлами имеется в виду не несколько мегабайт, а гигабайты. В этом случае ситуация нехватки памяти может возникнуть на произвольном этапе обработки, при этом может и крэш произойти.
Я могу сделать такую замену как вы хотите (с чтением файла целиком "на страх и риск пользователя"), но только отдельным диалогом. Будет ли на это время в обозримом будущем - не знаю.
LuaFAR Search
Буду ждать реализацию, у меня не бывает в работе на столько огромных файлов, обычно много мелких файлов в десятки, максимум сотни килобайт. Так что вариант замены текста с поиском в файле воспринимая его как одну строку было бы очень кстати, и кстати в редакторе тоже.
Случайности не случайны.
-
- Posts: 6834
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
LuaFAR Search
Но ведь в редакторе это есть - диалог "Многострочная замена". Именно то, что вы просите.
LuaFAR Search
Ага, не замечал его искал галку в обычной замене. Есть ли смысл отдельный диалог делать? почему бы не объединить в одном диалоге? ведь по сути интерфейс тот же.
Случайности не случайны.
-
- Posts: 6834
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
LuaFAR Search
Есть. Различия в работе значительные, поэтому не следует вызывать у пользователя иллюзию, что это всего лишь опция. Хотя бы то, что основной поиск с заменой даёт пользователю возможность заменять выборочно, а данный диалог - не даёт.
LuaFAR Search
Попробовал менять подстроку на перевод строки (#0D#0A -> \r\n) работает отлично
А вот поиск перевода строки не получается - пишу в поле "Искать" \r\n с включенной опцией Регулярное выражение , ответ:
Что-то делаю не так?
А вот поиск перевода строки не получается - пишу в поле "Искать" \r\n с включенной опцией Регулярное выражение , ответ:
Code: Select all
╔═ LuaFAR Search [ 0.00 s ] ═╗
║ Выражение не найдено ║
║ "\r\n" ║
╟────────────────────────────╢
║ { OK } ║
╚════════════════════════════╝
Last edited by Talker on Mon 03 Apr, 2017 09:02, edited 1 time in total.
LuaFAR Search
Talker, все дело в том, что этот плагин делит весь текст на строки и обрабатывает по отдельности каждую строку, а символы \r\n служат разделителем, хотя конечно автор мог бы сделать чтобы строка включала в себя символы \r\n в конце строки это бы позволило заменять переводы строки на то что необходимо в конкретной ситуации.
Last edited by Sim on Mon 03 Apr, 2017 09:36, edited 1 time in total.
Случайности не случайны.
-
- Posts: 6834
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
LuaFAR Search
Talker,
Отдельного многострочного поиска нет, есть "многострочная замена", отдельным пунктом меню. Описано в справке (а также упоминается на данной странице обсуждения, см. выше).
Sim,
Данная утилита заменяет переводы строк. Что вы хотели сделать и что не получилось?
Отдельного многострочного поиска нет, есть "многострочная замена", отдельным пунктом меню. Описано в справке (а также упоминается на данной странице обсуждения, см. выше).
Sim,
Данная утилита заменяет переводы строк. Что вы хотели сделать и что не получилось?
LuaFAR Search
да, многострочная замена реализована в отдельном диалоговом окне, и если не знаешь о ней то найти сложно, было бы удобнее если бы была галка в диалоге замены
Случайности не случайны.
LuaFAR Search
Исходный файл:
Форма поиска:
Ответ:
Что я делаю не так?
Code: Select all
1
2
3
4
Code: Select all
╔═══════════════════════ Многострочная замена ═══════════════════════╗
║ Искать: ║
║ \r\n ↓║
║ Заменить на: ║
║ # ↓║
║ [ ] Режим функции ║
╟────────────────────────────────────────────────────────────────────╢
║ [x] Регулярное выражение Библиотека: Far regex ↓ ║
║ [ ] Учитывать регистр [ ] Файл как строка ║
║ [ ] Целые слова [ ] Многострочный режим ║
║ [ ] Игнорировать пробелы ║
╟────────────────────────────────────────────────────────────────────╢
║ [ ] Дополнительно ║
║ Начальный код: Конечный код: ║
║ ↓ ↓║
╟────────────────────────────────────────────────────────────────────╢
║ { Заменить } [ Подсчёт ] [ Отмена ] ║
╚════════════════════════════════════════════════════════════════════╝
Code: Select all
╔═ Многострочная замена ═╗
║ Выражение не найдено ║
║ "\r\n" ║
╟────────────────────────╢
║ { OK } ║
╚════════════════════════╝
-
- Posts: 6834
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
LuaFAR Search
Таким образом, не используйте \r в ваших выражениях.Справка плагина wrote:На стадии поиска строки текста склеиваются с вставкой \n между ними, независимо от того, какой тип перевода строки есть у данной строки. На стадии замены вставляются переводы строк по умолчанию.