Как стать автором
Обновить

Комментарии 38

подавляющая часть проблемы покрывается переходом на работу мышкой левой рукой. Да, для правши. Буквально пара дней привыкания, и исчезают почти все дёрганья.
Смысл в том, чтобы не носить далеко?
Ну, примерно. Вообще не надо носить руку. Правой руке на клавиатуре комфортно, она там всё умеет, и снимать её с клавиш не надо. А левой вполне нормально на мышке. Так что, либо идёт сугубо набивка кода или какого текста — тогда обе руки на клаве, либо всё остальное (отладка или что ещё) — и левая на мышке.
Отнюдь!
Множество действий попросту занимают больше времени по причине путешествия мыши по меню-подменю-под(N)меню, в то время как шорткат можно выполнить никак не взаимодействуя с UI, т.е. не бегая глазами по экрану.
ну, если есть привычка и желание на шорткаты — мышка слева этому не мешает. Зато вся остальная часть — удобно, без переносов рук.
Я, к примеру, шорткаты не люблю, потому что работать приходится в разных средах, задолбаешься все упоминать.
Спасибо за совет! Взял на заметку
НЛО прилетело и опубликовало эту надпись здесь

Трекбол — лучше. Жаль, что на клавиатурах практически не встречается.

недавно открыл для себя сочетание клавиш в продуктах JetBrains, которое использую чаще остальных в проектах с большим кол-вом кода. Судя по общению с коллегами, не все его знают.
ctrl+alt+left
Когда вы, читая код, проваливаетесь внутрь через ctrl+click, сочетание «ctrl+alt+left» позволяет вернуться на один уровень вверх именно на то место, в котором нажали ctrl+click. Если закопались далеко вглубь, то жмите сочетание несколько раз пока не вернетесь туда откуда начали проваливаться.

ctrl+alt+right ещё
Это ж переход назад-вперёд)

Спасибо :) почему-то даже в голову не приходило поискать подобное сочетание

Для сред JetBrains есть полезные дополнения, которые сами подскажут горячие клавиши для того или иного действия.


https://plugins.jetbrains.com/plugin/7345-presentation-assistant


https://plugins.jetbrains.com/plugin/9792-key-promoter-x

У меня CMD+[ и CMD+] на маке.
Есть вероятность, что на других системах сработает CTRL+[ и CTRL+]

Я для этого использую дополнительную кнопку мыши. Еще удобнее. Ту, которая сбоку сзади.



P.S. Ту, что спереди можно использовать, чтобы опять перейти на ту позицию, откуда только что вернулись.

А что, обязательно решать за читателя, кидать в закладки или нет? зачем в тексте прямо советовать делать так и так?
по-существу, вместо vimium можно Tridactyl или вовсе qutebrowser
в вимиуме убило: Ищем везде через o.
в видео — tutor из vim'а. вместо прыжка на одно слово в конец и обратно в начало слова можно просто нажать w в виме, или вовсе — 2w если надо прыгнуть через слово. допиливание AHK в итоге приведет к настоящему vim'у. там же — отрывание рук от клавиатуры для позиционирования мышкой. там же: прыжок в конец строки, выделение от конца строки до нужного слова, удаление, а в виме от нужного слова: d$ или c$
ну и как там с переносимостью?

прошу прощения, у меня вим головного мозга. вдохновлялся www.reddit.com/r/unixporn/comments/jtjol5/cinnamon_latex_workflow_in_vim

а, еще в винде может пригодиться: win + влево + влево + вверх, чтобы окно ушло на 1/4 влево вверх. узнал об этом случайно, методом тыка)
А что, обязательно решать за читателя, кидать в закладки или нет?

Это было добавлено редактором, так как это моя первая статья на хабре, я решил не спорить со старшими товарищами и оставить как есть.

по-существу, вместо 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-а и пользоваться только моим скриптом. Мне очень хотелось бы, чтобы кто-то дополнил мои идеи и предложил лучшее решение, которое помогло бы всем.
Win+Shift+{1, 2, 3, ...} — открыть n-ное окно от имени администратора.
Нет. Это открыть новое окно.
Спасибо, поправлю!
Спасибо за наводку, что Caps можно использовать в качестве модификатора. Порывшись в интернете я обнаружил, что необязательно отключать режим Caps lock совсем, а можно перевести его на двойной щелчок по клавише Caps Lock при помощи следующего скрипта:

;================================================================================================
; CapsLock processing. Must double tap CapsLock to toggle CapsLock mode on or off.
;================================================================================================
; Must double tap CapsLock to toggle CapsLock mode on or off.
CapsLock::
KeyWait, CapsLock ; Wait forever until Capslock is released.
KeyWait, CapsLock, D T0.2 ; ErrorLevel = 1 if CapsLock not down within 0.2 seconds.
if ((ErrorLevel = 0) && (A_PriorKey = "CapsLock") ) ; Is a double tap on CapsLock?
{
SetCapsLockState, % GetKeyState("CapsLock","T") ? "Off" : "On" ; Toggle the state of CapsLock LED
}
return
Вот, может, еще кому пригодятся полезные фичи, которые можно делать при помощи AutoHotKey:

Ctrl-Alt-Shift-<пробел> переводит текущее окно в режим «always on top»

Ctrl-Alt-Shift-<клик мыши> и Alt-Shift-<клик мыши> тройной и двойной клики мышки соответственно (это чтобы указательный палец правой руки меньше уставал):

^!+SPACE:: Winset, Alwaysontop, , A ; ctrl-alt-shift-Space to make current window always on top

^!+LButton:: ;ctrl-alt-shift-Leftclick to tripple click
Send {Click}
Send {Click}
Send {Click}
Return

!+LButton:: ;alt-shift-Leftclick to double click
Send {Click}
Send {Click}
Return
Ооо, это точно решит боль случайных нажатий без полного отключения капса. Спасибо!!!
Вот жеж… Читаю статью вашу и думаю: «Да что же ты творишь со мной, kotano, у меня на CapsLock повешено везде (Win,*nix) переключение раскладки, как же мне теперь жить? И тут в комментах появляются justified и zila и как профессиональные психологи снимают мою боль и печаль ))))) Спасибо вам, ребята!!! Я как раз хотел нечто подобное на писать (в основном на AutoIT автоматизирую под винду), а тут вы почти готовый продукт подвезли :)

Позвольте несколько вопросов.

1. У меня часто бывает необходимость выполнить последовательно комбинации Crtl+F,Ctrl+V,Enter и хочется такую последовательность повесить на, не поверите, Ctrl+F. Может ли AHK с таким справиться?

2. Может ли AHK работать с мышкой и умеет ли искать окна и его контроллы? У меня есть несколько программ, которые на работе используются, у которых нет возможности задать хоткеи, а только мышкой кнопки тыкать. На AutoIT можно найти нужное окно, в нем нужный контрол, определить его координаты, переместить на него мышку, тыкнуть этот контрол, вернуть мышку в исходную позицию. Такое на AHK можно сделать?

3. Может ли AHK определить какое окно активно (в фокусе) и исходя из этого менять поведение хоткеев? Например, если активен excel, то Caps+w очистит все ячейки влево от текущей (Ctrl+Shift+Left,Delete), а если активен Word, то удалит слово слева (Ctrl+Backspace).
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).

Думаю, эта функция это то, что вам нужно)

К сожалению, у меня нет серьезных навыков программирования на AutoHotkey, я использую его только для одной цели, но, надеюсь я сумел вам помочь)
Большое спасибо!
Вопросы задал, чтобы понять, смогу ли я быстро реализовать часть нужного мне функционала, чтобы вот прям сегодня за часок сделать и работать дальше. На AutoIT прилично времени уйдет, все же это почти целая программа.

Вообще я не рекомендую биндить на такое распространенное сочетание.
Это был чисто теоретический интерес ;)

Также обязательно посмотрите на творения народных умельцев.
Ого… Я всегда думал, что AHK — это просто хоткей-менеджер… Оказывается это целый язык программирования (грубо говоря). Посмотрел так же документацию, удивлен количеством функций и возможностями.

надеюсь я сумел вам помочь)
Да, сумели, за что большое спасибо! Сегодня вечером смогу реализовать часть своих хотелок для удобства работы и отказаться от Comfort Keys, который на данный момент использую.
У меня один из скриптов сделан исключительно для работы в программе Premiere Pro. Он начинается следующим текстом:

#if WinActive("ahk_class Premiere Pro")

Видимо, это то, что вам нужно. Я, не программист, но часто можно найти куски скриптов в разных местах интерната с тем, чтобы из них сделать что-то для себя. Вообще, AHK сильно выручает там, где нет возможности указать горячие клавиши в приложении напрямую. Ну или повесить на клавиши часто повторяющиеся действия. Вот, например, F4 заменяет клик мыши, «выделить всё» и «вставить».

F4:: ; F4 to replace all
SetKeyDelay, 100, 100
MouseClick
Send ^a^v
Return

Да, это то что нужно. Спасибо!
А на ctrl+Capslock перевести не проще?

Способ, которым Vim назначает биндинги в <N>, за исключением hjkl и некоторых других команд, является фонетическим (как вариант, мнемоническим), а не семантическим. [C]hange [w]ord и т.д. Семантический способ как раз у вас: вы назначаете той же C семантику "копирования", единообразно с Ctrl+C, и так далее.


Очень правильная идея в основе (перегруппировка клавиш операций по удобству/лёгкости доступа, а не по названию операции), но реализация делает слишком много допущений о приложении, например что ^backspace удаляет слово. По факту всё заточено под 1 редактор.


PS: на иллюстрации с раскладкой 2 раза PgUp и нет PgDn, видимо опечатка? И что-то странное с действиями на hjkl, не консистентно с вимом, хотя мб так и предполагалось. В тч движение влево на J = самое редкое из 4 базовых движений на самой ценной клавише на клавиатуре наряду с пробелом.

> Способ, которым Vim назначает биндинги в , за исключением hjkl и некоторых других команд, является фонетическим (как вариант, мнемоническим), а не семантическим. [C]hange [w]ord и т.д. Семантический способ как раз у вас: вы назначаете той же C семантику «копирования», единообразно с Ctrl+C, и так далее.
на иллюстрации с раскладкой 2 раза PgUp и нет PgDn, видимо опечатка?

Согласен. Подправлю)

> Очень правильная идея в основе (перегруппировка клавиш операций по удобству/лёгкости доступа, а не по названию операции), но реализация делает слишком много допущений о приложении, например что ^backspace удаляет слово.

Исходный код проекта открыт, вы всегда можете изменить скрипт под свои предпочтения. Также, вы можете предложить свою реализацию сочетаний клавиш, и я могу добавить этот вариант как альтернативный в репозитории проекта.

> По факту всё заточено под 1 редактор.

Не вполне понимаю, почему вы так решили. Я применяю скрипт везде, где можно писать текст, и даже сейчас, в поле, в котором пишу этот комментарий.

> И что-то странное с действиями на hjkl, не консистентно с вимом, хотя мб так и предполагалось. В тч движение влево на J = самое редкое из 4 базовых движений на самой ценной клавише на клавиатуре наряду с пробелом.

Да, базовые движения повторяют расположение привычных всем стрелочек, и не подразумевают консистентность с Вимом. По поводу движения влево мне сложно согласиться, но возможно я просто слишком привязался к своему скрипту. Я предлагаю вам попробовать хотя-бы ненадолго воспользоваться скриптом и описать свои ощущения. Если вы решите, что есть более удачное расположение клавиш, то всегда буду рад вашим предложениям здесь или на странице репозитория.

В виме, как вы сказали, мнемоническйи принцип расположения некоторых клавиш, из-за которого, например, клавиша i отдана под режим insert. В capsKeys за «переключение режимов» отвественна клавиша CapsLock и поэтому мы можем найти более удобное применение освободившимся клавишам на буквенном ряду.
Еще один аргумент против фонетического/мнемонического принципа — различные раскладки клавиатур. Если пользователь использует нестандартную раскладку, то расположение некоторых клавиш может вызывать сильный дискомфорт и даже если оставить сочетания вима на тех же местах, то вся польза мнемоники будет сведена на нет (например, клавиша C в раскладке Дворака не будет ассоциироваться с режимом insert).

Хотел бы дополнить статью сочетанием ctrl+left(right). Обычное движение по словам, но поддерживается везде и прямо из коробки.
Вим это круто, но требует доп настроек, привыкания и полного изменения workflow.

Точно, я забыл упомянуть про эти сочетания, так как оно реализовано через Caps+Alt(Space) в AHK скрипте. Спасибо!


Вим это круто, но требует доп настроек, привыкания и полного изменения workflow.

Согласен, именно поэтому я предложил использовать capsKeys, который переносит часть опыта использования Vim на всю систему, и при этом почти безболезненно (осторожно, вызывает сильнейшее привыкание и абсолютную беспомощность при отказе).

претендовать на кунг-фу и не вспомнить про Ctrl+R в bash — не серьезно.
Пробую освоить слепую печать, но мне не понравилось, что много кликов приходиться на мизинец, а на большой палец только пробел. И в AutoHotkey настроил клавиши перемещения на SPACE + EDSF и Backspace на SPACE + J.

Не возникает ли у вас проблем из-за того, что у Space есть конкретная функция вставки пробела и его сложно использовать в качестве клавиши-модификатора?

Если Space зажат, то да он не сможет печатать пробелы при удержании. Я думал добавить пробел еще на другую комбинацию, например, SPACE+K и использовать если надо несколько вставок подряд.

Скрипт не мой.

#MaxHotkeysPerInterval 200
ModActivateDelay := 100

*Space::
If SpacePressed ; AutoRepeat defense
Return
SpacePressed:=true
SetTimer ModActivate, % "-" ModActivateDelay
Return
*Space Up::
SpacePressed:=false
SetTimer ModActivate, Off
If ((A_PriorKey = "Space") OR !ModActive)
Send {Blind}{Space}
ModActive := false
Return
ModActivate:
ModActive := true
Return

#If (GetKeyState("Space", "P") && ModActive)
Left::WinMinimize A
Up::WinMaximize A
*vk45::SendRemap() ; e
*vk44::SendRemap() ; d
*vk53::SendRemap() ; s
*vk46::SendRemap() ; f
*vk4A::SendRemap() ; j
#If

SendRemap() {
Static SendRemapArr:={e: "{Up}", d: "{Down}", s: "{Left}", f: "{Right}", j: "{Backspace}"}
Send % "{Blind}" SendRemapArr[GetKeyName(SubStr(A_ThisHotkey, 2))]
}

Спасибо за статью!
В копилку:


VS Code: Ctrl + Shift + Enter — перемещает текущую строку вниз, а курсор ставит в начало новой чистой строки.

Спасибо! Я использовал это сочетание в видео, но забыл упомянуть в тексте)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации