Ru-Board.club
← Вернуться в раздел «Программы»

» Текстовый редактор

Автор: webern
Дата сообщения: 05.05.2014 11:23
Astra55

Цитата:
В идеале мне бы подошли регэкспы столбиком, а во второй графе краткий камент что делает именно этот регэксп

Вот я и говорю - легче всего наваять макрос на JScript, в котором сделать меню (PopupMenu Object) и повесть кнопкой на тулбар.
Вот вам простейшая реализация на коленке:
Код: // EmEditor Pro: Менюшка на EEJScript для поиска регексов
menu = CreatePopupMenu();
    menu.Add ( "\\!\\u - ищем \\!\\u",        1 );
    menu.Add ( "\\?\\u - ищем ?\\u",            2 );
    menu.Add ( "", 0, eeMenuSeparator );
    menu.Add ( "\\n - ищем \\n",                3 );
result = menu.Track();
document.selection.StartOfDocument(false);
if (result==0){
        Quit();
    }else if (result==1){
        nFound = document.selection.Find("\\!\\u", eeFindNext | eeFindReplaceRegExp );
    }else if (result==2){
        nFound = document.selection.Find("\\?\\u", eeFindNext | eeFindReplaceRegExp );
    }else{
        nFound = document.selection.Find("\\n", eeFindNext | eeFindReplaceRegExp );
    }
Quit();
Автор: CaptainFlint
Дата сообщения: 05.05.2014 12:19
Astra55
Прошу прощения, не сразу понял суть вопроса. Тогда да, можно макросами. Например, создать в макросе массив из набора отдельных поисковых строк, потом скомпоновать из него итоговую строку регэкспа и запустить на выполнение команду поиска.

Кстати, а нафига столько слэшей в этом примере? Добрая половина символов в нём — не служебные и в экранировании не нуждаются.
Автор: Astra55
Дата сообщения: 05.05.2014 12:20
webern
Я немного не так объяснил - мне не нужно ничего выбирать, нужна куча простеньких регэкспов списком, чтобы выполнялись все разом, а не отдельно взятые. То есть "и", а не "или". Попробовал этот js скрипт, там получается ненужный выбор, а если делать строкой, то где выигрыш? От чего ушел, к тому и пришел
CaptainFlint
Цитата:
нафига столько слэшей в этом примере?
Дык не спец я по этой части, делал, лишь бы работало. И ведь работает, но трудно потом разобраться в собссных мыслЯх. Да, можно сделать на java, благо, заготовка для FBE уже есть, нужно только долго и нудно допиливать, на ходу разбираясь с js, поскольку раньше не имел дела с этим типом. Оно, конечно, разберусь в конечном счете, но ведь хочется уже готовое решение, чтобы можно было легко добавлять, без раздумий.
Автор: CaptainFlint
Дата сообщения: 05.05.2014 12:41
Astra55
Например, так:

Код: var searchExprs = [
    '!\\l', // Ищем воскл. знак + строчную букву
    '\\?\\l', // Ищем вопр. знак + строчную букву
    '!\\u', // Ищем воскл. знак + заглавную букву
    '\\?\\u' // Ищем вопр. знак + заглавную букву
];

var combinedExpr = searchExprs.join('|');
document.selection.StartOfDocument(false);
document.selection.Find(combinedExpr, eeFindNext | eeFindReplaceCase | eeFindReplaceRegExp | eeFindCount);
Автор: webern
Дата сообщения: 05.05.2014 12:45
Astra55

Цитата:
мне не нужно ничего выбирать, нужна куча простеньких регэкспов списком, чтобы выполнялись все разом

Я понял, наконец . Кроме одного - как вы потом оцениваете результаты поиска, если ищете так много символов, и всё разом? Если нашлось 1-2-3 из искомого, то понятно, а если нашлось всё - что тогда?
Автор: Astra55
Дата сообщения: 05.05.2014 13:17
CaptainFlint
Попробую, о результатах доложу. Насчет java и js в курсях, просто думал о кренделях небесных, поэтому ляпнул не то.
webern
Элементарно, Ватсон! (с) EmEditor с указанным регэкспом метит зеленым и останавливается на всех заданных регэкспом сочетаниях строго последовательно по тексту. После чего они правятся вручную или же нет, нажимается F3 и поскакали дальше.
Автор: webern
Дата сообщения: 05.05.2014 13:26
Astra55

Цитата:
Элементарно, Ватсон! (с)

Прошу меня извинить - я задал глупый, ненужный вопрос, ответ на который мне и самому известен.
Автор: nv59
Дата сообщения: 05.05.2014 13:40
Andarin
Ну это вместе с разными версиями разного софта... я посчитал просто по каталогам, а надо было добавить еще 9 масеньких .ехе и 8 zip_ов с DOS-редакторами
По макросам совр. редакторов не подскажу - я их сам не понимаю...

webern
В РЕ2 можно было ЛЮБУЮ клавишу назначить на ЛЮБОЕ действие. Язык макросов (команд) был естественный и понятный даже в сокращенном виде. Когда я первые разы (в 1979 году!) потыкался в РЕ2, я случайно нажал ctrl+k - получил экран со списком команд... Ё! Быстренько зарядил принтер и распечатал экран, затем следующий, затем - ... до конца.
И занялся изучением этих распечаток... и ведь всё ПОНЯЛ! Много позже я нашел в РЕ2 команду [abbrev off], РАСКРЫВАЮЩУЮ все сокращения.
Ну не было тогда ни опыта работы с компом, ни д0ков, ни хелпов. Да и комп был - нашенский НЕЙРОН на i8086. Где-то год спустя в болгарском журнале типа "Радио" нашлась статья ~ "Высший пилотаж с РЕ2"... с неё всё пошло гораздо урожайнее... Даже придумали форматирование (justify) текста по ТРЁМ границам - левая, абзац, правая; причем без единой команды проверки условия!

Ну вот вам пример из pe2.pro - файла юзер-программирования редактора (основа - внутри самого РЕ2.ЕХЕ)
d f10=[ps][ml][cm][po][bl][ee]
d padplus=[tw]
d padminus=[bw]
d c-enter=[fb][tw][cl]
d c-m=[s margins 1 250]
d c-p=[ca][ps][ml][fb][up][ml][rf][em][down][tw][po][cl]
d c-z=[zw]
d c-left=[left 40]
d c-right=[right 40]
d c-c=[ps][ml][ci][um][down][tw][po]
d c-i=[key u-1][key u-2]
d c-j=[ps][down][fn][mb][el][we][mb][up][el][we][right][cm][down][um][dl][up][po]
d c-k=[e .keydefs]
d c-n=[down 55][cl]
d c-o=[key u-w]
....
Нам позже даже встретился некий АРМ секретарши, целиком сделанный на РЕ2, причем с именами файлов типа уailon.pro (у - РУССКАЯ!). И это в dos-времена!!
----
Я как-то попробовал для PSpad придумать макрос на смещение курсора на 40 линий вниз и центрирования полученной позиции по экрану - ничего у меня не вышло...
а в РЕ2 это делалось на мах!
Я бы и сейчас РЕ2 иногда юзал, но у него есть нечто неустранимое - строка не более 255 символов, причем всё, что дальше, просто отрезается. Плюс DOS-кодировки (ну, да это не смертельно, обходится)
Вот и хочется мне поиметь хорошо изученное, но пригодное для Виндозы.
Автор: webern
Дата сообщения: 05.05.2014 14:12
nv59
Сильно, и очень интересно.
Я тоже вырос из DOS-времён , но сумел приспособиться к виндовым временам.

Позвольте предложить Вам небольшую замануху:
Код: //EmEditor Pro: смещение курсора на 40 линий вниз и центрирование полученной позиции по экрану
wnd = FindWindow( "EmEditorView", "" );
document.selection.LineDown( false, 41 );
document.selection.StartOfLine(false, eeLineView);
document.selection.CharRight( false, wnd.Width/16 );
Автор: SergeCpp
Дата сообщения: 05.05.2014 15:57
nv59, интересно про PE. А я вот пользуюсь Multi-Edit 7 DOS до сих пор (с 1993 -- года выхода, до того -- ME5).
Вот тут можно посмотреть примеры разного его использования (много): http://forum.old-dos.ru/viewtopic.php?f=4&t=263
DOS<->Win кодировки там есть преобразователь.

