е| ye
ае|aye
уе|uye
ое|oye
ие|iye
яе|yaye
ёе|yoye
юе|yuye
Все это работает. Но если слова с "е" в начале абзаца, переводится как "e". Как её транслитерировать как "ye"?
Например:
Если едешь в Екатеринбург, сообщи мне.
Сейчас транслитеруется так:
Esli yedesh v Yekaterinburg, soobshi mne.
_Можно ли_ так сделать:
Yesli yedesh v Yekaterinburg, soobshi mne.
Например:
Шавкат поедет в Россию - в Екатеринбург, а потом в Чехию - в Прагу.
Сейчас транслитеруется так (все в норме):
Shavkat poyedet v Rossiyu - v Yekaterinburg, a potom v Chexiyu - v Pragu.
В верхном регистре:
ШАВКАТ ПОЕДЕТ В РОССИЮ - В ЕКАТЕРИНБУРГ, А ПОТОМ В ЧЕХИЮ - В ПРАГУ.
Сейчас транслитеруется так:
ShAVKAT POYEDET V ROSSIYu - V YeKATERINBURG, A POTOM V ChEXIYu - V PRAGU.
_Можно ли_ так сделать:
SHAVKAT POYEDET V ROSSIYU - V YEKATERINBURG, A POTOM V CHEXIYU - V PRAGU.
Хелп, плиз.
Извиняюсь, что много задаю вопросы.
@yuklov Да тут нужно будет "усовершенствовать" транслитерацию. Сейчас замена только "символы" на "символы", может добавить еще файл для замен по regex?
может добавить еще файл для замен по regex?
@BladeMight
Если использовать regex,
Пример
Е| Ye
АЕ|AYE
УЕ|UYE
ОЕ|OYE
ИЕ|IYE
ЯЕ|YAYE
ЁЕ|YOYE
ЮЕ|YUYE
Вышеуказанную правилу сделал раньше в макросе libreoffice так:
"([ [:space:]\tАИОУЎЕЭЪЬ])Е" ==== "YE$1" (заглавные гласные+Е = YE)
"^Е([:upper:])" ==== "YE$1" (В начале слова или абзаца Е + заглавные буквы = YE)
"^Е" - "([ [:space:]\tаиоуўеэъь])е" ==== "Ye" (это когда абзац или слова начинается с заглавной "Е" и после неё есть гласные)
C regex будет очень удобно.
Например, на TSDict.txt пишу:
^Е|Ye
^е|ye
Всё! Во всех словах, это буква в начале слова переводится как "Ye" и "ye".
Надеюсь, можно добавить эту возможность.
Все эти сказанные - предложения, чтобы расширить функционал и возможности программы.
И ещё одна проблема у меня. С буквой "Ъ" и "ъ". Оба транслитерирую как "ʼ" (модификатор буквы апостроф). На латиницу нормально переводится, но обратно сделается "ошибка".
Пример:
Маъруза
МАЪРУЗА
после траслитерации:
Maʼruza
MAʼRUZA
Обратная транслитерация:
Маъруза
МАъРУЗА
Если поменяю
ъ|ʼ
Ъ|’
на
Ъ|’
ъ|ʼ
будет так:
МаЪруза
МАЪРУЗА
Что делать?
Сейчас доделаю "замены по regex" в TSDict.txt, и потом можно будет использовать что-то вроде этого:
Добавил поддержку regex в TSDict.txt в e4797c3, синтаксис такой:
_s/что/на что/_|_s/что(обратная)/на что(операция)/_
или если обратная операция не требуется:
_s/что/на что/_|
"s" в начале и 3 "/"(unescaped) обязательны для каждой строчки!
И так, при словаре:
TSDict.txt (нажми тут чтобы развернуть)
Ъ|ʼ
ъ|ʼ
s/\bе/Ye/|s/\bYe/е/
s/\bЕ/YE/|s/\bYE/Е/
s/(?<=[A-Z])ʼ(?=[A-Z])/Ъ/|
s/(?<=[a-z])ʼ(?=[a-z])/ъ/|
Щ|SCH
щ|sch
Ч|CH
Ш|SH
Ё|JO
ВВ|W
Є|EH
ю|yu
я|ya
є|eh
Ж|ZH
ч|ch
ш|sh
Й|JJ
ж|zh
Э|EH
Ю|YU
й|jj
Я|YA
ё|jo
э|eh
вв|w
кь|q
КЬ|Q
|ь
№|#
А|A
Б|B
В|V
Г|G
Д|D
Е|E
З|Z
И|I
К|K
Л|L
М|M
Н|N
О|O
П|P
Р|R
С|S
Т|T
У|U
Ф|F
Х|H
Ц|C
а|a
б|b
в|v
г|g
д|d
з|z
и|i
к|k
л|l
м|m
н|n
о|o
п|p
р|r
с|s
у|u
ф|f
х|h
ц|c
Ы|Y
Ь|J
е|e
т|t
ы|y
Mahou <e4797c3> заменяет:
Если едешь в Екатеринбург, сообщи мне.
На:
YEsli Yedesh v YEkaterinburg, soobschi mne.
И обратно:
Если едеш в Екатеринбург, сообщи мне.
И еще примеры:
Маъруза => Maʼruza => Маъруза
МАЪРУЗА => MAʼRUZA => МАЪРУЗА
@yuklov Пока что могут быть баги, если что заметишь - пиши.
Порядок правил в TSDict.txt очень важен, иначе будет что-то вроде того что ты писал:
Если поменяю
ъ|ʼ
Ъ|’
на
Ъ|’
ъ|ʼ
будет так:
МаЪруза
МАЪРУЗА
Объясняю:
когда ъ|ʼ была выше, Ъ|’ тогда первый символ ’ заменялся на ъ(т.е. ту что выше), а та что ниже уже "не видит" символ ’ т.к. та что выше уже его заменила.
@yuklov Пока что могут быть баги, если что заметишь - пиши.
Код под себя настроил:
s/\bе/ye/|s/\bye/е/
s/\bЕ/Ye/|s/\bYe/Е/
s/(?<=[A-Z])ʼ(?=[A-Z])/Ъ/|
s/(?<=[a-z])ʼ(?=[a-z])/ъ/|
Если едеш в Екатеринбург, сообщи мне.
ЕКАТЕРИНБУРГ
Yesli yedesh v Yekaterinburg, soobshʻi mne.
YeKATERINBURG
Но что делать, чтобы ЕКАТЕРИНБУРГ, КАТАЕВ переводился так:
YEKATERINBURG, KATAYEV
Какой RegExp использовать? Коды (например, s/\bе/ye/|s/\bye/е/) вставил в https://regex101.com/. Но там ошибка показывает. Говорить, только \be вставить можно.
Если есть правила RegExp, изучив я буду настроить под себя.
Попробовал этот код, но не сработал:
s/\(?=[АИОУЎЕЭЪЬ])Е/YE/|s/(?=[АИОУЎЕЭЪЬ])YE/Е/
Наконец-то нашёл, по моему:
s/(?<=[А-Я])Ч(?=[А-Я])/CH/|s/(?<=[A-Z])CH(?=[A-Z])/Ч/
s/(?<=[АИОУЎЕЭЪЬ])Е/YE/|s/(?=[AIOUOʻYEEʼ])YE/Е/
s/(?=[АИОУЎЕЭЪЬ])Е/YE/|s/(?=[АИОУЎЕЭЪЬ])YE/Е/
Хм а в \(?= зачем \ перед: (?
(?=...) = позитивный просмотр вперед, а похоже нужно назад (?<=...). Или если всё же вперед, то поставь его после Е.
Но что делать, чтобы ЕКАТЕРИНБУРГ, КАТАЕВ переводился так:
YEKATERINBURG, KATAYEV
Тогда нужно два regex, одно для всё слово с большой буквы, Другое для не всё слово с большой буквы:
((^|\b)|[А-ДЖ-ЯЁ]*)Е(?=[А-ДЕЖ-ЯЁ]+|($|\b)) (Ловит букву Е, если всё слово В ВЕРХНЕМ РЕГИСТРЕ)
Нашел ошибку в парсинге TSDict.txt, при | больше 1 разбивка была не правильной, в latest-commit 3f8c7bf - исправил, теперь в latest-commit можно:
s/((^|\b)|[А-ДЖ-ЯЁ]*)Е(?=[А-ДЕЖ-ЯЁ]+|($|\b))/$1YE/|s/((^|\b)|[A-DF-XZ]*)YE(?=[A-Z]+|($|\b))/$1Е/
Так же я писал:
Порядок правил в TSDict.txt очень важен
Но в итоге у стандартного Dictionary как оказалось - не сохраняется порядок, так что в c9224c1, я его заменил на DICT, в нём 100% сохраняется порядок правил. и теперь заменяет как я внизу и написал.
Заменяет:
YEKATYERINA => ЕКАТЕРИНА => YEKATYERINA
Yekatyerina => Екатерина => Yekatyerina
Екатирина => Ekatirina => Екатирина
КАТАЕВ => KATAYEV => КАТАЕВ
ЕЕЕЕЕЕЕЕЕ => YEYEYEYEYEYEYEYEYE => ЕЕЕЕЕЕЕЕЕ
еЕеЕееЕЕЕеееЕЕ => yeYeyeYeyeyeYEYEYeyeyeyeYEYE => еЕеЕееЕЕЕеееЕЕ
При словаре:
TSDict.txt
Ъ|ʼ
ъ|ʼ
s/((^|\b)|[А-ДЖ-ЯЁ]*)Е(?=[А-ДЕЖ-ЯЁ]+|($|\b))/$1YE/|s/((^|\b)|[A-DF-XZ]*)YE(?=[A-Z]+|($|\b))/$1Е/
Е|Ye
е|ye
s/(?<=[A-Z])ʼ(?=[A-Z])/Ъ/|
s/(?<=[a-z])ʼ(?=[a-z])/ъ/|
Щ|SCH
щ|sch
Ч|CH
Ш|SH
Ж|JO
ВВ|W
Є|EH
ю|yu
я|ya
є|eh
Ж|ZH
ч|ch
ш|sh
Й|JJ
ж|zh
Э|EH
Ю|YU
й|jj
Я|YA
Ж|jo
э|eh
вв|w
кь|q
КЬ|Q
|ь
№|#
А|A
Б|B
В|V
Г|G
Д|D
З|Z
И|I
К|K
Л|L
М|M
Н|N
О|O
П|P
Р|R
С|S
Т|T
У|U
Ф|F
Х|H
Ц|C
а|a
б|b
в|v
г|g
д|d
з|z
и|i
к|k
л|l
м|m
н|n
о|o
п|p
р|r
с|s
у|u
ф|f
х|h
ц|c
Ы|Y
Ь|J
т|t
ы|y
s/(?<=[А-Я])Ч(?=[А-Я])/CH/|s/(?<=[A-Z])CH(?=[A-Z])/Ч/
Неплохо, только (?<=...) Positive Lookbehind должен быть фиксированной длинны, так что проверить все ли буквы в слове с большой буквы - не получится. В таких случаях лучше всего пользоваться либо группами, или только (?=...).
(теперь благодаря DICT) Порядок в правилах имеет большое значение на результат(и точно сохраняется!):
s/((^|\b)|[А-ДЖ-ЯЁ])Е(?=[А-ДЖ-ЯЁ]+|(^|\b))/$1YE/|s/((^|\b)|[A-DF-XZ])YE(?=[A-DF-XZ]+|(^|\b))/$1Е/
Е|Ye
е|ye
Т.е. сначала проверяет регулярное выражение, потом обычные замены.
В a2f08a1 добавил важное исправление, теперь 1 повторяющийся символ тоже работает:
(отредактировал пост выше)
В общем осталось только "проверять" и "придумывать" правила....
Вчера до обновления сделал такие правила и заставил 😅 работать программу как я хотел:
s/ЪЕ/YE/|
s/ъе/ye/|
s/ъЕ/YE/|
Ъ|ʼ
ъ|ʼ
s/(?<=[A-Z])ʼ(?=[A-Z])/Ъ/|
s/(?<=[a-z])ʼ(?=[a-z])/ъ/|
Ў|Oʻ
ў|oʻ
s/(?<=[^ЎЁЮЯЕАИОУЭЪЬ])Ц/S/|
s/Ч(?=[А-ЯЎҚҒҲ ])/CH/|s/CH(?=[OʻGʻA-Z ])/Ч/
s/(?<=[А-ЯЎҚҒҲ])Ч/CH/|s(?
```<=[OʻGʻA-Z])CH/Ч/
s/Ш(?=[А-ЯЎҚҒҲ ])/SH/|s/SH(?=[OʻGʻA-Z ])/Ш/
s/(?<=[А-ЯЎҚҒҲ])Ш/SH/|s(?<=[OʻGʻA-Z])SH/Ш/
s/(?<=[ЎЁЮЯЕАИОУЭЪЬ])Е/YE/|s/(?=[OʻYOYUYAYEAIOUE])YE/Е/
s/\bЕ/Ye/|s/\bYe/Е/
s/Ye(?=[A-ZА-ЯЎҚҒҲ])/YE/|
s/\bЁ/Yo/|s/\bYo/Ё/
s/Ё(?=[A-ZА-ЯЎҚҒҲ ])/YO/|s/YO(?=[OʻGʻA-Z ])/Ё/
s/(?<=[A-ZА-ЯЎҚҒҲ])Ё/YO/|s(?<=[OʻGʻA-Z])YO/Ё/
s/(?<=[A-ZЎЁЮЯЕАИОУЭЪЬ])Ё/YO/|s/(?=[OʻYOYUYAYEAIOUE])YO/Ё/
s/Yo(?=[A-ZА-ЯЎҚҒҲ])/YO/|
s/Ю(?=[A-ZА-ЯЎҚҒҲ ])/YU/|s/YU(?=[OʻGʻA-Z ])/Ю/
s/(?<=[A-ZА-ЯЎҚҒҲ])Ю/YU/|s(?<=[OʻGʻA-Z])YU/Ю/
s/(?<=[ЎЁЮЯЕАИОУЭЪЬ])Ю/YU/|s/(?=[OʻYOYUYAYEAIOUE])YU/Ю/
s/Я(?=[A-ZА-ЯЎҚҒҲ ])/YA/|s/YA(?=[OʻGʻA-Z ])/Я/
s/(?<=[A-ZА-ЯЎҚҒҲ])Я/YA/|s(?<=[OʻGʻA-Z])YA/Я/
s/(?<=[ЎЁЮЯЕАИОУЭЪЬ])Я/YA/|s/(?=[OʻYOYUYAYEAIOUE])YA/Я/
s/\bе/ye/|s/\bye/е/
s/(?<=[^ўёюяеаиоуэъь])ц/s/|
s/(?<=[ўёюяеаиоуэъь])е/ye/|s/(?=[oʻyoyuyayeaioue])ye/е/
Ғ|Gʻ
ғ|gʻ
...
...
қ|q
ҳ|h
Ь|
ь|
s/\bTS/S/|
s/\bts/s/|
s/OʻYo/OʻYO/|
s/OʻYu/OʻYU/|
s/OʻYa/OʻYA/|
Теперь заново делаю по новому правилу. По моему в моем коде много лишнего.
(?=[OʻYOYUYAYEAIOUE])
Думаю такие правила будут "ловить" только 1 символ, тебе нужно наверно что-то вроде этого: ([Oʻ]|Y?[AOUEI])
s/(?=[OʻYOYUYAYEAIOUE])YE/Е/
Твои правила не проверяют "то что после" YE?
По моему в моем коде много лишнего
Да... много....
s/(?<=[^ЎЁЮЯЕАИОУЭЪЬ])Ц/S/|
s/((^|\b)|[ЎЁЮЯЕАИОУЭЪЬ])Е/$1YE/|s/((^|\b)|[OʻYOYUYAYEAIOUE])YE/$1Е/
s/((^|\b)|[^ЎЁЮЯЕАИОУЭЪЬ])Е/$1E/|s/((^|\b)|[^OʻYOYUYAYEAIOUE])E/$1Е/
s/((^|\b)|[ўёюяеаиоуэъь])е/$1ye/|s/((^|\b)|[oʻyoyuyayeaioue])ye/$1е/
s/((^|\b)|[^ўёюяеаиоуэъь])е/$1e/|s/((^|\b)|[^oʻyoyuyayeaioue])e/$1е/
s/((^|\b)|[А-ЯЎҚҒҲ])Ч(?=[А-ЯЎҚҒҲ]+|(^|\b))/$1CH/|s/((^|\b)|[OʻGʻA-Z])CH(?=[OʻGʻA-Z]+|(^|\b))/$1Ч/
Я убрал мой код, и поставил этот код. После этого получился такой результат (пока правила только на буквы Е, Ч, Ц.
Екатеринбург Катаев ЕКАТЕРИНБУРГ КАТАЕВ қаер буер кетса => Yekaterinburg Katayev YEKATERINBURG KATAYEV qayer buyer ketsa => Йекатеринбург Катаев ЕКАТЕРИНБУРГ КАТАЕВ қаер буер кетса
В начале слова заглавная Е переводится в обратом пути как Йе. Нужен был Е. Что-то неверно?
Или добавить отдельно:
s/\bЕ/Ye/|s/\bYe/Е/
Думаю такие правила будут "ловить" только 1 символ, тебе нужно наверно что-то вроде этого: ([Oʻ]|Y?[AOUEI])
Вчера работал (?<=[OʻYOYUYAYEAIOUE]).
s/(?<=[ЎЁЮЯЕАИОУЭЪЬ])Е/YE/|s/(?<=[OʻYOYUYAYEAIOUE])YE/Е/
Это правила для того, что если перед Е есть заглавные гласные тогда переводится как YE.
Или есть другой легкий способ?
Здесь ʻ не английский апостроф, этот символ не делить слово. Английские ‘ и ’ делит слова.
В начале слова заглавная Е переводится в обратом пути как Йе. Нужен был Е. Что-то неверно?
Порядок правил в словаре, в общем наличие Й|Y e|е перед правилом regex.
В начале слова заглавная Е переводится в обратом пути как Йе. Нужен был Е. Что-то неверно?
Порядок правил в словаре, в общем наличие
Й|Ye|еперед правилом regex.
Нет Й|Y e|е после regex.
После
s/((^|\b)|[ЎЁЮЯЕАИОУЭЪЬ])Е/$1YE/|s/((^|\b)|[OʻYOYUYAYEAIOUE])YE/$1Е/
s/((^|\b)|[^ЎЁЮЯЕАИОУЭЪЬ])Е/$1E/|s/((^|\b)|[^OʻYOYUYAYEAIOUE])E/$1Е/
добавил:
s/\bЕ/Ye/|s/\bYe/Е/
Теперь правильно переводится.
Нет Й|Y e|е после regex.
Значит отсутствие: Е|Ye перед ними.
s/\bЕ/Ye/|s/\bYe/Е/
Тут используется \b в начале поэтому будет работать только для "начала слов"+Е/Ye, если тебе такого не надо тогда просто:
Е|Ye после(или до) regex, но перед(обязательно!) Y|Й и e|е
Значит отсутствие: Е|Ye.
Теперь видел и знал:
E меня был.
Е|E.
Это раньше писал, тогда не было это правило:
s/((^|\b)|[^ЎЁЮЯЕАИОУЭЪЬ])Е/$1E/|s/((^|\b)|[^OʻYOYUYAYEAIOUE])E/$1Е/
Теперь добавил так:
Е|Ye.
Перезапустил прог, но "ошибка" повторяется.
Поставил так, праямо после regex:
s/((^|\b)|[ЎЁЮЯЕАИОУЭЪЬ])Е/$1YE/|s/((^|\b)|[OʻYOYUYAYEAIOUE])YE/$1Е/
s/((^|\b)|[^ЎЁЮЯЕАИОУЭЪЬ])Е/$1E/|s/((^|\b)|[^OʻYOYUYAYEAIOUE])E/$1Е/
Е|Ye
но перед:
s/((^|\b)|[ўёюяеаиоуэъь])е/$1ye/|s/((^|\b)|[oʻyoyuyayeaioue])ye/$1е/
s/((^|\b)|[^ўёюяеаиоуэъь])е/$1e/|s/((^|\b)|[^oʻyoyuyayeaioue])e/$1е/
Теперь переводится как **YEkaterinburg**.
[^ЎЁЮЯЕАИОУЭЪЬ]
ЎЁЮЯЕАИОУЭЪЬ в верхнем регистре? По сути там может быть любой символ кроме них...Скажи "словами" как тебе надо и дай символы которые хочешь заменить, и я тебе объясню.
[^ЎЁЮЯЕАИОУЭЪЬ]
* НЕ правильно! Как это определит являются ли все символы что не `ЎЁЮЯЕАИОУЭЪЬ` в верхнем регистре? По сути там может быть любой символ кроме них...
Если перед Е не гласные, тогда переводить надо как "E".
Например:
ДЕКАН => DEKAN
СЕМЕСТР=>SEMESTR
Какой regex использовать?
Если перед Е не гласные, тогда переводить надо как "E"
Нужно "выбрать" их всех(или их границы) в [], пример: [Б-ДЖЗК-НП-ТФ-Щ], (удобная таблица юникода: foxtools)
Какой regex использовать?
примерно так: s/([Б-ДЖЗК-НП-ТФ-Щ])Е/$1E/ для первой части
Скажи "словами" как тебе надо и дай символы которые хочешь заменить, и я тебе объясню.
Е
Если Е перед гласными (ЎЁЮЯЕАИОУЭЪЬ - гласные и ьъ), тогда надо переводит как YE. В нижнем регистре как ye.
Ц
s/(?<=[^ЎЁЮЯЕАИОУЭЪЬ])Ц/s/|
s/(?<=[^ўёюяеаиоуэъь])ц/s/|
...
Ц|TS
ц|ts
Если перед Ц есть гласные, тогда надо переводить как TS (ц=>ts). В остальных случаюх как S (s).
Но это буква встречается только в заимствованных словах. По этому обратная транслитерация опасно: все слова, у которых есть TS (ts) переводится как Ц (ц). Этого не надо. На языке очень много слов, у которых TS (ts) нужно переводить как ТС (тс). Так, не сделал обратную транслитерацию.
ЛИЦЕЙ => LITSEY => ЛИТСЕЙ (ну, терплю)
лицей => litsey => литсей (ну, и этому терплю)
Ч, Ш
Если перед и после Ч ест буквы в верхном регистре, тогда надо переводить как СH.
Если заглавный Ч в начале предложения или в средение, тогда надо переводить как Ch.
Что с Чаком Норрисом?
Chto s Chakom Norrisom?
По моему, с Ч, Ш я справлялся.
s/((^|\b)|[А-ЯЎҚҒҲ])Ч(?=[А-ЯЎҚҒҲ]+|(^|\b))/$1CH/|s/((^|\b)|[OʻGʻA-Z])CH(?=[OʻGʻA-Z]+|(^|\b))/$1Ч/
Ч|Ch
ч|ch
Нормально переводится.
Какой regex использовать?
примерно так:
s/([Б-ДЖЗК-НП-ТФ-Щ])Е/$1E/для первой части
Да понял, согласные указать надо. Если
[^ЎЁЮЯЕАИОУЭЪЬ]
другие символы кроме букв тоже входить в состав.
[^ЎЁЮЯЕАИОУЭЪЬ]
* НЕ правильно! Как это определит являются ли все символы что не `ЎЁЮЯЕАИОУЭЪЬ` в верхнем регистре? По сути там может быть любой символ кроме них...
Дааа....
И все буквы в нижнем регистре входил в состав.
Если сделал как [^ЎЁЮЯЕАИОУЭЪЬўёюяеаиоуэъь], было бы работал.
Поставил
s/([Б-ДЖЗК-НП-ТФ-ЩҚҒҲ])Е/$1E/|s/|[GʻB-DF-HJ-NP-TV-Z])E/$1Е/
транслитерация и горячие клавиши перестал работать.
s/([Б-ДЖЗК-НП-ТФ-ЩҚҒҲ])Е/$1E/|s/|[GʻB-DF-HJ-NP-TV-Z])E/$1Е/
и
s/((^|\b)|[Б-ДЖЗК-НП-ТФ-ЩҚҒҲ])Е/$1E/|s/((^|\b)|[GʻB-DF-HJ-NP-TV-Z])E/$1Е/
и даже 😁
s/((^|\b)|[^ЎЁЮЯЕАИОУЭЪЬўёюяеаиоуэъь])Е/$1E/|s/((^|\b)|[^OʻYOYUYAYEAIOUEoʻyoyuyayeaioue])E/$1Е/
не работал.
И с Э тоже проблема, в обратном переводе во всех случаях переводиться как Е и е.
_(На латиницу переводится нормально)_
Эркин Хемингуей элим Эркин => Erkin Xeminguyey elim Erkin => Еркин Хемингуей елим Еркин
Если сделал как
[^ЎЁЮЯЕАИОУЭЪЬўёюяеаиоуэъь], было бы работал.
И это тогда тоже будет ловится 花, нужно ЯВНО указывать что должно быть.
транслитерация и горячие клавиши перестал работать.
Значит ошибка в regex. regex101 говорит что во второй части ты пропусти ( в начале.
Нужно сделать чтобы не "убивались" гор. клавиши.
Нужно сделать чтобы не "убивались" гор. клавиши.
Сделал в 2ecf16c, теперь если включено журналироваие действий(если не включено то просто ошибка в regex игнорируется, и гор. клавиши не "убиваются"), то в лог файл будет писаться такая строчка если произошла ошибка в regex:
06:01:01.336 [E]: [RegexRP] > Regex replace FAILED, error in regex: ?<=[ЎЁЮЯЕАИОУЭЪЬ])Е error message: parsing "?<=[ЎЁЮЯЕАИОУЭЪЬ])Е" - Quantifier {x,y} following nothing.
По моему, с Ч, Ш я справлялся
Похоже ты уже понимаешь что к чему. :eye: _ :eye:
По моему, с Ч, Ш я справлялся
Похоже ты уже понимаешь что к чему. 👁 _ 👁
Да, уж... чуствую себя как программист 😎. Ну я дилетант в этой сфере. По этому у меня многие пути.
Ну, вот, наконец, сделал код. Все в норме, проста Ц в начале слова переводитья как Ts и TS.
Как сделать, чтобы в начале слова Ц переводился как S. В обратном Ц. Если трудно, обратный не нужан
Вот, мой код:
s/(?<=[A-Z])ʼ(?=[A-Z])/Ъ/|
s/(?<=[a-z])ʼ(?=[a-z])/ъ/|
s/Е([а-яўқғҳ])/Ye$1/|s/Ye([oʻgʻa-z])/Е$1/
s/((^|\b)|[ЎЁЮЯЕАИОУЭЪЬ])Е/$1YE/|s/((^|\b)|[OʻYOYUYAYEAIOUE])YE/$1Е/
s/([Б-ДЖЗК-НП-ТФ-ЩҚҒҲ])Е/$1E/|s/([GʻB-DF-HJ-NP-TV-Z])E/$1Е/
s/((^|\b)|[ўёюяеаиоуэъь])е/$1ye/|s/((^|\b)|[oʻyoyuyayeaioue])ye/$1е/
s/([Б-ДЖЗК-НП-ТФ-ЩҚҒҲ])е/$1e/|s/([GʻB-DF-HJ-NP-TV-Z])e/$1е/
s/([б-джзк-нп-тф-щқғҳ])е/$1e/|s/([gʻb-df-hj-np-tv-z])e/$1е/
s/((^|\b)|[А-ЯЎҚҒҲ])Ч(?=[А-ЯЎҚҒҲ]+|(^|\b))/$1CH/|s/((^|\b)|[OʻGʻA-Z])CH(?=[OʻGʻA-Z]+|(^|\b))/$1Ч/
s/((^|\b)|[А-ЯЎҚҒҲ])Ш(?=[А-ЯЎҚҒҲ]+|(^|\b))/$1SH/|s/((^|\b)|[OʻGʻA-Z])SH(?=[OʻGʻA-Z]+|(^|\b))/$1Ш/
s/((^|\b)|[ЎЁЮЯЕАИОУЭЪЬ])Ц/$1TS/|
s/((^|\b)|[ўёюяеаиоуэъь])ц/$1ts/|
s/Ц([А-ЯЎҚҒҲOʻGʻA-Zа-яўқғҳoʻgʻa-z])/S$1/|
s/((^|\b)|[Б-ДЖЗК-НП-ТФ-ЩҚҒҲGʻB-DF-HJ-NP-TV-Z])Ц(?=[Б-ДЖЗК-НП-ТФ-ЩҚҒҲGʻB-DF-HJ-NP-TV-Z]+|(^|\b))/$1S/|
s/((^|\b)|[б-джзк-нп-тф-щқғҳ])ц(?=[б-джзк-нп-тф-щқғҳ]+|(^|\B))/$1s/|
При этом убрал
Ц|TS
ц|ts
и
Е|Ye
е|ye
С буквой Е пока все в норме.
По моему, все, закончил! Вот мой конечный код:
s/Е([а-яўқғҳ])/Ye$1/|s/Ye([oʻgʻa-z])/Е$1/
s/((^|\b)|[ЎЁЮЯЕАИОУЭЪЬ])Е/$1YE/|s/((^|\b)|[OʻYOYUYAYEAIOUE])YE/$1Е/
s/([Б-ДЖЗК-НП-ТФ-ЩҚҒҲ])Е/$1E/|s/([GʻB-DF-HJ-NP-TV-Z])E/$1Е/
s/((^|\b)|[ўёюяеаиоуэъь])е/$1ye/|s/((^|\b)|[oʻyoyuyayeaioue])ye/$1е/
s/([Б-ДЖЗК-НП-ТФ-ЩҚҒҲ])е/$1e/|s/([GʻB-DF-HJ-NP-TV-Z])e/$1е/
s/([б-джзк-нп-тф-щқғҳ])е/$1e/|s/([gʻb-df-hj-np-tv-z])e/$1е/
s/((^|\b)|[А-ЯЎҚҒҲ])Ч(?=[А-ЯЎҚҒҲ]+|(^|\b))/$1CH/|s/((^|\b)|[OʻGʻA-Z])CH(?=[OʻGʻA-Z]+|(^|\b))/$1Ч/
s/((^|\b)|[А-ЯЎҚҒҲ])Ш(?=[А-ЯЎҚҒҲ]+|(^|\b))/$1SH/|s/((^|\b)|[OʻGʻA-Z])SH(?=[OʻGʻA-Z]+|(^|\b))/$1Ш/
s/([ЎЁЮЯЕАИОУЭЪЬ])Ц/$1TS/|
s/([ўёюяеаиоуэъь])ц/$1ts/|
s/((^|\b))Ц/S/|
s/((^|\b))ц/s/|
s/((^|\b)|[Б-ДЖЗК-НП-ТФ-ЩҚҒҲGʻB-DF-HJ-NP-TV-Z])Ц(?=[Б-ДЖЗК-НП-ТФ-ЩҚҒҲGʻB-DF-HJ-NP-TV-Z]+|(^|\b))/$1S/|
s/((^|\b)|[б-джзк-нп-тф-щқғҳ])ц(?=[б-джзк-нп-тф-щқғҳ]+|(^|\B))/$1s/|
Все в норме?
Кстати,
после последного обновления при конвертации или траслитерации выделенного текста замена раскладки перестал работать. При конвертации последного слово раскладка меняется.
Или сначала был таким?
после последного обновления при конвертации или траслитерации выделенного текста замена раскладки перестал работать
Ты про это?

т.е. "чтобы менялась раскладка после конвертации выделенного".
Или про LayoutReplaces.txt?
Все в норме?
Похоже что да. Но насчёт(и похожих):
s/((^|\b)|[ЎЁЮЯЕАИОУЭЪЬ])Е/$1YE/|s/((^|\b)|[OʻYOYUYAYEAIOUE])YE/$1Е/
Может здесь тебе так же нужна проверка на слова после Е? Т.е. добавить (?=[А-Я]+|(^|\b)) после? чтобы проверить "является ли всё после с "ВЕРХНИМ регистром"?
Еще насчёт(повторы в []):
[OʻYOYUYAYEAIOUE]
Все символы в [] считаются отдельно(по одному), и в [](без +,*,{} после) берется только один любой из них, поэтому повторяющиеся символы не нужны: [OʻYOYUYAYEAIOUE] и [ʻAIOUE] - это одно и то же, тебе же нужно проверить на "более 1 символа", т.е. сделать можно сделать так:
(Y[OUAE]|[ʻAIOUE])(r101).
т.е. сделать можно сделать так:
(Y[OUAE]|[ʻAIOUE])
Я в шоке!
😮
Это логично и удобно.
т.е. "чтобы менялась раскладка после конвертации выделенного".
Да, функция уже была на программе. Просто вчера очень много работал и устал. Поэтому мне казался так. Сорри.
s/((^|\b)|[ЎЁЮЯЕАИОУЭЪЬ])Е/$1YE/|s/((^|\b)|[OʻYOYUYAYEAIOUE])YE/$1Е/
Может здесь тебе так же нужна проверка на слова после Е? Т.е. добавить (?=[А-Я]+|(^|\b)) после? чтобы проверить "является ли всё после с "ВЕРХНИМ регистром"?
По моему не нужна. Если перед Е есть гласные в ВЕРХНОМ РЕГИСТРЕ, значить все буквы на слове в ВЕРХНОМ. Последующие буквы проверить не нужно.
1. s/Е([а-яўқғҳ])/Ye$1/|s/Ye([oʻgʻa-z])/Е$1/
2. s/((^|\b)|[ЎЁЮЯЕАИОУЭЪЬ])Е/$1YE/|s/((^|\b)|[Y[OUAE]|[ʻAIOUE])YE/$1Е/
Правильно ли мой код?
Или лучше сделать 2 как:
s/[ЎЁЮЯЕАИОУЭЪЬ])Е(?=[А-ЯЎҚҒҲ]+|(^|\b))/$1YE$2/
Код (?=[А-ЯЎҚҒҲ]+|(^|\b)) должен означать не обязательность, а вероятность. Если после Е буквы в верхном регистре, должен работать правило. Если нет (например, САДИО МАНЕ, МОНЕ, ТОЛЕ => SADIO MANE, MONE, TOLE), то и тогда должен работат это правило.
Или так надо делать:
s/[ЎЁЮЯЕАИОУЭЪЬ])Е|(?=[А-ЯЎҚҒҲ]+|(^|\b))/$1YE$2/
Здесь добавил | перед (?=[А-ЯЎҚҒҲ]+|(^|\b))
Но после этого Ye как Йе, YE как ЙЕ (в обратном). Что делать?
в
s/((^|\b)|[ЎЁЮЯЕАИОУЭЪЬ])Е/$1YE/|s/((^|\b)|[Y[OUAE]|[ʻAIOUE])YE/$1Е/
тут ((^|\b)|[Y[OUAE]|[ʻAIOUE]) где [Y[OUAE]|[ʻAIOUE] должно быть в круглых скобках, почему у тебя в квадратных? Нужно было вот так:
s/((^|\b)|(Y[OUAE]|[ʻAIOUE]))YE/$1Е/
Т.е. в (Y[OUAE]|[ʻAIOUE]) будет соответствовать либо Y[OUAE](что является Y и любая буква из [] после неё) или [ʻAIOUE](что является просто любая буква из [])
или вот так: s/((^|\b)|(Y?[OUAE]|[ʻI]))YE/$1Е/ где (Y?[OUAE]|[ʻI]) значит: Y(или нет) и любой символ из [], или любой символ из [](второй там где [ʻI]
(?=[А-ЯЎҚҒҲ]+|(^|\b))/$1YE$2/
(?=...) positive lookahead/lookbehind не ловится в группу(в этом их суть, они просто проверяют нет
(или отсутствует ли если вместо = использовать !, т.е. (?=...) => (?!...), (?>=) => (?>!))
ли там
(вперед для (?=...) и назад для (?>=)) того что в них)
, его не нужно добавлять в замену в виде $2(и т.д.).
Ye([oʻgʻa-z])
вижу опять повторы: o и g уже есть в границе a-z, и еще дважды ʻ, может тебе нужно чтобы oʻ или gʻ соответствовали? Тогда так: Ye([oʻgʻa-z])
Но после этого Ye как Йе, YE как ЙЕ (в обратном). Что делать?
в
s/((^|\b)|[ЎЁЮЯЕАИОУЭЪЬ])Е/$1YE/|s/((^|\b)|[Y[OUAE]|[ʻAIOUE])YE/$1Е/
тут
((^|\b)|[Y[OUAE]|[ʻAIOUE])где[Y[OUAE]|[ʻAIOUE]должно быть в круглых скобках, почему у тебя в квадратных? Нужно было вот так:s/((^|\b)|(Y[OUAE]|[ʻAIOUE]))YE/$1Е/Т.е. в
(Y[OUAE]|[ʻAIOUE])будет соответствовать либоY[OUAE](что являетсяYи любая буква из[]после неё) или[ʻAIOUE](что является просто любая буква из[])или вот так:
s/((^|\b)|(Y?[OUAE]|[ʻI]))YE/$1Е/где(Y?[OUAE]|[ʻI])значит:Y(или нет) и любой символ из[], или любой символ из[](второй там где[ʻI](?=[А-ЯЎҚҒҲ]+|(^|\b))/$1YE$2/
(?=...)positive lookahead/lookbehind не ловится в группу(в этом их суть, они просто проверяют нет
(или отсутствует ли если вместо=использовать!, т.е.(?=...)=>(?!...),(?>=)=>(?>!))
ли там
(вперед для(?=...)и назад для(?>=)) того что в них)
, его не нужно добавлять в замену в виде$2(и т.д.).Ye([oʻgʻa-z])
вижу опять повторы:
oиgуже есть в границеa-z, и еще дваждыʻ, может тебе нужно чтобыoʻилиgʻсоответствовали? Тогда так: Ye([oʻgʻa-z])
Спасибо большое!
Ye([oʻgʻa-z])
Сделал
Ye([ʻa-z])
и
s/((^|\b)|(Y[OUAE]|[ʻAIOUE]))YE/$1Е/
и
s/((^|\b)|[ʻA-Z])YU(?=[ʻA-Z]+|(^|\b))/$1Ю/
s/((^|\b)|[ʻA-Z])SH(?=[ʻA-Z]+|(^|\b))/$1Ш/
пока все работает нормально.
Рад что всё получилось объяснить.
Вот одно положение (но не по теме)
Если выделяю слова (или предложение) с Shift+стрелки, тогда все в норме. Но если выделяю с Ctrl+A после абзаца добовляются новые пустые абзацы. Тоест ^p.
Это когда после слова (предложение, текст) ест один пустой абзац (пуста строка) - ^p. После транслитерации один ^p становится ^p^p^p^p. Как много повторится транслитерация так и умножается ^p.
Это не очень критичный. Но все таки...
Рад что всё получилось объяснить.
Благодарю.
Спасибо большое.
Теперь Mahou - мой единственный переключатель. Раньше пользовался Пунтой и Карамбой одновременно. Один закрыл недостаток другого. Но оба не удовлетворили моим требованиям.
Mahou рекомендую и другим.
Если выделяю слова (или предложение) с Shift+стрелки, тогда все в норме. Но если выделяю с Ctrl+A после абзаца добовляются новые пустые абзацы. Тоест ^p.
Ты про строки? Если да, то они не "множатся":

P.S. В Notepad++ они "могут быть видимыми", я их включил чтобы показать, CR LF(на чёрном фоне).
Или ты о чем-то другом? Если да, в какой программе?
в какой программе?
Наверно Word?
В какой программе можно записать экранные действия. Я тоже показал бы.
На ворде.
На ноутпад +++ все в норме. Я тоже тестировал. MS Word нужно тестировать.
в какой программе?
Наверно Word?
Да
Ну не знаю, нужно проверять в самом Word, это символ параграфа "видимый"?
Ну не знаю, нужно проверять в самом Word, это символ параграфа "видимый"?
Символ параграфа включил и записал процесс:

Слова выделены с Ctrl+A.
А ты можешь всё что в буфере обмена(после конвертации) сохранить в файл и отправить мне?
А ты можешь всё что в буфере обмена(после конвертации) сохранить в файл и отправить мне?
Если я правильно понял, вот файл, с которым я тестировал конвертации:
Символ параграфа включил и записал процесс
Знаешь, сейчас проверил у себя(всё таки пришлось установить word...) оказывается что: Пустая строка в конце в Word добавляется автоматически…, т.к. Mahou вводит новые линии как клавишу Enter, происходит такое:
действия Mahou после транслитерации:
Ўқғҳ vfnz как текст, нажимает EnterCkjdj как текст, нажимает EnterЎқғҳ как текст, нажимает EnterА Word, сам добавляет в конец еще один символ новой строки.
Я сделал небольшое исправление для случаев когда это происходит в Word, в f69745b , можно проверять в latest-commit.
Это исправление не идеально, если выделить текст(только в WORD) с несколькими пустыми линиями подряд в конце выделения и не в конец файла(т.е. не включая конец файла), то Mahou может их "съесть", так что в Ctrl+A работает нормально но лучше стараться в Word не выделять текст который который заканчивается несколькими пустыми линиями и не является концом файла.
Как-то так.
Символ параграфа включил и записал процесс
Знаешь, сейчас проверил у себя(всё таки пришлось установить word...) оказывается что:
Пустая строка в конце в Word добавляется автоматически…, т.к. Mahou вводит новые линии как клавишуEnter, происходит такое:действия Mahou после транслитерации:
1. Вводит строку `Ўқғҳ vfnz` как текст, нажимает `Enter` 2. Вводит строку `Ckjdj` как текст, нажимает `Enter` 3. Вводит строку `Ўқғҳ` как текст, нажимает `Enter`А Word, сам добавляет в конец еще один символ новой строки.
Я сделал небольшое исправление для случаев когда это происходит в Word, в f69745b , можно проверять в latest-commit.
Здравствуйте.
Да, попробовал Libreoffice. Там не добавляется новые строки. Это проблема ворда. А после обновления нормально.
Mahou их "съел"
Но в Libreoffice процесс кодировки очень медленно. Даже еще очень. Можеть, эта проблема Либре. Там копи-паст тоже очень медленно работает. По моему, медленность от этого. Mahou сначала "копирует" текст в буфер, после этого конвертирует. По этому скорость падает.
Это исправление не идеально, если выделить текст(только в WORD) с несколькими пустыми линиями подряд в конце выделения и не в конец файла(т.е. не включая конец файла), то Mahou может их "съесть", так что в Ctrl+A работает нормально но лучше стараться в Word не выделять текст который который заканчивается несколькими пустыми линиями и не является концом файла.
Как-то так.
ОК. Так делаю.
Вот еще одно положение связанным с транслитерацией.
Как сделать чтобы дефис в начале строки конвертировался как тире+пробел. Это для того, чтобы исправить пунктуационную ошибку текста.
Например:
-Это ты? - сказал Андрей.
-Да, это я, - ответил Иван.
Нужно такое:
– Это ты? - сказал Андрей.
– Да, это я, - ответил Иван.
https://regex101.com/r/ZV6C27/3
Сделал код для "дефис на тире":
s/—/–/|
s/^-/$1– /|
s/ -/ – /|
s/- / – /|
s/ / /|
Сработал все, кроме s/^-/– /|. Для этого попробовал и другие варианты:
s/^-/$1– /|
s/(^)-/$1– /|
Или лучше сделать пунктуационные исправления через сниппеты?
Или лучше сделать пунктуационные исправления через сниппеты?
Мда, у сниппетов другая функция. Это перевод при наборе. Этой функции у меня другие задачи 😂. И задач много.
Зачем ловить "начало строки"? Оно всегда будет пустое, почитай страничку, ссылку которой я привел ниже.
s/^-/$1– /|
Зачем тебе $1 когда у тебя не пойманных групп(в (), рекомендую почитать: wikibooks/regex)? Просто убери $1: s/^-/– /| и все будет работать
Или лучше сделать пунктуационные исправления через сниппеты?
В сниппетах кстати(с недавних пор) тоже можно использовать regex, пример:
->regex/^-$/
====>– <====
после -> regex/и обязательно в конце /.
Но сниппеты работают "по слову", а не "по линии" так что этот сниппет будет просто заменять любой 1 написанный - на –. Для таких случаев лучше использовать что-то вроде такого:
->--
====>c<====
Т.е. заменять 2 - на –.
Просто убери
$1:s/^-/– /|и все будет работать
Я это тестировал. Сработал только на первом строке:
-Кто говорил?
-Я говорил.
-Я так и думал.
👇
– Kto govoril?
-YA govoril.
-YA tak i dumal.
👇
– Кто говорил?
-Я говорил.
-Я так и думал.
->regex/^-$/
====>– <====
Эта сработает только тогда, когда после "-" добавлю один пробел. При
-Текст начинается.
-Что начинатается?
не сработает у меня.
не сработает у меня
Тут нужно, что-то такое:
->regex/^-(.*?)(?!.* )$/
====>– $1<====
(?!.* ) - необходимый кусок, чтобы не срабатывало на "двойных сниппетах"(сниппетах из двух слов соединенных пробелом). как и ^ с $.
-Текст => – Текст
Я это тестировал. Сработал только на первом строке
Ах, да Mahou считает всё выделение за одну строку, нужно будет добавить правила разбивки на линии...
->regex/^-(.*?)(?!.* )$/
====>– $1<====
Добавил этот код в сниппет.
Результат:
– Первая
Первая строка норм. Но после второй проблема. Например, если на второй строке пишу что-то, скажем "-Второя" такрой результат (первая и вторая соединяются + необъяснимые комбинации)
– Первая – В– Второя -Третя
После что-то напишу передние строки и символы автоматически удаляются.
хм, а ты уверен что сниппет правильно стоит:

хм, а ты уверен что сниппет правильно стоит:

Здесть тестировал на ноутпад и ворде.
s/^-(.?)(?!. )$/– $1|
Этот код вставил в TSDict.txt. Там тоже не сработал. Или что-то не так в коде?
А ты сравни:
->regex/^-(.*?)(?!.* )$/
s/^-(.?)(?!. )$/– $1|
* отсутствуют.
Здесть тестировал на ноутпад и ворде
Скорее всего у тебя развёртывание стоит на , в Notepad++ эта клавиша так же подверждает автодополнение. Но здесь есть еще кое-что сейчас проверю...Tab а не на Space
Скинь мне свои настройки(Mahou.ini) или отладочную информацию из вкладки "О..."
*отсутствуют.
😲
s/^-(.*?)(?!.* )$/– $1/|
Вах! После этого сработал!
Скинь мне свои настройки(Mahou.ini) или отладочную информацию из вкладки "О..."
MAHOU DEBUG INFO
Environment info
Uzbek Latin Keyboard by Hamza (v2.0)(4039115843)
Узбекская (кириллица)(138610755)
США(67699721)
Русская(68748313)
Mahou.ini
```ini
[FirstStart]
First=False
[Functions]
AutoStartAsAdmin=False
TrayIconVisible=True
ConvertSelectionLayoutSwitching=False
ReSelect=True
RePress=False
AddOneSpaceToLastWord=True
AddOneEnterToLastWord=False
ConvertSelectionLayoutSwitchingPlus=False
ScrollTip=False
StartupUpdatesCheck=True
SilentUpdate=True
Logging=False
CapsLockTimer=False
TrayFlags=False
BlockMahouHotkeysWithCtrl=False
SymbolIgnoreModeEnabled=false
MCDServerSupport=False
OneLayoutWholeWord=True
GuessKeyCodeFix=False
AppDataConfigs=False
RemapCapslockAsF18=False
UseJKL=True
ReadOnlyNA=False
WriteInputHistoryHourly=false
WriteInputHistoryByDate=false
WriteInputHistory=False
WriteInputHistoryBackSpaceType=0
TrayText=False
[Layouts]
SwitchBetweenLayouts=True
OneLayout=False
EmulateLayoutSwitch=False
EmulateLayoutSwitchType=Alt+Shift
ChangeToSpecificLayoutByKey=True
MainLayout1=Узбекская (кириллица)(138610755)
MainLayout2=Uzbek Latin Keyboard by Hamza (v2.0)(4039115843)
SpecificKey1=3
SpecificKey2=0
SpecificKey3=0
SpecificKey4=0
SpecificLayout1=Переключать между раскладками
SpecificLayout2=Переключать между раскладками
SpecificLayout3=
SpecificLayout4=
SpecificKeysType=0
SpecificKeySets=set_0
QWERTZfix=False
[PersistentLayout]
OnlyOnWindowChange=False
ChangeOnlyOnce=False
ActivateForLayout1=False
ActivateForLayout2=False
Layout1CheckInterval=50
Layout2CheckInterval=50
Layout1Processes=devenv.exe wdexpress.exe
Layout2Processes=notepad++.exe winword.exe
[Appearence]
DisplayLangTooltipForMouse=False
DisplayLangTooltipForMouseOnChange=False
DisplayLangTooltipForCaret=False
DisplayLangTooltipForCaretOnChange=False
DifferentColorsForLayouts=False
MouseLTAlways=False
Language=Русский
Layout1ForeColor=#000000
Layout1BackColor=#FFFFFF
Layout1TransparentBackColor=False
Layout1Font=Georgia; 8pt
Layout1Height=14
Layout1Width=26
Layout1PositionX=8
Layout1PositionY=0
Layout2ForeColor=#000000
Layout2BackColor=#FFFFFF
Layout2TransparentBackColor=False
Layout2Font=Georgia; 8pt
Layout2Height=14
Layout2Width=26
Layout2PositionX=8
Layout2PositionY=0
MouseLTForeColor=#000000
MouseLTBackColor=#FFFFFF
MouseLTFont=Georgia; 8pt
MouseLTHeight=14
MouseLTWidth=26
MouseLTPositionX=8
MouseLTPositionY=0
CaretLTForeColor=#000000
CaretLTBackColor=#FFFFFF
MouseLTTransparentBackColor=False
CaretLTTransparentBackColor=False
CaretLTFont=Georgia; 8pt
CaretLTHeight=14
CaretLTWidth=26
CaretLTPositionX=8
CaretLTPositionY=12
MCDS_Pos_X=58
MCDS_Pos_Y=13
MCDS_Top=60
MCDS_Bottom=45
MouseLTUseFlags=False
CaretLTUseFlags=False
Layout1LTText=
Layout2LTText=
MouseLTUpperArrow=False
CaretLTUpperArrow=False
WindowsMessages=True
[Timings]
DelayAfterBackspaces=100
UseDelayAfterBackspaces=False
LangTooltipForMouseRefreshRate=25
LangTooltipForCaretRefreshRate=25
DoubleHotkey2ndPressWait=350
FlagsInTrayRefreshRate=100
ScrollLockStateRefreshRate=100
CapsLockDisableRefreshRate=100
SelectedTextGetMoreTries=False
SelectedTextGetMoreTriesCount=5
ExcludedPrograms=LA.exe SomeProg.exe
UsePasteInCS=False
ExcludeCaretLD=false
ChangeLayoutInExcluded=True
LangTooltipForMouseSkipMessages=5
[Snippets]
SnippetsEnabled=True
SpaceAfter=True
SwitchToGuessLayout=False
SnippetExpandKey=Space
[AutoSwitch]
Enabled=False
SpaceAfter=True
SwitchToGuessLayout=False
DownloadInZip=True
[Hotkeys]
ToggleMainWindow_Enabled=True
ToggleMainWindow_Double=False
ToggleMainWindow_Modifiers=Win + Control + Shift + Alt
ToggleMainWindow_Key=45
ConvertLastWord_Enabled=True
ConvertLastWord_Double=True
ConvertLastWord_Modifiers=Shift
ConvertLastWord_Key=0
ConvertSelectedText_Enabled=True
ConvertSelectedText_Double=True
ConvertSelectedText_Modifiers=Shift
ConvertSelectedText_Key=0
ConvertLastLine_Enabled=True
ConvertLastLine_Double=False
ConvertLastLine_Modifiers=Shift
ConvertLastLine_Key=19
ConvertLastWords_Enabled=True
ConvertLastWords_Double=False
ConvertLastWords_Modifiers=Shift
ConvertLastWords_Key=122
ToggleSymbolIgnoreMode_Enabled=True
ToggleSymbolIgnoreMode_Double=False
ToggleSymbolIgnoreMode_Modifiers=Shift + Control
ToggleSymbolIgnoreMode_Key=122
SelectedTextToTitleCase_Enabled=True
SelectedTextToTitleCase_Double=False
SelectedTextToTitleCase_Modifiers=Win + None
SelectedTextToTitleCase_Key=45
SelectedTextToRandomCase_Enabled=False
SelectedTextToRandomCase_Double=True
SelectedTextToRandomCase_Modifiers=Alt
SelectedTextToRandomCase_Key=0
SelectedTextToSwapCase_Enabled=True
SelectedTextToSwapCase_Double=False
SelectedTextToSwapCase_Modifiers=Alt
SelectedTextToSwapCase_Key=45
SelectedTextTransliteration_Enabled=True
SelectedTextTransliteration_Double=False
SelectedTextTransliteration_Modifiers=None
SelectedTextTransliteration_Key=45
SelectedToUpper_Enabled=False
SelectedToUpper_Double=False
SelectedToUpper_Modifiers=Win +
SelectedToUpper_Key=90
SelectedToLower_Enabled=False
SelectedToLower_Double=False
SelectedToLower_Modifiers=Win
SelectedToLower_Key=88
ExitMahou_Enabled=True
ExitMahou_Double=False
ExitMahou_Modifiers=Win + Control + Shift + Alt
ExitMahou_Key=123
RestartMahou_Enabled=True
RestartMahou_Modifiers=Shift + Alt
RestartMahou_Key=33
ToggleLangPanel_Enabled=True
ToggleLangPanel_Double=False
ToggleLangPanel_Modifiers=Shift
ToggleLangPanel_Key=120
ShowSelectionTranslate_Enabled=False
ShowSelectionTranslate_Double=True
ShowSelectionTranslate_Modifiers=Alt
ShowSelectionTranslate_Key=0
ToggleMahou_Enabled=True
ToggleMahou_Double=False
ToggleMahou_Modifiers=Win + Shift
ToggleMahou_Key=112
CycleCase_Enabled=True
CycleCase_Double=False
CycleCase_Modifiers=Win + None
CycleCase_Key=114
[LangPanel]
Display=False
Transparency=90
RefreshRate=25
Position=X0 Y0
ForeColor=#000000
BackColor=#FFFFFF
Font=Microsoft Sans Serif; 8,25pt
BorderColor=#8B5FFF
BorderAeroColor=True
UpperArrow=True
[Updates]
Delay=5
Channel=LatestCommit(Beta)
LatestCommit=f69745b
[Sounds]
CustomSound2=
UseCustomSound2=False
OnLayoutSwitch2=True
OnConvertLast2=False
OnSnippets2=True
OnAutoSwitch2=False
CustomSound=
UseCustomSound=False
OnLayoutSwitch=False
OnConvertLast=True
OnSnippets=False
OnAutoSwitch=True
Enabled=False
[TranslatePanel]
LanguageSets=set_1/auto/ru|set_2/auto/en
BG=#FFFFFF
BorderC=#F1F100
FG=#8B5FFF
Transparency=90
BorderAero=False
OnDoubleClick=False
UseNA=True
UseGS=False
Enabled=False
TitleFont=Segoe UI; 12pt
TextFont=Microsoft Sans Serif; 8,25pt
[Sync]
BLast=
RLast=
RBools=1|1|1|1|0
BBools=1|1|1|1|0
[Hidden]
__selection=false
CycleCaseReset=false
CycleCaseOrder=TULSR
LibreCtrlAltShiftV=false
А, понял правильный regex будет: ->regex/^-(?!.* )(.*?)$/, нужно было проверку на пробел (?!.* ) ставить до ловли всего что после, произошло как раз то о чём я писал:
(?!.* )- необходимый кусок, чтобы не срабатывало на "двойных сниппетах"(сниппетах из двух слов соединенных пробелом). как и^с$.
в Mahou есть такая возможность "двойные сниппеты", т.е. по 2 последним словам, например:
->так то
====>так-то<====
Поэтому при использовании regex в сниппетах нужно проверять двойной ли сниппет, наличием пробела, или нет.
->regex/^-(?!.* )(.*?)$/
Да!
После этого сработал!
Но это когда пробел. Если нажму Enter не сработает. Как изменить код, чтобы сработал с Интером?
_(Если трудно, не объясни. Я уж много спросил)_
Но это когда пробел
Ну так сниппеты "срабатывают" только по Space/Tab, если настроена клавиша развёртывания.
Но это когда пробел
Ну так сниппеты "срабатывают" только по Space/Tab, если настроена клавиша развёртывания.
Понял.
Это снова я.
При работе с Mahou новые идеи приходятся. Да, я пытаюсь их реализовать сам, но иногда (или часто 😂) возникают трудности. Сейчас как раз такое время.
Ну, хотел перевести знак " как “ и ”. Кавычки хотел сделать "правильном" при наборе. Да, в текстовых редакторах такая функция есть. Но в браузерах, в Телеграм и т.п. кавычки набираю с помощью нескольких клавиш.
Вот такой текст, например:
"Это текст".
Хочу при наборе превратить его в:
“Это текст”.
Для этого сделал код в сниппетах:
->regex/(^|\s)"(\w|[а-яўқғҳА-ЯЎҚҒҲ])/
====>$1“$2<====
->regex/(\w|[а-яўқғҳА-ЯЎҚҒҲ"])"(\s)/
====>$1”$2<====
Но не сработал. Хотя, здесь сработал:
https://regex101.com/r/ZV6C27/5
https://regex101.com/r/PQFDxs/2
Куда-то * поставить нужно? Чтобы сработал сразу как в предыдущий раз?
Ну, хотел перевести знак " как “ и ”. Кавычки хотел сделать "правильном" при наборе. Да, в текстовых редакторах такая функция есть. Но в браузерах, в Телеграм и т.п. кавычки набираю с помощью нескольких клавиш.
"Это текст". => “Это текст”.
Если ты будешь это делать с помощью сниппетов, то будет работать только для 2 слов, потому как для сниппетов максимум 2 слова, так что
Я думаю что тебе больше подойдёт функция __selection() в сниппетах, в Mahou есть скрытая функция __selection ее сначала нужно вручную включить в Mahou.ini(поставить __selection=true в группе [Hidden], Mahou должен быть закрыт!) После её можно использовать вот так:
Делаешь такой сниппет:
->"""
====>“__selection()“<====
Теперь выделяй любой текст, Пример поверх него пиши сниппет """ и нажимай пробел, получиться: “Пример“, если функция не включена в Mahou.ini результат будет такой: ““, гифка:

Ну, хотел перевести знак " как “ и ”. Кавычки хотел сделать "правильном" при наборе. Да, в текстовых редакторах такая функция есть. Но в браузерах, в Телеграм и т.п. кавычки набираю с помощью нескольких клавиш.
"Это текст". => “Это текст”.
Если ты будешь это делать с помощью сниппетов, то будет работать только для 2 слов, потому как для сниппетов максимум 2 слова, так что
Я думаю что тебе больше подойдёт функция
__selection()в сниппетах, в Mahou есть скрытая функция__selectionее сначала нужно вручную включить вMahou.ini(поставить__selection=trueв группе[Hidden], Mahou должен быть закрыт!) После её можно использовать вот так:
Делаешь такой сниппет:->""" ====>“__selection()“<====Теперь выделяй любой текст,
Примерповерх него пиши сниппет"""и нажимай пробел, получиться:“Пример“, если функция не включена вMahou.iniрезультат будет такой:““, гифка:
Сделал все, как сказано здесь. Но результат был такой:
““
Как будь-то функция не включена.
Ну, этот способ более трудно. По моему, пока лучше использовать клавиши:
alt+0147 => “
alt+0148 => ”
->regex/(^|\s)"(\w|[а-яўқғҳА-ЯЎҚҒҲ])/
====>$1“$2<====
->regex/(\w|[а-яўқғҳА-ЯЎҚҒҲ"])"(\s)/
====>$1”$2<====
https://regex101.com/r/ZV6C27/5
https://regex101.com/r/PQFDxs/2
А эти можно использовать каким-то способом?
Пока нашёл такой способ:
->regex/^"(?!.* )(.*?)$/
====>“$1<====
->regex/^(?!.* )(.*?)"$/
====>$1”<====
Все в норме, но только если слово в кавычках одно, второй кавычка на заменяется:
Как будь-то функция не включена.
Открой Mahou.ini в notepad++, найди [Hidden], снизу найди __selection=false и поставь на __selection=true, и тогда заработает, и потом в Mahou нажми "Применить"!
Все в норме, но только если слово в кавычках одно, второй кавычка на заменяется
Тебе нужно еще одно правило:
->regex/^"(?!.* )(.*?)"$/
====>“$1“<====
И нужно поставить их в таком порядке:
->regex/^"(?!.* )(.*?)"$/
====>“$1“<====
->regex/^"(?!.* )(.*?)$/
====>“$1<====
->regex/^(?!.* )(.*?)"$/
Ну, этот способ более трудно
Разве? Просто выделяешь текст который хочешь "заключить” в кавычки, поверх него пишешь “сниппет“ (в котором есть __selection()) и он заменяет выделенный текст на заключенный в кавычках.
Разве? Просто выделяешь текст который хочешь "заключить” в кавычки, поверх него пишешь “сниппет“ (в котором есть
__selection()) и он заменяет выделенный текст на заключенный в кавычках.
Это я о наборе говорил. При наборе лучше набирать без остановки.
->regex/^"(?!.* )(.?)"$/
====>“$1“<====
->regex/^"(?!. )(.?)$/
====>“$1<====
->regex/^(?!. )(.*?)"$/
Подледной строки здесь нету, да? Мне поставить нужно ли это:
====>$1”<====
UPD. Поставил, работает.
Открой
Mahou.iniв notepad++, найди[Hidden], снизу найди__selection=falseи поставь на__selection=true, и тогда заработает, и потом в Mahou нажми "Применить"!
Я точно так делал. Почему-то не сработал. Перед изменением Mahou.ini закрывал программу полностью. Сохранил Mahou.ini с __selection=true, потом запусил программу. А результат был “” без текста.
Для меня
->regex/^"(?!.* )(.?)"$/
====>“$1”<====
->regex/^"(?!. )(.?)$/
====>“$1<====
->regex/^(?!. )(.*?)"$/
====>$1”<====
лучший способ.
Сработает отлично.
Спасибо большое.
лучший способ
Ну раз так, тогда пожалуйста.
__selection=true
Это лучше убрать, если не используешь.
Это лучше убрать, если не используешь.
ОК.
Насчёт:
А результат был “” без текста.
А ты выделял текст и писал поверх него сниппет и Space, так ведь?
Пользуюсь моментом, задаю вопрос. Пока ты здесь 😂.
Вот код:
->regex/^-(?!.* )(.*?)$/
====>–$1<====
->regex/^(?!.* )(.*?)-$/
====>$1–<====
Сработает, превращает - на –. Но есть такие моменты:
–Это диалог.
–Разве это диалог?
–Да.
После – нужно поставить один пробел.
Сначала это сделал с помощью – $1. Но тогда два пробела добавляются, когда тире внутри предложение. Например:
– Эта диалог? – спросил он.
Здесь перед словом спросил 2 пробела. Как делать чтобы начальный дефис кодировался как тире+пробел, дефис с пробелом внутри предложения превратился пробел+тире+пробел.
Сейчас в сниппетах вышеуказанный код. Но этот код после начального тире и после слова, когда перед дефисом нет пробела (например, код– это поэзия, нужно это: код – это поэзия), не поставить пробел.
Если ли лечение?
Если ли лечение?
Вот такой:
->regex/^-\s(.*?)$/
====>–$1<====
Но он не будет работать вместе с этими двумя:
->regex/^-(?!.* )(.*?)$/
====>–$1<====
->regex/^(?!.* )(.*?)-$/
====>$1–<====
P.S. #260 читал?
P.S. #260 читал?
Сейчас читаю и занимаюсь “программированием” 🙃.
Здесь перед словом спросил 2 пробела. Как делать чтобы начальный дефис кодировался как тире+пробел, дефис с пробелом внутри предложения превратился пробел+тире+пробел
А, понял, тогда что-то вроде этого:
->regex/^(((?! ).)*?)-\s(.+?)$/
====>$1 – $3<====
Два сниппета:
->regex/^(((?! ).)*?)-\s(.+?)$/
====>$1 – $3<====
->regex/^-(?!.* )(.*?)$/
====>– $1<====
заменяет:
-Слово => – Слово
Слово- еще => Слово – еще
->regex/^(((?! ).)?)-\s(.+?)$/
====>$1 – $3<====
->regex/^-(?!. )(.*?)$/
====>– $1<====
Вау и ёще вау!
Сработает!
Но теперь новые проблемы.
Когда набираю косвенную речь, создаётся два тире:
А знак “ перед запятой тоже не изменился.
Два тире появится при наборе два слова, на моем примере, если пишу спросил – – нормально, один пробел. А если после него что-то набирается – – два тире.
->regex/^"(?!.* )(._?)"$/ ====>“$1”<==== ->regex/^"(?!._ )(._?)$/ ====>“$1<==== ->regex/^(?!._ )(.*?)"$/
====>$1”<====
Но теперь еще один нюанс.
Клавиш кириллической Э на латинской набирает ".
Если на латинском пишу “q,fh сниппет изменяет " на “ и программа не кодирует “q,fh вообще. А при выделенной конвертации переводить как хйбар. Это потому, что знак “ на латинской и знак х на кириллической раскладке находиться на одной клавише.
Можно ли создать правила-исключение при конвертации последнего слова для клавиши "|Э?
А знак “ перед запятой тоже не изменился.
Ну так у тебя все правила должны обязательно заканчиваться на ", а при слове сказал", - последний символ - ,, её тоже можно добавить в правила, как необязательный символ(т.е. если есть, ловить, если нет - нет):
в
->regex/^"(?!.* )(.*?)"$/
====>“$1“<====
->regex/^"(?!.* )(.*?)$/
====>“$1<====
->regex/^(?!.* )(.*?)"$/
====>“$1“<====
Третье правило замени на такое:
->regex/^(?!.* )(.*?)"([,]?)$/
====>“$1“$2<====
Два тире появится при наборе два слова, на моем примере, если пишу спросил – – нормально, один пробел. А если после него что-то набирается – – два тире.
Это потому что правило насчёт " не срабатывало, теперь всё вместе в таком порядке:
->regex/^"(?!.* )(.*?)"$/
====>“$1“<====
->regex/^"(?!.* )(.*?)$/
====>“$1 <====
->regex/^(?!.* )(.*?)"([,]?)$/
====>$1“$2 <====
->regex/^(((?! ).)*?)-\s(.+?)$/
====>$1 – $3<====
->regex/^-(?!.* )(.*?)$/
====>– $1<====
конвертирует:
"День добрый", - сказал он => “Добрый день“, – сказал он
Можно ли создать правила-исключение при конвертации последнего слова для клавиши "|Э?
Пока что нет.
Это потому что правило насчёт
"не срабатывало, теперь всё вместе в таком порядке:
Код копировал и поставил. После этого:
“День ддобрй“, – – сказал он.
добрый почему– то превратился в ддобрй и две тире все-таки появится.
Вот правильный:
->regex/^"(?!.* )(.*?)"$/
====>“$1“<====
->regex/^"(?!.* )(.*?)$/
====>“$1 <====
->regex/^(?!.* )(.*?)"([,]?)$/
====>$1“$2 <====
->regex/^(((?! ).)+?)-\s(.+?)$/
====>$1 – $3<====
->regex/^-(?!.* )(.*?)$/
====>– $1<====
в ->regex/^(((?! ).)*?)-\s(.+?)$/ нужно поменять *(т.е. 0 или больше) на +(1 или больше).
->regex/^"(?!.* )(.?)"$/
====>“$1“<====
->regex/^"(?!. )(.?)$/
====>“$1 <====
->regex/^(?!. )(.?)"([,]?)$/
====>$1“$2 <====
->regex/^(((?! ).)+?)-\s(.+?)$/
====>$1 – $3<====
->regex/^-(?!. )(.*?)$/
Поставил этот код.
После этого так срабатывает правила:
"День добрый", - сказал он =>“День ддобрй“, [email protected] сказал он.
Почему-то добрый =>ддобрй, вместо тире => [email protected].
Сниппет почты был после этого кода. Поэтому он вставил адрес почты, подумал я и поставил весь сниппет тире в конец сниппет-кодов.
Тогда появился сообщения об ошибке Net4.
ддобрй, вместо тире
Я опять забыл про последнюю строчку:
====>– $1<====
ддобрй, вместо тире
Я опять забыл про последнюю строчку:
====>– $1<====
Да, я тоже сейчас видел, что счётчик сниппетов стал красным.
Да, я тоже сейчас видел, что счётчик сниппетов стал красным
Да всё верно. :)
->regex/^"(?!.* )(.*?)"$/
====>“$1“<====
->regex/^"(?!.* )(.*?)$/
====>“$1 <====
->regex/^(?!.* )(.*?)"([,]?)$/
====>$1“$2 <====
->regex/^(((?! ).)+?)-\s(.+?)$/
====>$1 – $3<====
->regex/^-(?!.* )(.*?)$/
====>– $1<====
Вставил этот код.
“День ддобрй“, сказал он.
### “День ддобрй“, – сказал он.
Почему-то пробел удвоился, добрый стал ддобрй.
Ты уверен что что-то другое не мешает? У меня нормально конвертирует:

Попробуй убрать другие сниппеты и поставить только:
->regex/^"(?!.* )(.*?)"$/
====>“$1“<====
->regex/^"(?!.* )(.*?)$/
====>“$1 <====
->regex/^(?!.* )(.*?)"([,]?)$/
====>$1“$2 <====
->regex/^(((?! ).)+?)-\s(.+?)$/
====>$1 – $3<====
->regex/^-(?!.* )(.*?)$/
====>– $1<====
ддобрй
Без понятия почему так у тебя...
Попробуй убрать другие сниппеты и поставить только:
Ошибка повторяется...
Сейчас гифку вложу.
Ошибка повторяется...
Попробуй со стандартными настройками, т.е. закрой Mahou, перемести/переименуй Mahou.ini и запусти Mahou, включи сниппеты, поставь эти, и проверь.
Ошибка повторяется...
Попробуй со стандартными настройками, т.е. закрой Mahou, перемести/переименуй
Mahou.iniи запусти Mahou, включи сниппеты, поставь эти, и проверь.
ОК. Так делаю. Пока гифка:

ОК. Так делаю. Пока гифка:
ну "двойные пробелы" из-за функции "Добавлять пробел после сниппетов", либо её выключи либо в заменах сниппетов убери пробел в конце.
Ошибка повторяется...
Попробуй со стандартными настройками, т.е. закрой Mahou, перемести/переименуй
Mahou.iniи запусти Mahou, включи сниппеты, поставь эти, и проверь.
Даа...
Сработал.
Значить что-то мешал.
Ок. Ищу этот что-то.
Может как я писал:?
ну "двойные пробелы" из-за функции "Добавлять пробел после сниппетов", либо её выключи либо в заменах сниппетов убери пробел в конце.
Сработал.
Но не полностью:
“Кто", говорил
Значит, это случается с "одиночными" словами.
“Кто",
Ну так там и нет правила для "кавычек с двух сторон" и ,, вот, первое правило поменяй на:
->regex/^"(?!.* )(.*?)"([,]?)$/
====>“$1“$2<====
Ок. Ищу этот что-то.
Нашёл. После добавление сниппеты с задержками regex на тире перестал нормально работат.
Добавил это:
->тт
====>Автор статьи__keyboard(shift+ctrl+left*2|5)__keyboard(ctrl+b)__keyboard(ctrl+right*2|5)<====
Нет, похоже это не оно. У меня с этим и теми нормально работает.
Ок. Ищу этот что-то.
Скинь мне свой snippets.txt и Mahou.ini, или отладочную информацию из "О...", и я найду.
Скинь мне свой snippets.txt и Mahou.ini, или отладочную информацию из "О...", и я найду.
MAHOU DEBUG INFO
Environment info
Uzbek Latin Keyboard by Hamza (v2.0)(4039115843)
Узбекская (кириллица)(138610755)
США(67699721)
Русская(68748313)
Mahou.ini
[FirstStart]
First=False
[Functions]
AutoStartAsAdmin=False
TrayIconVisible=True
ConvertSelectionLayoutSwitching=False
ReSelect=True
RePress=False
AddOneSpaceToLastWord=True
AddOneEnterToLastWord=False
ConvertSelectionLayoutSwitchingPlus=False
ScrollTip=False
StartupUpdatesCheck=True
SilentUpdate=True
Logging=False
CapsLockTimer=False
TrayFlags=False
BlockMahouHotkeysWithCtrl=False
SymbolIgnoreModeEnabled=false
MCDServerSupport=False
OneLayoutWholeWord=True
GuessKeyCodeFix=False
AppDataConfigs=False
RemapCapslockAsF18=False
UseJKL=True
ReadOnlyNA=False
WriteInputHistoryHourly=false
WriteInputHistoryByDate=false
WriteInputHistory=False
WriteInputHistoryBackSpaceType=0
TrayText=False
[Layouts]
SwitchBetweenLayouts=True
OneLayout=False
EmulateLayoutSwitch=False
EmulateLayoutSwitchType=Alt+Shift
ChangeToSpecificLayoutByKey=True
MainLayout1=Узбекская (кириллица)(138610755)
MainLayout2=Uzbek Latin Keyboard by Hamza (v2.0)(4039115843)
SpecificKey1=3
SpecificKey2=0
SpecificKey3=0
SpecificKey4=0
SpecificLayout1=Переключать между раскладками
SpecificLayout2=Переключать между раскладками
SpecificLayout3=
SpecificLayout4=
SpecificKeysType=0
SpecificKeySets=set_0
QWERTZfix=False
[PersistentLayout]
OnlyOnWindowChange=False
ChangeOnlyOnce=False
ActivateForLayout1=False
ActivateForLayout2=False
Layout1CheckInterval=50
Layout2CheckInterval=50
Layout1Processes=devenv.exe wdexpress.exe
Layout2Processes=notepad++.exe winword.exe
[Appearence]
DisplayLangTooltipForMouse=False
DisplayLangTooltipForMouseOnChange=False
DisplayLangTooltipForCaret=False
DisplayLangTooltipForCaretOnChange=False
DifferentColorsForLayouts=False
MouseLTAlways=False
Language=Русский
Layout1ForeColor=#000000
Layout1BackColor=#FFFFFF
Layout1TransparentBackColor=False
Layout1Font=Georgia; 8pt
Layout1Height=14
Layout1Width=26
Layout1PositionX=8
Layout1PositionY=0
Layout2ForeColor=#000000
Layout2BackColor=#FFFFFF
Layout2TransparentBackColor=False
Layout2Font=Georgia; 8pt
Layout2Height=14
Layout2Width=26
Layout2PositionX=8
Layout2PositionY=0
MouseLTForeColor=#000000
MouseLTBackColor=#FFFFFF
MouseLTFont=Georgia; 8pt
MouseLTHeight=14
MouseLTWidth=26
MouseLTPositionX=8
MouseLTPositionY=0
CaretLTForeColor=#000000
CaretLTBackColor=#FFFFFF
MouseLTTransparentBackColor=False
CaretLTTransparentBackColor=False
CaretLTFont=Georgia; 8pt
CaretLTHeight=14
CaretLTWidth=26
CaretLTPositionX=8
CaretLTPositionY=12
MCDS_Pos_X=58
MCDS_Pos_Y=13
MCDS_Top=60
MCDS_Bottom=45
MouseLTUseFlags=False
CaretLTUseFlags=False
Layout1LTText=
Layout2LTText=
MouseLTUpperArrow=False
CaretLTUpperArrow=False
WindowsMessages=True
[Timings]
DelayAfterBackspaces=100
UseDelayAfterBackspaces=False
LangTooltipForMouseRefreshRate=25
LangTooltipForCaretRefreshRate=25
DoubleHotkey2ndPressWait=350
FlagsInTrayRefreshRate=100
ScrollLockStateRefreshRate=100
CapsLockDisableRefreshRate=100
SelectedTextGetMoreTries=False
SelectedTextGetMoreTriesCount=5
ExcludedPrograms=LA.exe SomeProg.exe
UsePasteInCS=False
ExcludeCaretLD=false
ChangeLayoutInExcluded=True
LangTooltipForMouseSkipMessages=5
[Snippets]
SnippetsEnabled=True
SpaceAfter=True
SwitchToGuessLayout=False
SnippetExpandKey=Space
[AutoSwitch]
Enabled=False
SpaceAfter=True
SwitchToGuessLayout=False
DownloadInZip=True
[Hotkeys]
ToggleMainWindow_Enabled=True
ToggleMainWindow_Double=False
ToggleMainWindow_Modifiers=Win + Control + Shift + Alt
ToggleMainWindow_Key=45
ConvertLastWord_Enabled=True
ConvertLastWord_Double=True
ConvertLastWord_Modifiers=Shift
ConvertLastWord_Key=0
ConvertSelectedText_Enabled=True
ConvertSelectedText_Double=True
ConvertSelectedText_Modifiers=Shift
ConvertSelectedText_Key=0
ConvertLastLine_Enabled=True
ConvertLastLine_Double=False
ConvertLastLine_Modifiers=Shift
ConvertLastLine_Key=19
ConvertLastWords_Enabled=True
ConvertLastWords_Double=False
ConvertLastWords_Modifiers=Shift
ConvertLastWords_Key=122
ToggleSymbolIgnoreMode_Enabled=True
ToggleSymbolIgnoreMode_Double=False
ToggleSymbolIgnoreMode_Modifiers=Shift + Control
ToggleSymbolIgnoreMode_Key=122
SelectedTextToTitleCase_Enabled=True
SelectedTextToTitleCase_Double=False
SelectedTextToTitleCase_Modifiers=Win + None
SelectedTextToTitleCase_Key=45
SelectedTextToRandomCase_Enabled=False
SelectedTextToRandomCase_Double=True
SelectedTextToRandomCase_Modifiers=Alt
SelectedTextToRandomCase_Key=0
SelectedTextToSwapCase_Enabled=True
SelectedTextToSwapCase_Double=False
SelectedTextToSwapCase_Modifiers=Alt
SelectedTextToSwapCase_Key=45
SelectedTextTransliteration_Enabled=True
SelectedTextTransliteration_Double=False
SelectedTextTransliteration_Modifiers=None
SelectedTextTransliteration_Key=45
SelectedToUpper_Enabled=False
SelectedToUpper_Double=False
SelectedToUpper_Modifiers=Win +
SelectedToUpper_Key=90
SelectedToLower_Enabled=False
SelectedToLower_Double=False
SelectedToLower_Modifiers=Win
SelectedToLower_Key=88
ExitMahou_Enabled=True
ExitMahou_Double=False
ExitMahou_Modifiers=Win + Control + Shift + Alt
ExitMahou_Key=123
RestartMahou_Enabled=True
RestartMahou_Modifiers=Shift + Alt
RestartMahou_Key=33
ToggleLangPanel_Enabled=True
ToggleLangPanel_Double=False
ToggleLangPanel_Modifiers=Shift
ToggleLangPanel_Key=120
ShowSelectionTranslate_Enabled=False
ShowSelectionTranslate_Double=True
ShowSelectionTranslate_Modifiers=Alt
ShowSelectionTranslate_Key=0
ToggleMahou_Enabled=True
ToggleMahou_Double=False
ToggleMahou_Modifiers=Win + Shift
ToggleMahou_Key=112
CycleCase_Enabled=True
CycleCase_Double=False
CycleCase_Modifiers=Win + None
CycleCase_Key=114
[LangPanel]
Display=False
Transparency=90
RefreshRate=25
Position=X0 Y0
ForeColor=#000000
BackColor=#FFFFFF
Font=Microsoft Sans Serif; 8,25pt
BorderColor=#8B5FFF
BorderAeroColor=True
UpperArrow=True
[Updates]
Delay=5
Channel=LatestCommit(Beta)
LatestCommit=a8eb8af
[Sounds]
CustomSound2=
UseCustomSound2=False
OnLayoutSwitch2=True
OnConvertLast2=False
OnSnippets2=True
OnAutoSwitch2=False
CustomSound=
UseCustomSound=False
OnLayoutSwitch=False
OnConvertLast=True
OnSnippets=False
OnAutoSwitch=True
Enabled=False
[TranslatePanel]
LanguageSets=set_1/auto/ru|set_2/auto/en
BG=#FFFFFF
BorderC=#F1F100
FG=#8B5FFF
Transparency=90
BorderAero=False
OnDoubleClick=False
UseNA=True
UseGS=False
Enabled=False
TitleFont=Segoe UI; 12pt
TextFont=Microsoft Sans Serif; 8,25pt
[Sync]
BLast=
RLast=
RBools=1|1|1|1|0
BBools=1|1|1|1|0
[Hidden]
onlySnippetsExcluded=
__selection=false
CycleCaseReset=false
CycleCaseOrder=TULSR
LibreCtrlAltShiftV=false
</details>
<details><summary>Snippets</summary>
->regex/^"(?!.* )(.?)"([,]?)$/
====>“$1”$2<====
->regex/^"(?!. )(.?)$/
====>“$1 <====
->regex/^(?!. )(.?)"([,]?)$/
====>$1“$2 <====
->regex/^(((?! ).)+?)-\s(.+?)$/
====>$1 – $3<====
->regex/^-(?!. )(.*?)$/
====>– $1<====
->eml====>[email protected]<====
->aynisoat====>__date(HH:mm:ss)<====
->aynikun====>__date(dd/MM/yyyy)<====
->аа====>Ассалому алайкум!<====
->ваа====>Ва алайкум ассалом!<====
->оо
====>__keyboard(ctrl+b)Мақола муаллифи__keyboard(ctrl+b)<====
->оот
====>__keyboard(ctrl+b)Мақола муаллифи__keyboard(ctrl+b)__keyboard(enter)__keyboard(ctrl+i)тайёрлади.__keyboard(ctrl+i)<====
->оотт
====>__keyboard(ctrl+b)Мақола муаллифи__keyboard(ctrl+b)__keyboard(enter)__keyboard(ctrl+i)таржимаси__keyboard(ctrl+i)<====
->рр
====>__keyboard(ctrl+i)Рус тилидан__keyboard(ctrl+i)__keyboard(enter)__keyboard(ctrl+b)Мақола муаллифи__keyboard(ctrl+b)__keyboard(enter)__keyboard(ctrl+i)таржимаси__keyboard(ctrl+i)<====
->ооо
====>__keyboard(ctrl+b)Бошқа Муаллиф__keyboard(ctrl+b)<====
->ооот
====>__keyboard(ctrl+b)Бошқа Муаллиф__keyboard(ctrl+b)__keyboard(enter)__keyboard(ctrl+i)тайёрлади.__keyboard(ctrl+i)<====
->aa====>Assalomu alaykum!<====
->vaa====>Va alaykum assalom!<====
->oo
====>__keyboard(ctrl+b)Maqola muallifi__keyboard(ctrl+b)<====
->oot
====>__keyboard(ctrl+b)Maqola muallifi__keyboard(ctrl+b)__keyboard(enter)__keyboard(ctrl+i)tayyorladi.__keyboard(ctrl+i)<====
->oott
====>__keyboard(ctrl+b)Maqola muallifi__keyboard(ctrl+b)__keyboard(enter)__keyboard(ctrl+i)tarjimasi__keyboard(ctrl+i)<====
->rr
====>__keyboard(ctrl+i)Rus tilidan__keyboard(ctrl+i)__keyboard(enter)__keyboard(ctrl+b)Maqola muallifi__keyboard(ctrl+b)__keyboard(enter)__keyboard(ctrl+i)tarjimasi__keyboard(ctrl+i)<====
->ooo
====>__keyboard(ctrl+b)Boshqa Muallif__keyboard(ctrl+b)<====
->ooot
====>__keyboard(ctrl+b)Boshqa Muallif__keyboard(ctrl+b)__keyboard(enter)__keyboard(ctrl+i)tayyorladi.__keyboard(ctrl+i)<====
->тт
====>Автор статьи__keyboard(shift+ctrl+left2|5)__keyboard(ctrl+b)__keyboard(ctrl+right2|5)<====
->тт
====>Мақола муаллифи__keyboard(shift+ctrl+left2|5)__keyboard(ctrl+b)__keyboard(ctrl+right2|5)<====
->тто
====>Мақола муаллифи__keyboard(shift+ctrl+left2|5)__keyboard(ctrl+b)__keyboard(ctrl+right2|5)__keyboard(shift+enter)тайёрлади.__keyboard(shift+ctrl+left2|10)__keyboard(ctrl+i)__keyboard(ctrl+right2|5)<====
->ттоо
====>Мақола муаллифи__keyboard(shift+ctrl+left2|5)__keyboard(ctrl+b)__keyboard(ctrl+right2|5)__keyboard(shift+enter)таржимаси__keyboard(shift+ctrl+left1|5)__keyboard(ctrl+i)__keyboard(ctrl+right2|5)<====
->трр
====>Рус тилидан__keyboard(shift+ctrl+left2|5)__keyboard(ctrl+i)__keyboard(ctrl+right2|5)__keyboard(shift+enter)Мақола муаллифи__keyboard(shift+ctrl+left2|10)__keyboard(ctrl+b)__keyboard(ctrl+right2|5)__keyboard(shift+enter)таржимаси__keyboard(shift+ctrl+left1|5)__keyboard(ctrl+i)__keyboard(ctrl+right2|5)<====
```
Теперь стал работать нормально.
Пахоже, программа испугалась от тебя.
^_^
Пахоже, программа испугалась от тебя.
Но на Ноутпад ++ не испугается.
Там смело добавляет пробелы:
“Кто”, – сказал он.
“Кто”, – сказал он.
“Ким” – деди у.
Там смело добавляет пробелы
Про пробелы я уже тебе писал:
ну "двойные пробелы" из-за функции "Добавлять пробел после сниппетов", либо её выключи либо в заменах сниппетов убери пробел в конце.
либо в заменах сниппетов убери пробел в конце.
Это ты об этих пробелах:
->regex/^(((?! ).)+?)-s(.+?)$/
====>$1–$3<====
->regex/^-(?!.* )(.*?)$/
====>–$1<====
Не, об этих(что в конце):
->regex/^"(?!.* )(.*?)$/
====>“$1<====
->regex/^(?!.* )(.*?)"([,]?)$/
====>$1“$2<====
Не, об этих(что в конце):
Но пробелы появляются после тире. Это зависеть от сниппета кавычек?
Нет, я ошибся.
Значит тебе нужно еще одно правило для только -, и изменить правило для-слово, вот так:
->regex/^-$/
====>–<====
->regex/^-(?!.* )(.+?)$/
====>– $1<====
->regex/^(((?! ).)+?)-\s(.+?)$/
====>$1 – $3<====

Не по теме.
Если дашь мне ini файл локализации. Я буду переводить на узбекский язык.
Если дашь мне ini файл локализации
Все тексты языковые находятся здесь: Languages.cs, но мне кажется будет немного "запутанные" названия функций, так как только я могу знать как их "правильно" назвать. Но если хочешь попробовать, давай для примера, как будет:
но мне кажется будет немного "запутанные" названия функций
Да, можно запутать.
давай для примера, как будет:
* Конвертация выделенного текста * Переключать на предполагаемую раскладку сниппетов
Да, так делаю.
Вес перевод здесь вложу, ты сам вставишь в правильное место. Да?
Например:

Если это трудно, мог и так сделать:
<td id="LC612" class="blob-code blob-code-inner js-file-line"> { <span class="pl-smi">Element</span>.<span class="pl-smi">tab_Functions</span>, <span class="pl-s"><span class="pl-pds">"</span>Функциялар<span class="pl-pds">"</span></span> }, </td>
</tr>
<tr>
<td id="L613" class="blob-num js-line-number" data-line-number="613"></td>
<td id="LC613" class="blob-code blob-code-inner js-file-line"> { <span class="pl-smi">Element</span>.<span class="pl-smi">tab_Layouts</span>, <span class="pl-s"><span class="pl-pds">"</span>Клавиатуралар<span class="pl-pds">"</span></span> }, </td>
</tr>
<tr>
<td id="L614" class="blob-num js-line-number" data-line-number="614"></td>
<td id="LC614" class="blob-code blob-code-inner js-file-line"> { <span class="pl-smi">Element</span>.<span class="pl-smi">tab_Appearence</span>, <span class="pl-s"><span class="pl-pds">"</span>Кўриниш<span class="pl-pds">"</span></span> }, </td>
</tr>
<tr>
<td id="L615" class="blob-num js-line-number" data-line-number="615"></td>
<td id="LC615" class="blob-code blob-code-inner js-file-line"> { <span class="pl-smi">Element</span>.<span class="pl-smi">tab_Timings</span>, <span class="pl-s"><span class="pl-pds">"</span>Тайминглар<span class="pl-pds">"</span></span> }, </td>
</tr>
<tr>
<td id="L616" class="blob-num js-line-number" data-line-number="616"></td>
<td id="LC616" class="blob-code blob-code-inner js-file-line"> { <span class="pl-smi">Element</span>.<span class="pl-smi">tab_Excluded</span>, <span class="pl-s"><span class="pl-pds">"</span>Истиснолар<span class="pl-pds">"</span></span> }, </td>
</tr>
<tr>
<td id="L617" class="blob-num js-line-number" data-line-number="617"></td>
<td id="LC617" class="blob-code blob-code-inner js-file-line"> { <span class="pl-smi">Element</span>.<span class="pl-smi">tab_Snippets</span>, <span class="pl-s"><span class="pl-pds">"</span>Сниппетлар<span class="pl-pds">"</span></span> }, </td>
</tr>
<tr>
<td id="L618" class="blob-num js-line-number" data-line-number="618"></td>
<td id="LC618" class="blob-code blob-code-inner js-file-line"> { <span class="pl-smi">Element</span>.<span class="pl-smi">tab_AutoSwitch</span>, <span class="pl-s"><span class="pl-pds">"</span>Авто ўзгартириш<span class="pl-pds">"</span></span> }, </td>
</tr>
<tr>
<td id="L619" class="blob-num js-line-number" data-line-number="619"></td>
<td id="LC619" class="blob-code blob-code-inner js-file-line"> { <span class="pl-smi">Element</span>.<span class="pl-smi">tab_Hotkeys</span>, <span class="pl-s"><span class="pl-pds">"</span>Тезкор тугмалар<span class="pl-pds">"</span></span> }, </td>
</tr>
<tr>
<td id="L620" class="blob-num js-line-number" data-line-number="620"></td>
<td id="LC620" class="blob-code blob-code-inner js-file-line"> { <span class="pl-smi">Element</span>.<span class="pl-smi">tab_LangPanel</span>, <span class="pl-s"><span class="pl-pds">"</span>Тил панели<span class="pl-pds">"</span></span> }, </td>
</tr>
А теперь по теме:
Правила транслитерации для буквы Ц и ц:
s/([ЎЁЮЯЕАИОУЭЪЬ])Ц/$1TS/|
s/([ўёюяеаиоуэъь])ц/$1ts/|
s/((^|\b))Ц/S/|
s/((^|\b))ц/s/|
s/((^|\b)|[Б-ДЖЗК-НП-ТФ-ЩҚҒҲʻB-DF-HJ-NP-TV-Z])Ц(?=[Б-ДЖЗК-НП-ТФ-ЩҚҒҲʻB-DF-HJ-NP-TV-Z]+|(^|\b))/$1S/|
s/((^|\b)|[б-джзк-нп-тф-щқғҳ])ц(?=[б-джзк-нп-тф-щқғҳ]+|(^|\b))/$1s/|
Правила сработает после гласных (ЎЁ...ўё...), в начале слова. Но после гласных не сработает. Что делать?
UPD. Добавил отдельные правила:
s/([б-джзк-нп-тф-щқғҳ])ц/$1ts/|
s/ц([б-джзк-нп-тф-щқғҳ])/s$1/|
Сработает. Так делать и со словами в ВЕРХНОМ РЕГИСТРЕ?
UPD 2. Добавил теперь такой код. Сработает:
s/([Б-ДЖЗК-НП-ТФ-ЩҚҒҲ])Ц([Б-ДЖЗК-НП-ТФ-ЩҚҒҲ]?)/$1S$2/|
s/([б-джзк-нп-тф-щқғҳ])ц([б-джзк-нп-тф-щқғҳ]?)/$1s$2/|
Нормально?
Значит тебе нужно еще одно правило для только -, и изменить правило для-слово, вот так:
->regex/^-$/ ====>–<==== ->regex/^-(?!.* )(.+?)$/ ====>– $1<==== ->regex/^(((?! ).)+?)-\s(.+?)$/ ====>$1 – $3<====
Проблема с тире лечилась. Но с кавычкой осталась.
Если слово одно – без проблем.
Но если после слова с кавычкой добавляешь пробел появляется 2 пробела. Это можно решить как с тире? Я не мог найти правильный RegEx.
Пример:
“День ддобрй” сказал он.
“День ддобрй”, сказал он.
“День”, сказал он.
"“добрй”, сказал он.
Сейчас это код работает:
->regex/^"(?!.* )(.*?)"([,]?)$/
====>“$1”$2<====
->regex/^"(?!.* )(.*?)$/
====>“$1 <====
->regex/^(?!.* )(.*?)"([,]?)$/
====>$1”$2 <====
Я не мог найти правильный RegEx.
А об этом я уже писал, пробелы что в конце замены: https://github.com/BladeMight/Mahou/issues/259#issuecomment-576811694 и функция “Добавлять 1 пробел после сниппетов":
->regex/^"(?!.* )(.*?)"([,]?)$/
====>“$1”$2<====
->regex/^"(?!.* )(.*?)$/
====>“$1<====
->regex/^(?!.* )(.*?)"([,]?)$/
====>$1”$2<====
Нормально?
Вроде бы да.
А об этом я уже писал, пробелы что в конце замены: #259 (comment) и функция “Добавлять 1 пробел после сниппетов":
Благодарен, сработал.
Почему-то, с буквой ы проблема. Это когда после неё ".
“День ддобрй” сказал он.
“Это ммло”, сказал он.
"ДЕНЬ ДОБРЫЙ", СКАЗАЛ ОН.
"ЭТО МЫЛО", СКАЗАЛ ОН.
С буквами в ВЕРХНОМ РЕГИСТРЕ сниппет не сработает.
Здесь другое предложение: можно сделать так, выделить текст, и с горячей клавишей исправить пунктуационные ошибки. Тире, кавычки, знаки (такой . / такой ? / такой !/ такой , => такой. / такой? / такой!/ такой,). Можно создать отдельный файл и отдельные правила. Как TSDict.txt. Например, PunktDict.txt.
С буквами в ВЕРХНОМ РЕГИСТРЕ сниппет не сработает.
У меня работает,
"МОЖЕТ не РАБОТАЕТ", нет все нормально
=>
“МОЖЕТ не РАБОТАЕТ”, нет все нормально
может что-то другое мешает, или может то как ты вводишь “ВЕРХНИЙ РЕГИСТР”, с помощью CapsLock или Shift+Буква?
можно сделать так, выделить текст, и с горячей клавишей исправить пунктуационные ошибки. Тире, кавычки, знаки
И откуда Mahou будет знать что на что исправить? Допустим текст такой:
Здесь. Нет пунктуационных ошибок, но их всё равно нет!
Чтобы сделать правила для каждого случая - на это нужно очень много времени, и нужно проверять все строчки, т.е. каждую строчку и каждое слово.
Для этого лучше использовать какие-то другие программы/сайты где это уже сделано.
И откуда Mahou будет знать что на что исправить? Допустим текст такой:
Здесь. Нет пунктуационных ошибок, но их всё равно нет!Чтобы сделать правила для каждого случая - на это нужно очень много времени, и нужно проверять все строчки, т.е. каждую строчку и каждое слово.
Нет, это я о другом. "Ошибка" это неправильное применение пунктуационных знаков.
Допустим, такой текст:
Здесь.Есть пунктуационных ошибок ,но их всё равно есть ! Если надо- покажу.
"Кто это сказал ?" - спросил он.
"Я", ответил я испуганно.
Я например нажму F9 или Alt+F9 и текст изменяется таким образом:
Здесь. Есть пунктуационных ошибок, но их всё равно есть! Если надо – покажу.
“Кто это сказал?” – спросил он.
“Я”, ответил я испуганно.
Принцип как TSDict.txt. С помощью RegEx. Но это только для пунктуации. А с TSDict.txt это невозможно сделать. Там делается транслитерация. Можно туда вставить regex, но чтобы использовать это сначала надо конвертировать текст на латиницу, потом с латиницу на кириллицу. А тогда некоторые буквы на кириллице исчезают (ц,ь).
С сниппетами это невозможно. Там работает принцип набор+сразу Space. А если внедрить PunktDict.txt принцип, после набора целого текста (например, 4-5 абзацев) выделяю его и нажму горячие клавиши. И все пунктуационные знаки в своем месте! Лишних пробелов тоже нет. Кавычки правильные.
может что-то другое мешает, или может то как ты вводишь “ВЕРХНИЙ РЕГИСТР”, с помощью
CapsLockилиShift+Буква?
Что, у тебя на спине тоже глаза есть? 🙃
Я точно так делал...
И ыЫ тоже набираю с помощью Alt.
Значит, все от этого...
Понял.
PunktDict.txt принцип, после набора целого текста (например, 4-5 абзацев) выделяю его и нажму горячие клавиши. И все пунктуационные знаки в своем месте! Лишних пробелов тоже нет. Кавычки правильные.
ОК, в 410982a сделал новую горячую клавишу "Особая изменение текста":

Если её включить и нажать применить создастся – CustomReplaces.txt, в нем такой же синтаксис как и TSDict.txt, только замена идет "в одну сторону", т.е. один раз, из-за этого двойные regex – не будут работать, пример: s/что/то/|s/то/что/, а обычные замены работают только в "одну сторону", т.е. abc|xyz будет заменять: abc на xyz но не обратно!
И ыЫ тоже набираю с помощью Alt.
Да, Mahou пока что не ловит "символы" из ввода с Alt+Numpad
CustomReplaces.txt
На окне обновления и в объяснения горячего клавиша указан как "CustomConversion.txt".
В a02a7e4 исправил, правильное название CustomConversion.txt, я просто начал писать комментарий до того как сделал саму функцию, и поэтому передумал в процессе.
Я конвертировал сниппеты в CustomConversion.txt. Но не ловит.
s/^"(?!.* )(.*?)"([,]?)$/“$1”$2/|
s/^"(?!.* )(.*?)$/“$1/|
s/^(?!.* )(.*?)"([,]?)$/$1”$2/|
s/^-$/–/|
s/^-(?!.* )(.+?)$/– $1/|
s/^(((?! ).)+?)-\s(.+?)$/$1 – $3/|
На www.regex101.com тоже не получится. 1-2 шпаргалка дай, пожалуйста.
в CustomConversion.txt ^ и $ значит начало(^) и конец($) линии, тебе в: s/^"(?!.* )(.*?)"([,]?)$/“$1”$2/| нужно чтобы замены производились для каждого слова, а не для линий в которых только по 1-2 слова, поэтому убери ^ и $ и поставь вместо них \b(начало или конец любого слова, исключая символы), здесь сойдет обычный "(.*?)" или даже просто правило "|“.
Так же в этих правилах не нужно проверять на наличие пробелов с помощью (?!.* ), так как из-за этого он не будет работать в линиях где есть хоть 1 пробел.
Здесь лучше написать совсем другие правила, ведь тут нужна другая логика. Например для кавычек можно просто "|“, для тире -|–, для тире и слова: s/\b-([^ ]+)/–$1/|, и т.д.
Вот примерно такие как тебе нужно:
s/(\s)-([^\s]+)/$1– $2/|
s/(\s)-(\s)/$1–$2/|
"|“
Конвертирует:
"Где-то Там", -сказал он - тоже => “Где-то Там“, – сказал он – тоже
Объясняю s/(\s)-([^\s]+)/$1– $2/|,
-, [^\s]+ ловит во вторую группу все символы пока не встретит "Space" или "Tab", пример на r101Тебе будет полезно почитать:
И если хочешь проверить свои знания в RegEx:
"|“
Другие символы этим способом заменял:
«|“
»|”
—|–
¬|
s/^-/– /|
Но "|“ заменяет и закрывающую кавычку на открывающую: “книга“. А мне нужен сделать так: “книга”.
Буду изучать вышеуказанные источники.
Но
"|“заменяет и закрывающую кавычку на открывающую:“книга“. А мне нужен сделать так:“книга”.
Ну тогда вместо "|“, вот эти, в этом порядке:
s/(\s)([^\s]+)"/$1$2“/|
s/"([^\s]+)/”$1/|
"Где-то Там", => ”Где-то Там“,
Добрый день!
Это снова я.
Изучал это: https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide/Regular_Expressions
У меня проблема. При наборе пишу слово "Санкт", а после этого добавлю пробел. Вдруг понимаю, что после слова нужен дефис. Теперь удаляю пробел, поставлю дефис и пишу слова полностью: “Санкт-Петербург”. А тогда дефис превращается в тире:
Санкт– Петербург.
Это изза этого кода:
->regex/^-(?!.* )(.+?)$/
====>– $1<====
Чтобы создать правило-исключение перед вышеуказанного кода добавил такой код:
->regex/^([а-яўқғҳА-ЯЎҚҒҲa-zA-Z,]+)-([а-яўқғҳА-ЯЎҚҒҲa-zA-Z,]+)$/
====>$1-$2<====
Не помогло.
Помоги, пожалуйста.
ПС. При наборе очень много встречается такие случаи. При редактуре тоже. Если корректирую такие слова (парные слова), дефис превращается в тире.
У меня проблема. При наборе пишу слово "Санкт", а после этого добавлю пробел. Вдруг понимаю, что после слова нужен дефис. Теперь удаляю пробел, поставлю дефис и пишу слова полностью:
Когда ты пишешь _слово и ставишь пробел_ Mahou очищает(забывает про последнее введенное слово) последнее слово и думает что ты вводишь просто "-" и слово.
правило-исключение
Ты не можешь исключить правила, они все работают вместе. Поэтому его 1.) нужно изменить(мне кажется такой вариант будет сложнее всего) или 2.) стараться вводить не используя пробел, или 3.) еще можно создать дополнительные правила типа:
->Санкт
====>Санкт-Петербург<====
Т.е если ты написал Санкт и нажал пробел - то сразу заменять на Санкт-Петербург. (для этого поможет список слов)
Если тебе нужно изменить правило то думаю будет очень не просто т.к. Mahou очищает последнее слово, а из-за этого будут срабатывать сниппеты которые считаются с "начала" слова/строки. Т.е. тебе нужно чтобы в начале ввода с "-" в начале заменялся на тире, но из-за того что при нажатии на пробел Mahou очищает(забывает) последнее введенное слово, Mahou потом считает что ты вводишь с начала. Можно этого избежать если заставить Mahou очистить слово, т.е. нажать одну из клавиш меняющих позицию каретки, например:
Написал "Санкт ", удалил пробел, написал -Петербург, нажал Влево←,Вправо→ и потом пробел. Тогда замены не будет.
Удачи.
Спасибо. Понял.
Most helpful comment
Тебе будет полезно почитать:
И если хочешь проверить свои знания в RegEx: