1 (изменено: SeaVodikendu, 2017-02-14 12:26:57)

Тема: AHK: Одна строка автозамены - несколько выражений

Здравствуйте.
Понадобился скрипт, который позволит использовать одну строку автозамены, с несколькими выражениями, путем переключений хоткеев.
Хотелось бы реализовать такое:


1::
Goto, rus
return

2::
Goto, eng
return

rus:
:*:dom::дом
return

eng:
:*:dom::home

2

Re: AHK: Одна строка автозамены - несколько выражений

var := "eng"   ; значение по умолчанию
$1:: var := "rus"
$2:: var := "eng"

:*:dom::
   SendInput, % var = "eng" ? "home" : "дом"
   Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Одна строка автозамены - несколько выражений

Так правильнее:

:?*:dom::

Вместо:

:*:dom::

4

Re: AHK: Одна строка автозамены - несколько выражений

Почему?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: svoboden, 2017-02-16 03:48:23)

Re: AHK: Одна строка автозамены - несколько выражений

Напишите: цифры, буквы верхнего регистра или английские символы перед автозаменой "dom".

6

Re: AHK: Одна строка автозамены - несколько выражений

Так еще можно:

$1::
   Input ItemName, V I M,{enter}, dom
   
   if (ItemName = "dom") {
   SendInput, {backspace 3}
   SendInput, дом
		} else {
			
		}	
		return
		
$2::
   Input ItemName, V I M,{enter}, dom

   if (ItemName = "dom") {
    SendInput, {backspace 3}
    SendInput, home
		} else {
			
		}	
		return

7

Re: AHK: Одна строка автозамены - несколько выражений

Я так понял про "Goto" мне стоит забыть...
Как быть, если имеется больше двух "языков" (сейчас 3) и для каждого около 50 выражений для автозамены строки.
Нужно как-то "обобщить" их, иначе очень неудобно прописывать будет все.

8 (изменено: svoboden, 2017-03-11 22:19:53)

Re: AHK: Одна строка автозамены - несколько выражений

Через запятую пишешь: dom, dom1 и т.д. Потом тут: if (ItemName = "dom") пишешь их. Например:
if (ItemName = "dom1")

9

Re: AHK: Одна строка автозамены - несколько выражений

svoboden пишет:

Напишите: цифры, буквы верхнего регистра или английские символы, перед автозаменой "dom".

Не совсем понял мысль. Это ведь должно быть отдельным словом, зачем перед ним что-то писать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10 (изменено: SeaVodikendu, 2017-02-14 20:33:22)

Re: AHK: Одна строка автозамены - несколько выражений

teadrinker пишет:
var := "eng"   ; значение по умолчанию
$1:: var := "rus"
$2:: var := "eng"

:*:dom::
   SendInput, % var = "eng" ? "home" : "дом"
   Return

Подскажите, как добавить сюда больше 2х выражений?

Вообще идеальное решение моей задумки -  запуск нескольких скриптов и "переключение" между ними будет через "Suspend", но хочется чтобы все в одном было.

11 (изменено: svoboden, 2017-02-16 03:53:48)

Re: AHK: Одна строка автозамены - несколько выражений

teadrinker пишет:

Не совсем понял мысль. Это ведь должно быть отдельным словом, зачем перед ним что-то писать.

Подумайте сами, разве перед автозаменой текста никогда не будет какого-нибудь символа? То есть, всегда должно быть пустое пространство?

12

Re: AHK: Одна строка автозамены - несколько выражений

svoboden
Почти всегда, либо используется ":o:".

13 (изменено: svoboden, 2017-03-18 23:38:37)

Re: AHK: Одна строка автозамены - несколько выражений

SeaVodikendu, неправда, какой-нибудь знак, будет стоять впереди автозамены хоть раз. А опция "o", перед цифрами, русскими буквами и т.д. Не работает.

14

Re: AHK: Одна строка автозамены - несколько выражений

SeaVodikendu пишет:

Подскажите, как добавить сюда больше 2х выражений?

lang := "eng"   ; значение по умолчанию
$1:: lang := "rus"
$2:: lang := "eng"
$3:: lang := "ukr"

:*:dom::
   SendInput, % lang = "eng" ? "home" : lang = "rus" ? "дом" : "хата"
   Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: AHK: Одна строка автозамены - несколько выражений

svoboden пишет:

Так правильнее:

:?*:dom::

Попробуйте запустить

:?*:dom::home

и написать «condom».

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16

Re: AHK: Одна строка автозамены - несколько выражений

teadrinker
Спасибо.

17 (изменено: svoboden, 2017-03-11 04:06:09)

Re: AHK: Одна строка автозамены - несколько выражений

teadrinker, это уже другой случай, причем совершенно не к месту.

18

Re: AHK: Одна строка автозамены - несколько выражений

Почему не к месту? А если понадобится «condom» написать?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

19

Re: AHK: Одна строка автозамены - несколько выражений

Так не надо такие автозамены писать вообще.

20

Re: AHK: Одна строка автозамены - несколько выражений

Какие именно такие? Не пойму.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

21 (изменено: svoboden, 2017-02-14 22:08:15)

Re: AHK: Одна строка автозамены - несколько выражений

teadrinker, такие: "condom", чтобы не перепутывались автозамены, писать их надо лучше на другие буквы.

22

Re: AHK: Одна строка автозамены - несколько выражений

svoboden
"condom" — это не автозамена, автозамена «dom». Если написать её так, как предлагаете вы, она будет "выстреливать", когда «dom» будет являться частью другого слова, что совсем не нужно. Теперь понятнее?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

23 (изменено: svoboden, 2017-03-31 00:18:19)

Re: AHK: Одна строка автозамены - несколько выражений

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

24

Re: AHK: Одна строка автозамены - несколько выражений

Думаю, «другой случай» — это как раз то, о чём пишете вы. А в данном случае нужно, чтобы автозамена срабатывала только тогда, когда слово стоит отдельно.

svoboden пишет:

Напишите: цифры, буквы верхнего регистра или английские символы, перед автозаменой "dom".

Смотрите, если перед «dom» будет какая-нибудь цифра, например «1», то в итоге получится «1home», а разве это нужно?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

25 (изменено: svoboden, 2017-02-16 03:56:49)

Re: AHK: Одна строка автозамены - несколько выражений

teadrinker пишет:

а разве это нужно?

Думаю, в этом случае нужна команда "Input" - это точно. А насчет "1home", так зачем такую автозамену писать, может, надо будет написать буквально слово "dom".

26

Re: AHK: Одна строка автозамены - несколько выражений

Ну вот вы теперь пытаетесь объяснить, что то, что удобно — не нужно, а то, что неудобно — нужно. Человеку удобно использовать такую автозамену, он её и использует.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

27 (изменено: svoboden, 2017-02-16 03:57:17)

Re: AHK: Одна строка автозамены - несколько выражений

teadrinker, значит, вы хотите сказать, что команду "Input" лучше не использовать, а вместо этого пользоваться командой "Hotstrings and Auto-replace"?

28

Re: AHK: Одна строка автозамены - несколько выражений

Почему, иногда удобнее одно, иногда другое. Недостаток Input как раз в том, что она не различает, что было напечатано перед нужным сочетанием, а в данном случае это важно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

29 (изменено: svoboden, 2017-03-11 05:48:04)

Re: AHK: Одна строка автозамены - несколько выражений

teadrinker, в общем, вывод у меня такой - опция "?", в любом случае нужна. Еще можно добавить знак "о", чтобы автозамена не посылала, вызывающие ее конечные символы.

30

Re: AHK: Одна строка автозамены - несколько выражений

Опять про condom забыли, ну что ж такое! svoboden, если серьёзно, если вам так удобнее — никто спорить не будет, вставляйте "?" на здоровье.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

31 (изменено: svoboden, 2017-12-07 19:36:00)

Re: AHK: Одна строка автозамены - несколько выражений

teadrinker, я только полгода, как начал учить "AutoHotkey", но вы, по-моему, забыли про конечные символы. http://s2.rimg.info/5602a4cac8909fc6c1ce0e23fa5bdb6d.gif