nv59, в Multi-Edit 7 DOS максимальная длина строки 2048 символов. В Win-версиях уже до 16384 символов.

PE2 и PE3 и PE32 — это Personal Editor (чтоб легче в гугле искать, кому нужно).
Вот: http://www.pe32.com/
Автор: SKYNET3000
Дата сообщения: 05.05.2014 17:33
Народ! Ну так чо? В каком редакторе есть поддержка комбинаторных и рекурсивных функций? И поиска задаваемого грамматиками. А?
Автор: nv59
Дата сообщения: 05.05.2014 19:12
webern
Спасибо, попробую сей макрос.
А "отталкивает" отсутствие понимания языка скриптов (в РЕ2 он был _натуральным!), а вникать-изучать - нет большой _необходимости, да и желания тоже нету. Я ж старенький уже...

SergeCpp
Спасибо за ссылку на олд-дос_форум, обязательно загляну... Поправлю: не РЕ3, но Е3 было название редактора. АФАИР, он был в комплекте Новеловской ДОС. Толковый редактор был, псевдой рисовать умел, арифметику в строке считать и т.п.

У меня сохранилась утилита русификации - слегка модифицированный R4script: в ней было аж 3 шрифта - ДОС прямой, ДОС-наклонный и Вин-1251. А еще она легко садилась в верхнюю память
---
Должен поправиться: у меня не 407 редакторов, а всего 64 (+8 внутри каталога "ZIPs"). Тут и текстовые, и для html, и для pdf, и даже для дизайна лицевых панелей аппаратуры.
Число 407 - это сумма ВСЕХ подкаталогов в каталоге Editors
Автор: SKYNET3000
Дата сообщения: 05.05.2014 19:37
nv59
А Вы не могли бы по ним сформировать и выложить базу знаний, аналогичную той, что я выложил по программам разработки схем ТУТ
Автор: webern
Дата сообщения: 05.05.2014 20:21
nv59
Пришлось немного подправить скрипт выше. Пробуйте этот исправленный вариант.
Автор: SergeCpp
Дата сообщения: 05.05.2014 20:58
А что такое "центрирование полученной позиции по экрану"? Буквальное прочтение означает, что нужно так изменить параметры отображения, чтоб текущая позиция стала в центре (слева-справа одинаковое число мест и сверху-снизу одинаковое число строк)... "экрана". Под "экраном" понимается 1) окно с текстом или же 2) экран, где много окон? В обоих случаях не всегда может получиться.

В Multi-Edit DOS есть команда (Control+Center/keypad/) для расположения текущей строки (не строки, конечно, а меняются параметры отображения окна) по центру окна "вертикально" - сверху и снизу будет одинаковое+-1 число строк (редактор многооконный). Это не всегда возможно (курсор может быть на первых строках текста). "Горизонтально" -- нет такой команды.


Добавлено:
Вот текущая позиция (слева внизу на цифре "2"): http://pictureshack.us/images/91115_center-1.png

А вот -- она же, "центрированная по окну" (для измерений отображена линейка): http://www.pictureshack.us/images/73948_center-2.png
Сверху 23 строки, снизу 22 строки, слева 37 строк, справа 41 строка. Горизонтально не сделать по центру, так как слева нет уже места.
Автор: nv59
Дата сообщения: 05.05.2014 22:15
SKYNET3000
Не понял, о какой БАЗЕ ЗНАНИЙ вы пишете? Сорри...

SergeCpp
Я просто не стал уточнять, что имелось ввиду центрирование по вертикали... есс-но.

Как пример некого улучшения позиционирования в РЕ2, могу вспомнить настройку клавиш Вверх/Вниз на оставление свеху/снизу соответственно двух строк относительно крайних текущих на экране. Т.е. если смещаемся вверх/вниз, то активная строка оказывается не самой верхней на экране, а третьей сверху/снизу, и мы видим, что в тексте ДО или ПОСЛЕ текущей строки. Аналогично настраивались и клавиши страничного листания.

А еще в РЕ2 удалось найти коды управления разрешением экрана и сделать РЕ2 чисто для ВК типа Tsenglabs ET6000, тк у нее имелся уникальный (для DOS) текстовый режим ... что-то типа 50•100 и даже ??•128. Была у меня тогда хорошая программка тестирования всех режимов видюх, из нее и находил коды. Удобно было таблицы писать...
Это сейчас, в графике, делай, шо хошь, в тогда...

А еще в РЕ2 были интересные режимы: demo slow, demo fast и demo end, позволявшие создавать целые текстовые мультики. С их помощью даже был оформлен Help по редактору (он появился вместе с тем АРМ секретарши). Эх, забавные же штучки мы с ним делали...
Автор: Alextpp
Дата сообщения: 05.05.2014 23:55
Skynet3000,
если вам напишут на Питоне ф-цию, которая генерит нужные слова (из словаря), я попробую сделать из нее плагин для Synwrite.
Автор: SergeCpp
Дата сообщения: 06.05.2014 02:15
nv59, про выравнивание ясно, в Multi-Edit есть три такие команды: текущую строку сделать центром (Control+keypad-center), верхней строкой (Control+keypad-minus) и нижней строкой (Control+keypad-plus) экрана (да, при этом не самой верхней/нижней, а оставив одну для "видимости окрестности").

Видеорежим там тоже есть свой собственный, 33x80, причём русифицированный (для чистого dos). В Windоws можно с разными размерами экрана работать. И клавиатура русифицирована без необходимости использования keyrus и подобных.

Demo тоже есть анимированное, файл ME70JDEMO отсюда.

P.S. Раз уж зашёл разговор о вертикальном центрировании позиции в экране, то привожу код (всего вполовину экрана) этой функции в Multi-Edit 7 DOS. Написано на собственном макроязыке редактора.

[more=Код функции MAKE_CTR]

Код:
macro MAKE_CTR trans2
/****************************************************************************
MULTI-EDIT MACRO

Name: MAKE_CTR

Description: Make current line center of window

Written by Andy Burton, CIS:[73227,2606]
****************************************************************************/
{
int y_screen = win_y2 - win_y1 - 1; // lines in window

if( y_screen > 2 )
{
int y_up = y_screen >> 1;
int y_dn = y_screen - 1 - y_up;

mark_pos;
_scroll_ex_vi( 0, 0, y_up, y_dn, TRUE );
}
}
Автор: nimdamsk
Дата сообщения: 24.09.2014 00:07
Есть ли в природе текстовый редактор с такими простыми фичами:
- при создании файла в начало строки пишется текущая дата\время и N пробелов
- при переходе на новую строку в начало пишется то же самое
- при вставке текста из буфера обмена в начало каждой строки ... см. выше
Ещё было бы неплохо иметь возможность копирования выделенного текста с\без даты вначале строк.
Пытался найти такое поиском по интернетам - ничего похожего. На руборде тоже искал. Неужели таких простых фич нигде нет?
Автор: Skif_off
Дата сообщения: 24.09.2014 00:41
nimdamsk
Не уверен, что большинству нужны такие фичи Смотрите редакторы, которые пользуют скрипты WSH (AkelPad, PSPad) или Python (SynWrite), из платных у EmEditor что-то, кажется, есть.
Или работать сразу с буфером обмена (+AutoIt, AutoHotkey).
Автор: Alextpp
Дата сообщения: 24.09.2014 00:51
Не мало кому нужны, а пр-ки никому не нужны.) В SynWrite можно сделать так
1 -событие on_save_pre, в нем парсить весь файл, все строки, которые не начинаются с маски, дополнять временем в начале. то есть сделать не перехват Enter, а так.
или так
2 -сделать перехват Enter событием on_key, и добавлять время в строку.

Перехват вставки не сделать.
Автор: SergeCpp
Дата сообщения: 24.09.2014 00:55
nimdamsk, да, здесь нужно макро. На Мульти-Эдите можно даже зарегистрировать расширение файла и при работе с такими файлами будет делаться всё, что захотите (и реализуете). Вот только входной порог заметен -- вам придётся разбираться и делать самому. Хотя там есть исходники всех макро, а многие расширения файлов зарегистрированы, так что есть, где смотреть. Энтер там "свой" (своё макро) для зарегистрированных языков (Си, например). Перехват вставки тоже есть. Дело в желании.
Автор: Alextpp
Дата сообщения: 24.09.2014 00:57
Multi-Edit еще жив? юзается многими? Странно, что не забытый, а чем он кроме макросов хорош?
Автор: SergeCpp
Дата сообщения: 24.09.2014 08:08
Многими (я, например, пользуюсь досовской 7 версией). Я не так давно специально этим вопросом интересовался (в google искал), вот тут собранные со всего интернета (что смог тогда найти) отзывы почитайте (в первом сообщении под спойлером "отзывы"): http://forum.old-dos.ru/viewtopic.php?f=4&t=263

И на форуме лингвистов (!) даже совсем недавно тема образовалась, вот тут хронология её (темы) обнаружения: http://forum.old-dos.ru/viewtopic.php?p=7316#p7316

Чем он кроме макросов хорош -- посмотрите упомянутую выше тему: http://forum.old-dos.ru/viewtopic.php?f=4&t=263 -- там описаны разные возможности и скрины есть (800 или даже больше).

P.S.OFF: 555 сообщений у меня запомню
Автор: nimdamsk
Дата сообщения: 24.09.2014 13:14
Жаль, конечно, что нет простой утилитки для такой несложной задачи.
Значит надо или писать самому, или скриптами, как предложили.
Было бы полезно узнать в каких ещё "лёгких" редакторах можно заскриптовать задачу?
Автор: SergeCpp
Дата сообщения: 24.09.2014 15:15
Multi-Edit 7 для DOS -- всего полмегабайта архив (если брать лёгкую комплектацию), куда ещё легче-то? Да и полный с исходниками невелик по нынешним меркам, мегабайт 6 (это я у себя установленный посмотрел). В Win 7 32 bit -- работает.

Макро -- главное начать, там всё не так и сложно.

P.S. Может, этого хватит на первое время: http://support.microsoft.com/kb/260563 -- ?
Автор: Masutin
Дата сообщения: 30.08.2015 21:31
Пожалуйста, есть ли бесплатный редактор с поддержкой
1) regex (для макросов с ними) и
2) бесплатного spell checker (Hunspell или др.)?
Автор: nv59
Дата сообщения: 26.10.2015 00:22
Masutin
Да хотя бы PSpad - имхо, вполне годен.
--------
Вопрос к уважаемому ALL:
Я вот для групповой замены строк (по типу: от (текст1) по (текст2) заменить на (текст3)) ищу либо редактор, либо пакетный заменятель.
PSpad всё, что мне нужно делает, но только в одном файле... или я не до конца с ним разобрался?
Notepad++ вроде нужное пакетно умеет, но ... у меня опять не получилось. Язык управления разный?
Автор: Daniyar91
Дата сообщения: 26.10.2015 07:40
Есть такие программы как TextPipe, они сделаны для замены в нескольких файлах. если хочешь редактор, то смотри на SynWrite, в нем не нужно специально открывать файлы, чтобы в них заменять, там можно просто указать папку, в которой искать файлы.
Автор: nv59
Дата сообщения: 26.10.2015 20:28
Daniyar91
Нашел у себя в архивах SynWrite, попробовал - вроде получается... Буду тестить дальше.

Для _простейшего поиска-замены в пачке файлов я давно нашел ЗДЕСЬ крохотный (157 кил!) пакетный реплейсер . Там еще кое-что полезное есть...

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738

Предыдущая тема: Ламерский вопрос по M$ EXCEL`ю


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.