Спасибо за статью. Однажды у меня был период, когда на стационарном компьютере сломалась мышка и я неделю пользовался только клавиатурой. Верю, что именно с тех пор я стал шорткат-гиком :)
1. У меня часто бывает необходимость выполнить последовательно комбинации Crtl+F,Ctrl+V,Enter и хочется такую последовательность повесить на, не поверите, Ctrl+F. Может ли AHK с таким справиться?
Да, конечно. Что-то такое подойдет: Control & f::
Send ^f
Send ^v
Send {Enter}
return
Можно и в одну строчку уложиться, но так нагляднее. Вообще я не рекомендую биндить на такое распространенное сочетание. Вы можете сделать модифицированную версию моего скрипта и добавить туда сочетание `Caps+F`.
В случае чего обращайтесь к документации.
2. Может ли AHK работать с мышкой и умеет ли искать окна и его контроллы? У меня есть несколько программ, которые на работе используются, у которых нет возможности задать хоткеи, а только мышкой кнопки тыкать. На AutoIT можно найти нужное окно, в нем нужный контрол, определить его координаты, переместить на него мышку, тыкнуть этот контрол, вернуть мышку в исходную позицию. Такое на AHK можно сделать?
Я видел продвинутые варианты работы с мышкой через AHK, и, думаю, вы сможете найти что-то подобное на просторах интернета. Также обязательно посмотрите на творения народных умельцев. Если не получится — всегда можно совместить использование AutoHotkey и привычного вам AutoIT.
3. Может ли AHK определить какое окно активно (в фокусе) и исходя из этого менять поведение хоткеев? Например, если активен excel, то Caps+w очистит все ячейки влево от текущей (Ctrl+Shift+Left,Delete), а если активен Word, то удалит слово слева (Ctrl+Backspace).
> Способ, которым Vim назначает биндинги в , за исключением hjkl и некоторых других команд, является фонетическим (как вариант, мнемоническим), а не семантическим. [C]hange [w]ord и т.д. Семантический способ как раз у вас: вы назначаете той же C семантику «копирования», единообразно с Ctrl+C, и так далее.
на иллюстрации с раскладкой 2 раза PgUp и нет PgDn, видимо опечатка?
Согласен. Подправлю)
> Очень правильная идея в основе (перегруппировка клавиш операций по удобству/лёгкости доступа, а не по названию операции), но реализация делает слишком много допущений о приложении, например что ^backspace удаляет слово.
Исходный код проекта открыт, вы всегда можете изменить скрипт под свои предпочтения. Также, вы можете предложить свою реализацию сочетаний клавиш, и я могу добавить этот вариант как альтернативный в репозитории проекта.
> По факту всё заточено под 1 редактор.
Не вполне понимаю, почему вы так решили. Я применяю скрипт везде, где можно писать текст, и даже сейчас, в поле, в котором пишу этот комментарий.
> И что-то странное с действиями на hjkl, не консистентно с вимом, хотя мб так и предполагалось. В тч движение влево на J = самое редкое из 4 базовых движений на самой ценной клавише на клавиатуре наряду с пробелом.
Да, базовые движения повторяют расположение привычных всем стрелочек, и не подразумевают консистентность с Вимом. По поводу движения влево мне сложно согласиться, но возможно я просто слишком привязался к своему скрипту. Я предлагаю вам попробовать хотя-бы ненадолго воспользоваться скриптом и описать свои ощущения. Если вы решите, что есть более удачное расположение клавиш, то всегда буду рад вашим предложениям здесь или на странице репозитория.
В виме, как вы сказали, мнемоническйи принцип расположения некоторых клавиш, из-за которого, например, клавиша i отдана под режим insert. В capsKeys за «переключение режимов» отвественна клавиша CapsLock и поэтому мы можем найти более удобное применение освободившимся клавишам на буквенном ряду.
Еще один аргумент против фонетического/мнемонического принципа — различные раскладки клавиатур. Если пользователь использует нестандартную раскладку, то расположение некоторых клавиш может вызывать сильный дискомфорт и даже если оставить сочетания вима на тех же местах, то вся польза мнемоники будет сведена на нет (например, клавиша C в раскладке Дворака не будет ассоциироваться с режимом insert).
Не возникает ли у вас проблем из-за того, что у Space есть конкретная функция вставки пробела и его сложно использовать в качестве клавиши-модификатора?
Точно, я забыл упомянуть про эти сочетания, так как оно реализовано через Caps+Alt(Space) в AHK скрипте. Спасибо!
Вим это круто, но требует доп настроек, привыкания и полного изменения workflow.
Согласен, именно поэтому я предложил использовать capsKeys, который переносит часть опыта использования Vim на всю систему, и при этом почти безболезненно (осторожно, вызывает сильнейшее привыкание и абсолютную беспомощность при отказе).
А что, обязательно решать за читателя, кидать в закладки или нет?
Это было добавлено редактором, так как это моя первая статья на хабре, я решил не спорить со старшими товарищами и оставить как есть.
по-существу, вместо vimium можно Tridactyl или вовсе qutebrowser
В статье я старался рассматривать наиболее популярные инструменты, чтобы новичкам, которые только начинают осваивать все это, не было слишком сложно. Но я оставлю ссылки на альтернативные решения. Спасибо за дополнение!
Вы можете написать статью о инструментах для более опытных пользователей, и я с радостью оставлю ссылку на нее. Еще можете рассмотреть необычные решения для гиков, думаю это будет очень интересно).
в видео — tutor из vim'а. вместо прыжка на одно слово в конец и обратно в начало слова можно просто нажать w в виме, или вовсе — 2w если надо прыгнуть через слово
По поводу вима согласен, что там все реализовано на более продвинутом уровне. Но именно эта сложность убивает желание им пользоваться на постоянной основе. CapsKeys очень прост и в этом мне видится намного больше плюсов, чем минусов. Я уверен, что небходимость постоянно просчитывать шаги утомляет, и большая часть пользователей в конечном итоге перестанет это делать, используя только самые базовые команды, и вместо 2w нажимать просто w w.
там же — отрывание рук от клавиатуры для позиционирования мышкой
В видео я старался совместить возможности capsKeys с дополнительными возможностями редактора VSCode. Это не видео из области «смотрите, как могу», это небольшой дополнительный материал, который показывает «как можно было бы». Позиционирование мышкой было необходимо, чтобы точечно добавить дополнительный курсор в определенное место (это одна из самых приятных возможностей VSCode и я не мог ее пропустить), к сожалению, этого невозможно добиться при помощи одних клавиш.
там же: прыжок в конец строки, выделение от конца строки до нужного слова, удаление, а в виме от нужного слова: d$ или c$
В скрипте есть сочетания `Caps+Q` и `Caps+R` предназначенное для удаления всех символов до или после курсора. Честно говоря, я даже думал, что оно лишнее, так как можно добиться этого эффекта через `Shift+Caps+H + Backspace`. Это несложное сочетание, особенно когда уже немного привык к скрипту.
ну и как там с переносимостью?
Да, скрипты AutoHotkey работают только в Windows, но зато по всей системе, а не только в редакторе. Можно попробовать запустить в Linux через Wine. Я не пробовал, но надеюсь у кого-нибудь дойдут до этого руки.
Также я не заявляю, что capsKeys это наиболее подходящее решение. Очень хотелось бы, чтобы кто-то умелый смог реализовать кросплатформенное приложение для этих целей.
прошу прощения, у меня вим головного мозга. вдохновлялся
Понимаю) Настоящие мастера вима поражают своими умениями и всем бы хотелось уметь как они. Однако это требует огоромного количества временных, умственных и физических затрат. Пока все это дойдет до автоматизма и вы начнете думать в стиле Vim, пройдет несколько лет. Стоит ли оно того, каждый решает сам.
а, еще в винде может пригодиться: win + влево + влево + вверх, чтобы окно ушло на 1/4 влево вверх. узнал об этом случайно, методом тыка)
Добавлю это в заметки к соответствующему сочетанию, спасибо)
CapsKeys — всего лишь обертка над стандартными сочетаниями операционной системы. Я писал его под себя, добавляя недостающих мне функций с течением времени. Когда я осознал, как сильно это облегчило мне жизнь, я решил поделиться своим решением с остальными. Я не призываю отказываться от Vim-а и пользоваться только моим скриптом. Мне очень хотелось бы, чтобы кто-то дополнил мои идеи и предложил лучшее решение, которое помогло бы всем.
Интересный, познавательный и хорошо структурированный текст, спасибо!
Дежавю какое-то)
Спасибо за статью. Однажды у меня был период, когда на стационарном компьютере сломалась мышка и я неделю пользовался только клавиатурой. Верю, что именно с тех пор я стал шорткат-гиком :)
В дополнение могу порекомендовать статью из личной коллекции: https://habr.com/ru/post/551822/
Да, конечно. Что-то такое подойдет:
Control & f::
Send ^f
Send ^v
Send {Enter}
return
Можно и в одну строчку уложиться, но так нагляднее. Вообще я не рекомендую биндить на такое распространенное сочетание. Вы можете сделать модифицированную версию моего скрипта и добавить туда сочетание `Caps+F`.
В случае чего обращайтесь к документации.
Я видел продвинутые варианты работы с мышкой через AHK, и, думаю, вы сможете найти что-то подобное на просторах интернета. Также обязательно посмотрите на творения народных умельцев. Если не получится — всегда можно совместить использование AutoHotkey и привычного вам AutoIT.
Думаю, эта функция это то, что вам нужно)
К сожалению, у меня нет серьезных навыков программирования на AutoHotkey, я использую его только для одной цели, но, надеюсь я сумел вам помочь)
на иллюстрации с раскладкой 2 раза PgUp и нет PgDn, видимо опечатка?
Согласен. Подправлю)
> Очень правильная идея в основе (перегруппировка клавиш операций по удобству/лёгкости доступа, а не по названию операции), но реализация делает слишком много допущений о приложении, например что ^backspace удаляет слово.
Исходный код проекта открыт, вы всегда можете изменить скрипт под свои предпочтения. Также, вы можете предложить свою реализацию сочетаний клавиш, и я могу добавить этот вариант как альтернативный в репозитории проекта.
> По факту всё заточено под 1 редактор.
Не вполне понимаю, почему вы так решили. Я применяю скрипт везде, где можно писать текст, и даже сейчас, в поле, в котором пишу этот комментарий.
> И что-то странное с действиями на hjkl, не консистентно с вимом, хотя мб так и предполагалось. В тч движение влево на J = самое редкое из 4 базовых движений на самой ценной клавише на клавиатуре наряду с пробелом.
Да, базовые движения повторяют расположение привычных всем стрелочек, и не подразумевают консистентность с Вимом. По поводу движения влево мне сложно согласиться, но возможно я просто слишком привязался к своему скрипту. Я предлагаю вам попробовать хотя-бы ненадолго воспользоваться скриптом и описать свои ощущения. Если вы решите, что есть более удачное расположение клавиш, то всегда буду рад вашим предложениям здесь или на странице репозитория.
В виме, как вы сказали, мнемоническйи принцип расположения некоторых клавиш, из-за которого, например, клавиша i отдана под режим insert. В capsKeys за «переключение режимов» отвественна клавиша CapsLock и поэтому мы можем найти более удобное применение освободившимся клавишам на буквенном ряду.
Еще один аргумент против фонетического/мнемонического принципа — различные раскладки клавиатур. Если пользователь использует нестандартную раскладку, то расположение некоторых клавиш может вызывать сильный дискомфорт и даже если оставить сочетания вима на тех же местах, то вся польза мнемоники будет сведена на нет (например, клавиша C в раскладке Дворака не будет ассоциироваться с режимом insert).
Не возникает ли у вас проблем из-за того, что у Space есть конкретная функция вставки пробела и его сложно использовать в качестве клавиши-модификатора?
Точно, я забыл упомянуть про эти сочетания, так как оно реализовано через
Caps+Alt(Space)
в AHK скрипте. Спасибо!Согласен, именно поэтому я предложил использовать capsKeys, который переносит часть опыта использования Vim на всю систему, и при этом почти безболезненно (осторожно, вызывает сильнейшее привыкание и абсолютную беспомощность при отказе).
Это было добавлено редактором, так как это моя первая статья на хабре, я решил не спорить со старшими товарищами и оставить как есть.
В статье я старался рассматривать наиболее популярные инструменты, чтобы новичкам, которые только начинают осваивать все это, не было слишком сложно. Но я оставлю ссылки на альтернативные решения. Спасибо за дополнение!
Вы можете написать статью о инструментах для более опытных пользователей, и я с радостью оставлю ссылку на нее. Еще можете рассмотреть необычные решения для гиков, думаю это будет очень интересно).
По поводу вима согласен, что там все реализовано на более продвинутом уровне. Но именно эта сложность убивает желание им пользоваться на постоянной основе. CapsKeys очень прост и в этом мне видится намного больше плюсов, чем минусов. Я уверен, что небходимость постоянно просчитывать шаги утомляет, и большая часть пользователей в конечном итоге перестанет это делать, используя только самые базовые команды, и вместо 2w нажимать просто w w.
В видео я старался совместить возможности capsKeys с дополнительными возможностями редактора VSCode. Это не видео из области «смотрите, как могу», это небольшой дополнительный материал, который показывает «как можно было бы». Позиционирование мышкой было необходимо, чтобы точечно добавить дополнительный курсор в определенное место (это одна из самых приятных возможностей VSCode и я не мог ее пропустить), к сожалению, этого невозможно добиться при помощи одних клавиш.
В скрипте есть сочетания `Caps+Q` и `Caps+R` предназначенное для удаления всех символов до или после курсора. Честно говоря, я даже думал, что оно лишнее, так как можно добиться этого эффекта через `Shift+Caps+H + Backspace`. Это несложное сочетание, особенно когда уже немного привык к скрипту.
Да, скрипты AutoHotkey работают только в Windows, но зато по всей системе, а не только в редакторе. Можно попробовать запустить в Linux через Wine. Я не пробовал, но надеюсь у кого-нибудь дойдут до этого руки.
Также я не заявляю, что capsKeys это наиболее подходящее решение. Очень хотелось бы, чтобы кто-то умелый смог реализовать кросплатформенное приложение для этих целей.
Понимаю) Настоящие мастера вима поражают своими умениями и всем бы хотелось уметь как они. Однако это требует огоромного количества временных, умственных и физических затрат. Пока все это дойдет до автоматизма и вы начнете думать в стиле Vim, пройдет несколько лет. Стоит ли оно того, каждый решает сам.
Добавлю это в заметки к соответствующему сочетанию, спасибо)
CapsKeys — всего лишь обертка над стандартными сочетаниями операционной системы. Я писал его под себя, добавляя недостающих мне функций с течением времени. Когда я осознал, как сильно это облегчило мне жизнь, я решил поделиться своим решением с остальными. Я не призываю отказываться от Vim-а и пользоваться только моим скриптом. Мне очень хотелось бы, чтобы кто-то дополнил мои идеи и предложил лучшее решение, которое помогло бы всем.